⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fdtd_3d_pml.cpp

📁 采用UMPL边界的FDTD编程
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	Allocate_FGE_z->size[36][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_FGE_z->size[36][2] = nPML_z_2;
	
	//Fz_25 
	Allocate_FGE_z->size[37][0] = nPML_x_1; 
	Allocate_FGE_z->size[37][1] = nPML_y_2; 
	Allocate_FGE_z->size[37][2] = nPML_z_2;
	
	//Gz_25 
	Allocate_FGE_z->size[38][0] = nPML_x_1;
	Allocate_FGE_z->size[38][1] = nPML_y_2;
	Allocate_FGE_z->size[38][2] = nPML_z_2;
	
	//Fz_26
	Allocate_FGE_z->size[39][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_FGE_z->size[39][1] = nPML_y_2;
	Allocate_FGE_z->size[39][2] = nPML_z_2;
	
	//Fz_27
	Allocate_FGE_z->size[40][0] = nPML_x_2;
	Allocate_FGE_z->size[40][1] = nPML_y_2; 
	Allocate_FGE_z->size[40][2] = nPML_z_2;
	
	//Gz_27
	Allocate_FGE_z->size[41][0] = nPML_x_2; 
	Allocate_FGE_z->size[41][1] = nPML_y_2; 
	Allocate_FGE_z->size[41][2] = nPML_z_2;
	
	//Ez 
	Allocate_FGE_z->size[42][0] = nx; 
	Allocate_FGE_z->size[42][1] = ny; 
	Allocate_FGE_z->size[42][2] = nz - 1;

	//PML vectors
	Allocate_FGE_z->B_PML[0]  = &K_Gz_a_1;
	Allocate_FGE_z->B_PML[1]  = &K_Gz_b_1; 
	Allocate_FGE_z->B_PML[2]  = &K_Ez_a_1;
	Allocate_FGE_z->B_PML[3]  = &K_Ez_b_1;
	Allocate_FGE_z->B_PML[4]  = &K_Ez_c_1;
	Allocate_FGE_z->B_PML[5]  = &K_Ez_d_1; 
	Allocate_FGE_z->B_PML[6]  = &K_Gz_a_2; 
	Allocate_FGE_z->B_PML[7]  = &K_Gz_b_2;
	Allocate_FGE_z->B_PML[8]  = &K_Ez_a_2; 
	Allocate_FGE_z->B_PML[9]  = &K_Ez_b_2; 
	Allocate_FGE_z->B_PML[10] = &K_Ez_c_2; 
	Allocate_FGE_z->B_PML[11] = &K_Ez_d_2; 

	//PML vector sizes
	//K_Gz_a_1
	Allocate_FGE_z->size_B[0]  = nPML_x_1;
	//K_Gz_b_1 
	Allocate_FGE_z->size_B[1]  = nPML_x_1; 
	//K_Ez_a_1 
	Allocate_FGE_z->size_B[2]  = nPML_y_1; 
	//K_Ez_b_1 
	Allocate_FGE_z->size_B[3]  = nPML_y_1; 
	//K_Ez_c_1 
	Allocate_FGE_z->size_B[4]  = nPML_z_1; 
	//K_Ez_d_1 
	Allocate_FGE_z->size_B[5]  = nPML_z_1; 
	//K_Gz_a_2 
	Allocate_FGE_z->size_B[6]  = nPML_x_2; 
	//K_Gz_b_2 
	Allocate_FGE_z->size_B[7]  = nPML_x_2; 
	//K_Ez_a_2 
	Allocate_FGE_z->size_B[8]  = nPML_y_2; 
	//K_Ez_b_2 
	Allocate_FGE_z->size_B[9]  = nPML_y_2; 
	//K_Ez_c_2 
	Allocate_FGE_z->size_B[10] = nPML_z_2; 
	//K_Ez_d_2 
	Allocate_FGE_z->size_B[11] = nPML_z_2; 

	//PML vector names
	strcpy(Allocate_FGE_z->name_B_PML[0],"K_Gz_a_1"); 
	strcpy(Allocate_FGE_z->name_B_PML[1],"K_Gz_b_1"); 
	strcpy(Allocate_FGE_z->name_B_PML[2],"K_Ez_a_1");
	strcpy(Allocate_FGE_z->name_B_PML[3],"K_Ez_b_1");
	strcpy(Allocate_FGE_z->name_B_PML[4],"K_Ez_c_1");
	strcpy(Allocate_FGE_z->name_B_PML[5],"K_Ez_d_1"); 
	strcpy(Allocate_FGE_z->name_B_PML[6],"K_Gz_a_2"); 
	strcpy(Allocate_FGE_z->name_B_PML[7],"K_Gz_b_2");
	strcpy(Allocate_FGE_z->name_B_PML[8],"K_Ez_a_2"); 
	strcpy(Allocate_FGE_z->name_B_PML[9],"K_Ez_b_2"); 
	strcpy(Allocate_FGE_z->name_B_PML[10],"K_Ez_c_2"); 
	strcpy(Allocate_FGE_z->name_B_PML[11],"K_Ez_d_2"); 
}

////////////////////////////////////////////////////////////////////
//Collect the information - Hx field
////////////////////////////////////////////////////////////////////
void CFDTD_3D_PML::Init_Alloc_BxHx()
{
	long nx_MIN_nPML_x_1_MIN_nPML_x_2 = nx - nPML_x_1 - nPML_x_2;
	long ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2 = ny - 1 - nPML_y_1 - nPML_y_2;
	long nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2 = nz - 1 - nPML_z_1 - nPML_z_2;

	Allocate_BH_x->A[0]  = &Bx_1;  Allocate_BH_x->A[1]  = &Bx_2;  Allocate_BH_x->A[2]  = &Bx_3;  
	Allocate_BH_x->A[3]  = &Bx_4;  Allocate_BH_x->A[4]  = &Bx_6;  Allocate_BH_x->A[5]  = &Bx_7;  
	Allocate_BH_x->A[6]  = &Bx_8;  Allocate_BH_x->A[7]  = &Bx_9;  Allocate_BH_x->A[8]  = &Bx_10; 
	Allocate_BH_x->A[9]  = &Bx_12; Allocate_BH_x->A[10] = &Bx_13; Allocate_BH_x->A[11] = &Bx_15;
	Allocate_BH_x->A[12] = &Bx_16; Allocate_BH_x->A[13] = &Bx_18; Allocate_BH_x->A[14] = &Bx_19; 
	Allocate_BH_x->A[15] = &Bx_20; Allocate_BH_x->A[16] = &Bx_21; Allocate_BH_x->A[17] = &Bx_22; 
	Allocate_BH_x->A[18] = &Bx_24; Allocate_BH_x->A[19] = &Bx_25; Allocate_BH_x->A[20] = &Bx_26;
	Allocate_BH_x->A[21] = &Bx_27; Allocate_BH_x->A[22] = &Hx; 
	
	Allocate_BH_x->er = 0;

	strcpy(&Allocate_BH_x->name[0][0],"Bx_1");   strcpy(&Allocate_BH_x->name[1][0],"Bx_2");  
	strcpy(&Allocate_BH_x->name[2][0],"Bx_3");   strcpy(&Allocate_BH_x->name[3][0],"Bx_4");  
	strcpy(&Allocate_BH_x->name[4][0],"Bx_6");   strcpy(&Allocate_BH_x->name[5][0],"Bx_7");  
	strcpy(&Allocate_BH_x->name[6][0],"Bx_8");   strcpy(&Allocate_BH_x->name[7][0],"Bx_9");  
	strcpy(&Allocate_BH_x->name[8][0],"Bx_10");  strcpy(&Allocate_BH_x->name[9][0],"Bx_12");
	strcpy(&Allocate_BH_x->name[10][0],"Bx_13"); strcpy(&Allocate_BH_x->name[11][0],"Bx_15");
	strcpy(&Allocate_BH_x->name[12][0],"Bx_16"); strcpy(&Allocate_BH_x->name[13][0],"Bx_18");
	strcpy(&Allocate_BH_x->name[14][0],"Bx_19"); strcpy(&Allocate_BH_x->name[15][0],"Bx_20"); 
	strcpy(&Allocate_BH_x->name[16][0],"Bx_21"); strcpy(&Allocate_BH_x->name[17][0],"Bx_22"); 
	strcpy(&Allocate_BH_x->name[18][0],"Bx_24"); strcpy(&Allocate_BH_x->name[19][0],"Bx_25");
	strcpy(&Allocate_BH_x->name[20][0],"Bx_26"); strcpy(&Allocate_BH_x->name[21][0],"Bx_27"); 
	strcpy(&Allocate_BH_x->name[22][0],"Hx"); 

	//Bx_1 
	Allocate_BH_x->size[0][0] = nPML_x_1; 
	Allocate_BH_x->size[0][1] = nPML_y_1; 
	Allocate_BH_x->size[0][2] = nPML_z_1;
	
	//Bx_2 
	Allocate_BH_x->size[1][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_BH_x->size[1][1] = nPML_y_1;
	Allocate_BH_x->size[1][2] = nPML_z_1;
	
	//Bx_3 
	Allocate_BH_x->size[2][0] = nPML_x_2; 
	Allocate_BH_x->size[2][1] = nPML_y_1; 
	Allocate_BH_x->size[2][2] = nPML_z_1;
	
	//Bx_4 
	Allocate_BH_x->size[3][0] = nPML_x_1; 
	Allocate_BH_x->size[3][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_BH_x->size[3][2] = nPML_z_1;
	
	//Bx_6 
	Allocate_BH_x->size[4][0] = nPML_x_2; 
	Allocate_BH_x->size[4][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_BH_x->size[4][2] = nPML_z_1;
	
	//Bx_7 
	Allocate_BH_x->size[5][0] = nPML_x_1; 
	Allocate_BH_x->size[5][1] = nPML_y_2; 
	Allocate_BH_x->size[5][2] = nPML_z_1;
	
	//Bx_8 
	Allocate_BH_x->size[6][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_BH_x->size[6][1] = nPML_y_2; 
	Allocate_BH_x->size[6][2] = nPML_z_1;
	
	//Bx_9 
	Allocate_BH_x->size[7][0] = nPML_x_2; 
	Allocate_BH_x->size[7][1] = nPML_y_2; 
	Allocate_BH_x->size[7][2] = nPML_z_1;
	
	//Bx_10 
	Allocate_BH_x->size[8][0] = nPML_x_1; 
	Allocate_BH_x->size[8][1] = nPML_y_1; 
	Allocate_BH_x->size[8][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Bx_12
	Allocate_BH_x->size[9][0] = nPML_x_2; 
	Allocate_BH_x->size[9][1] = nPML_y_1; 
	Allocate_BH_x->size[9][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Bx_13 
	Allocate_BH_x->size[10][0] = nPML_x_1;
	Allocate_BH_x->size[10][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_BH_x->size[10][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Bx_15 
	Allocate_BH_x->size[11][0] = nPML_x_2; 
	Allocate_BH_x->size[11][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_BH_x->size[11][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Bx_16 
	Allocate_BH_x->size[12][0] = nPML_x_1; 
	Allocate_BH_x->size[12][1] = nPML_y_2; 
	Allocate_BH_x->size[12][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Bx_18 
	Allocate_BH_x->size[13][0] = nPML_x_2; 
	Allocate_BH_x->size[13][1] = nPML_y_2; 
	Allocate_BH_x->size[13][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Bx_19 
	Allocate_BH_x->size[14][0] = nPML_x_1;
	Allocate_BH_x->size[14][1] = nPML_y_1; 
	Allocate_BH_x->size[14][2] = nPML_z_2;
	
	//Bx_20 
	Allocate_BH_x->size[15][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_BH_x->size[15][1] = nPML_y_1; 
	Allocate_BH_x->size[15][2] = nPML_z_2;
	
	//Bx_21 
	Allocate_BH_x->size[16][0] = nPML_x_2;
	Allocate_BH_x->size[16][1] = nPML_y_1; 
	Allocate_BH_x->size[16][2] = nPML_z_2;
	
	//Bx_22
	Allocate_BH_x->size[17][0] = nPML_x_1;
	Allocate_BH_x->size[17][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_BH_x->size[17][2] = nPML_z_2;
	
	//Bx_24 
	Allocate_BH_x->size[18][0] = nPML_x_2; 
	Allocate_BH_x->size[18][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_BH_x->size[18][2] = nPML_z_2;
	
	//Bx_25 
	Allocate_BH_x->size[19][0] = nPML_x_1;
	Allocate_BH_x->size[19][1] = nPML_y_2; 
	Allocate_BH_x->size[19][2] = nPML_z_2;
	
	//Bx_26
	Allocate_BH_x->size[20][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_BH_x->size[20][1] = nPML_y_2; 
	Allocate_BH_x->size[20][2] = nPML_z_2;
	
	//Bx_27 
	Allocate_BH_x->size[21][0] = nPML_x_2; 
	Allocate_BH_x->size[21][1] = nPML_y_2; 
	Allocate_BH_x->size[21][2] = nPML_z_2;
	
	//Hx 
	Allocate_BH_x->size[22][0] = nx; 
	Allocate_BH_x->size[22][1] = ny - 1; 
	Allocate_BH_x->size[22][2] = nz - 1;

	//PML vectors
	Allocate_BH_x->B_PML[0]  = &K_Bx_a_1;
	Allocate_BH_x->B_PML[1]  = &K_Bx_b_1; 
	Allocate_BH_x->B_PML[2]  = &K_Hx_a_1; 
	Allocate_BH_x->B_PML[3]  = &K_Hx_b_1;
	Allocate_BH_x->B_PML[4]  = &K_Hx_c_1; 
	Allocate_BH_x->B_PML[5]  = &K_Hx_d_1;
	Allocate_BH_x->B_PML[6]  = &K_Bx_a_2; 
	Allocate_BH_x->B_PML[7]  = &K_Bx_b_2; 
	Allocate_BH_x->B_PML[8]  = &K_Hx_a_2; 
	Allocate_BH_x->B_PML[9]  = &K_Hx_b_2;
	Allocate_BH_x->B_PML[10] = &K_Hx_c_2;
	Allocate_BH_x->B_PML[11] = &K_Hx_d_2;

	//PML vector sizes
	//K_Bx_a_1
	Allocate_BH_x->size_B[0]  = nPML_y_1; 
	//K_Bx_b_1 
	Allocate_BH_x->size_B[1]  = nPML_y_1; 
	//K_Hx_a_1 
	Allocate_BH_x->size_B[2]  = nPML_z_1; 
	//K_Hx_b_1
	Allocate_BH_x->size_B[3]  = nPML_z_1; 
	//K_Hx_c_1 
	Allocate_BH_x->size_B[4]  = nPML_x_1; 
	//K_Hx_d_1
	Allocate_BH_x->size_B[5]  = nPML_x_1; 
	//K_Bx_a_2 
	Allocate_BH_x->size_B[6]  = nPML_y_2; 
	//K_Bx_b_2  
	Allocate_BH_x->size_B[7]  = nPML_y_2; 
	//K_Hx_a_2 
	Allocate_BH_x->size_B[8]  = nPML_z_2; 
	//K_Hx_b_2 
	Allocate_BH_x->size_B[9]  = nPML_z_2; 
	//K_Hx_c_2
	Allocate_BH_x->size_B[10] = nPML_x_2; 
	//K_Hx_d_2
	Allocate_BH_x->size_B[11] = nPML_x_2; 

	//PML vector names
	strcpy(Allocate_BH_x->name_B_PML[0],"K_Bx_a_1");
	strcpy(Allocate_BH_x->name_B_PML[1],"K_Bx_b_1"); 
	strcpy(Allocate_BH_x->name_B_PML[2],"K_Hx_a_1"); 
	strcpy(Allocate_BH_x->name_B_PML[3],"K_Hx_b_1");
	strcpy(Allocate_BH_x->name_B_PML[4],"K_Hx_c_1"); 
	strcpy(Allocate_BH_x->name_B_PML[5],"K_Hx_d_1");
	strcpy(Allocate_BH_x->name_B_PML[6],"K_Bx_a_2"); 
	strcpy(Allocate_BH_x->name_B_PML[7],"K_Bx_b_2"); 
	strcpy(Allocate_BH_x->name_B_PML[8],"K_Hx_a_2"); 
	strcpy(Allocate_BH_x->name_B_PML[9],"K_Hx_b_2");
	strcpy(Allocate_BH_x->name_B_PML[10],"K_Hx_c_2");
	strcpy(Allocate_BH_x->name_B_PML[11],"K_Hx_d_2");
	
}

////////////////////////////////////////////////////////////////////
//Collect the information - Hy field
////////////////////////////////////////////////////////////////////
void CFDTD_3D_PML::Init_Alloc_ByHy()
{
	long nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2 = nx - 1 - nPML_x_1 - nPML_x_2;
	long ny_MIN_nPML_y_1_MIN_nPML_y_2 = ny - nPML_y_1 - nPML_y_2;
	long nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2 = nz - 1 - nPML_z_1 - nPML_z_2;

	Allocate_BH_y->A[0]  = &By_1;  Allocate_BH_y->A[1]  = &By_2;  Allocate_BH_y->A[2]  = &By_3;  
	Allocate_BH_y->A[3]  = &By_4;  Allocate_BH_y->A[4]  = &By_6;  Allocate_BH_y->A[5]  = &By_7;  
	Allocate_BH_y->A[6]  = &By_8;  Allocate_BH_y->A[7]  = &By_9;  Allocate_BH_y->A[8]  = &By_10; 
	Allocate_BH_y->A[9]  = &By_11; Allocate_BH_y->A[10] = &By_12; Allocate_BH_y->A[11] = &By_16; 
	Allocate_BH_y->A[12] = &By_17; Allocate_BH_y->A[13] = &By_18; Allocate_BH_y->A[14] = &By_19; 
	Allocate_BH_y->A[15] = &By_20; Allocate_BH_y->A[16] = &By_21; Allocate_BH_y->A[17] = &By_22; 
	Allocate_BH_y->A[18] = &By_24; Allocate_BH_y->A[19] = &By_25; Allocate_BH_y->A[20] = &By_26; 
	Allocate_BH_y->A[21] = &By_27; Allocate_BH_y->A[22] = &Hy; 
	
	Allocate_BH_y->er = 0;

	strcpy(&Allocate_BH_y->name[0][0],"By_1");   strcpy(&Allocate_BH_y->name[1][0],"By_2");  
	strcpy(&Allocate_BH_y->name[2][0],"By_3");   strcpy(&Allocate_BH_y->name[3][0],"By_4");  
	strcpy(&Allocate_BH_y->name[4][0],"By_6");   strcpy(&Allocate_BH_y->name[5][0],"By_7");  
	strcpy(&Allocate_BH_y->name[6][0],"By_8");   strcpy(&Allocate_BH_y->name[7][0],"By_9"); 
	strcpy(&Allocate_BH_y->name[8][0],"By_10");  strcpy(&Allocate_BH_y->name[9][0],"By_11"); 
	strcpy(&Allocate_BH_y->name[10][0],"By_12"); strcpy(&Allocate_BH_y->name[11][0],"By_16"); 
	strcpy(&Allocate_BH_y->name[12][0],"By_17"); strcpy(&Allocate_BH_y->name[13][0],"By_18");
	strcpy(&Allocate_BH_y->name[14][0],"By_19"); strcpy(&Allocate_BH_y->name[15][0],"By_20"); 
	strcpy(&Allocate_BH_y->name[16][0],"By_21"); strcpy(&Allocate_BH_y->name[17][0],"By_22"); 
	strcpy(&Allocate_BH_y->name[18][0],"By_24"); strcpy(&Allocate_BH_y->name[19][0],"By_25");
	strcpy(&Allocate_BH_y->name[20][0],"By_26"); strcpy(&Allocate_BH_y->name[21][0],"By_27");
	strcpy(&Allocate_BH_y->name[22][0],"Hy"); 
	
	//By_1 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -