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

📄 fdtd_3d_pml.cpp

📁 采用UMPL边界的FDTD编程
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	Allocate_FGE_y->size[33][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_y->size[33][2] = nPML_z_2;
	//Fy_24
	Allocate_FGE_y->size[34][0] = nPML_x_2;
	Allocate_FGE_y->size[34][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_y->size[34][2] = nPML_z_2;
	//Gy_24
	Allocate_FGE_y->size[35][0] = nPML_x_2;
	Allocate_FGE_y->size[35][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_y->size[35][2] = nPML_z_2;
	//Fy_25
	Allocate_FGE_y->size[36][0] = nPML_x_1;
	Allocate_FGE_y->size[36][1] = nPML_y_2;
	Allocate_FGE_y->size[36][2] = nPML_z_2;
	//Gy_25
	Allocate_FGE_y->size[37][0] = nPML_x_1;
	Allocate_FGE_y->size[37][1] = nPML_y_2;
	Allocate_FGE_y->size[37][2] = nPML_z_2;
	//Fy_26
	Allocate_FGE_y->size[38][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_FGE_y->size[38][1] = nPML_y_2;
	Allocate_FGE_y->size[38][2] = nPML_z_2;
	//Gy_26
	Allocate_FGE_y->size[39][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_FGE_y->size[39][1] = nPML_y_2;
	Allocate_FGE_y->size[39][2] = nPML_z_2;
	//Fy_27
	Allocate_FGE_y->size[40][0] = nPML_x_2;
	Allocate_FGE_y->size[40][1] = nPML_y_2;
	Allocate_FGE_y->size[40][2] = nPML_z_2;
	//Gy_27
	Allocate_FGE_y->size[41][0] = nPML_x_2;
	Allocate_FGE_y->size[41][1] = nPML_y_2;
	Allocate_FGE_y->size[41][2] = nPML_z_2;
	//Ey
	Allocate_FGE_y->size[42][0] = nx;
	Allocate_FGE_y->size[42][1] = ny - 1;
	Allocate_FGE_y->size[42][2] = nz;

	//PML vectors
	Allocate_FGE_y->B_PML[0]  = &K_Gy_a_1;
	Allocate_FGE_y->B_PML[1]  = &K_Gy_b_1;
	Allocate_FGE_y->B_PML[2]  = &K_Ey_a_1;
	Allocate_FGE_y->B_PML[3]  = &K_Ey_b_1;
	Allocate_FGE_y->B_PML[4]  = &K_Ey_c_1;
	Allocate_FGE_y->B_PML[5]  = &K_Ey_d_1;
	Allocate_FGE_y->B_PML[6]  = &K_Gy_a_2;
	Allocate_FGE_y->B_PML[7]  = &K_Gy_b_2;
	Allocate_FGE_y->B_PML[8]  = &K_Ey_a_2;
	Allocate_FGE_y->B_PML[9]  = &K_Ey_b_2;
	Allocate_FGE_y->B_PML[10] = &K_Ey_c_2; 
	Allocate_FGE_y->B_PML[11] = &K_Ey_d_2;

	//PML vector sizes
	//K_Gy_a_1
	Allocate_FGE_y->size_B[0]  = nPML_z_1; 
	//K_Gy_b_1
	Allocate_FGE_y->size_B[1]  = nPML_z_1; 
	//K_Ey_a_1
	Allocate_FGE_y->size_B[2]  = nPML_x_1; 
	//K_Ey_b_1
	Allocate_FGE_y->size_B[3]  = nPML_x_1; 
	//K_Ey_c_1
	Allocate_FGE_y->size_B[4]  = nPML_y_1; 
	//K_Ey_d_1
	Allocate_FGE_y->size_B[5]  = nPML_y_1; 
	//K_Gy_a_2
	Allocate_FGE_y->size_B[6]  = nPML_z_2; 
	//K_Gy_b_2
	Allocate_FGE_y->size_B[7]  = nPML_z_2;
	//K_Ey_a_2
	Allocate_FGE_y->size_B[8]  = nPML_x_2; 
	//K_Ey_b_2
	Allocate_FGE_y->size_B[9]  = nPML_x_2; 
	//K_Ey_c_2
	Allocate_FGE_y->size_B[10] = nPML_y_2; 
	//K_Ey_d_2
	Allocate_FGE_y->size_B[11] = nPML_y_2; 

	//PML vector names
	strcpy(Allocate_FGE_y->name_B_PML[0],"K_Gy_a_1");
	strcpy(Allocate_FGE_y->name_B_PML[1],"K_Gy_b_1");
	strcpy(Allocate_FGE_y->name_B_PML[2],"K_Ey_a_1");
	strcpy(Allocate_FGE_y->name_B_PML[3],"K_Ey_b_1");
	strcpy(Allocate_FGE_y->name_B_PML[4],"K_Ey_c_1");
	strcpy(Allocate_FGE_y->name_B_PML[5],"K_Ey_d_1");
	strcpy(Allocate_FGE_y->name_B_PML[6],"K_Gy_a_2");
	strcpy(Allocate_FGE_y->name_B_PML[7],"K_Gy_b_2");
	strcpy(Allocate_FGE_y->name_B_PML[8],"K_Ey_a_2");
	strcpy(Allocate_FGE_y->name_B_PML[9],"K_Ey_b_2");
	strcpy(Allocate_FGE_y->name_B_PML[10],"K_Ey_c_2"); 
	strcpy(Allocate_FGE_y->name_B_PML[11],"K_Ey_d_2");
}

////////////////////////////////////////////////////////////////////
//Collect the information - Ez field
////////////////////////////////////////////////////////////////////
void CFDTD_3D_PML::Init_Alloc_FzGzEz()
{
	long nx_MIN_nPML_x_1_MIN_nPML_x_2 = nx - 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_FGE_z->A[0]  = &Fz_1;  Allocate_FGE_z->A[1]  = &Gz_1;  Allocate_FGE_z->A[2]  = &Fz_2; 
	Allocate_FGE_z->A[3]  = &Fz_3;  Allocate_FGE_z->A[4]  = &Gz_3;  Allocate_FGE_z->A[5]  = &Fz_4;  
	Allocate_FGE_z->A[6]  = &Gz_4;  Allocate_FGE_z->A[7]  = &Fz_5;  Allocate_FGE_z->A[8]  = &Fz_6;  
	Allocate_FGE_z->A[9]  = &Gz_6;  Allocate_FGE_z->A[10] = &Fz_7;  Allocate_FGE_z->A[11] = &Gz_7;  
	Allocate_FGE_z->A[12] = &Fz_8;  Allocate_FGE_z->A[13] = &Fz_9;  Allocate_FGE_z->A[14] = &Gz_9;  
	Allocate_FGE_z->A[15] = &Fz_10; Allocate_FGE_z->A[16] = &Gz_10; Allocate_FGE_z->A[17] = &Fz_11;
	Allocate_FGE_z->A[18] = &Fz_12; Allocate_FGE_z->A[19] = &Gz_12; Allocate_FGE_z->A[20] = &Fz_13;
	Allocate_FGE_z->A[21] = &Fz_15; Allocate_FGE_z->A[22] = &Fz_16; Allocate_FGE_z->A[23] = &Gz_16;
	Allocate_FGE_z->A[24] = &Fz_17; Allocate_FGE_z->A[25] = &Fz_18; Allocate_FGE_z->A[26] = &Gz_18;
	Allocate_FGE_z->A[27] = &Fz_19; Allocate_FGE_z->A[28] = &Gz_19; Allocate_FGE_z->A[29] = &Fz_20; 
	Allocate_FGE_z->A[30] = &Fz_21; Allocate_FGE_z->A[31] = &Gz_21; Allocate_FGE_z->A[32] = &Fz_22;
	Allocate_FGE_z->A[33] = &Gz_22; Allocate_FGE_z->A[34] = &Fz_23; Allocate_FGE_z->A[35] = &Fz_24; 
	Allocate_FGE_z->A[36] = &Gz_24; Allocate_FGE_z->A[37] = &Fz_25; Allocate_FGE_z->A[38] = &Gz_25; 
	Allocate_FGE_z->A[39] = &Fz_26; Allocate_FGE_z->A[40] = &Fz_27; Allocate_FGE_z->A[41] = &Gz_27; 
	Allocate_FGE_z->A[42] = &Ez; 
	
	Allocate_FGE_z->er = 0;

	strcpy(&Allocate_FGE_z->name[0][0],"Fz_1");   strcpy(&Allocate_FGE_z->name[1][0],"Gz_1"); 
	strcpy(&Allocate_FGE_z->name[2][0],"Fz_2");   strcpy(&Allocate_FGE_z->name[3][0],"Fz_3"); 
	strcpy(&Allocate_FGE_z->name[4][0],"Gz_3");   strcpy(&Allocate_FGE_z->name[5][0],"Fz_4");  
	strcpy(&Allocate_FGE_z->name[6][0],"Gz_4");   strcpy(&Allocate_FGE_z->name[7][0],"Fz_5"); 
	strcpy(&Allocate_FGE_z->name[8][0],"Fz_6");   strcpy(&Allocate_FGE_z->name[9][0],"Gz_6"); 
	strcpy(&Allocate_FGE_z->name[10][0],"Fz_7");  strcpy(&Allocate_FGE_z->name[11][0],"Gz_7");  
	strcpy(&Allocate_FGE_z->name[12][0],"Fz_8");  strcpy(&Allocate_FGE_z->name[13][0],"Fz_9");  
	strcpy(&Allocate_FGE_z->name[14][0],"Gz_9");  strcpy(&Allocate_FGE_z->name[15][0],"Fz_10"); 
	strcpy(&Allocate_FGE_z->name[16][0],"Gz_10"); strcpy(&Allocate_FGE_z->name[17][0],"Fz_11");
	strcpy(&Allocate_FGE_z->name[18][0],"Fz_12"); strcpy(&Allocate_FGE_z->name[19][0],"Gz_12");
	strcpy(&Allocate_FGE_z->name[20][0],"Fz_13"); strcpy(&Allocate_FGE_z->name[21][0],"Fz_15"); 
	strcpy(&Allocate_FGE_z->name[22][0],"Fz_16"); strcpy(&Allocate_FGE_z->name[23][0],"Gz_16");
	strcpy(&Allocate_FGE_z->name[24][0],"Fz_17"); strcpy(&Allocate_FGE_z->name[25][0],"Fz_18");
	strcpy(&Allocate_FGE_z->name[26][0],"Gz_18"); strcpy(&Allocate_FGE_z->name[27][0],"Fz_19"); 
	strcpy(&Allocate_FGE_z->name[28][0],"Gz_19"); strcpy(&Allocate_FGE_z->name[29][0],"Fz_20"); 
	strcpy(&Allocate_FGE_z->name[30][0],"Fz_21"); strcpy(&Allocate_FGE_z->name[31][0],"Gz_21");
	strcpy(&Allocate_FGE_z->name[32][0],"Fz_22"); strcpy(&Allocate_FGE_z->name[33][0],"Gz_22"); 
	strcpy(&Allocate_FGE_z->name[34][0],"Fz_23"); strcpy(&Allocate_FGE_z->name[35][0],"Fz_24"); 
	strcpy(&Allocate_FGE_z->name[36][0],"Gz_24"); strcpy(&Allocate_FGE_z->name[37][0],"Fz_25"); 
	strcpy(&Allocate_FGE_z->name[38][0],"Gz_25"); strcpy(&Allocate_FGE_z->name[39][0],"Fz_26");
	strcpy(&Allocate_FGE_z->name[40][0],"Fz_27"); strcpy(&Allocate_FGE_z->name[41][0],"Gz_27"); 
	strcpy(&Allocate_FGE_z->name[42][0],"Ez"); 

	//Fz_1 
	Allocate_FGE_z->size[0][0] = nPML_x_1; 
	Allocate_FGE_z->size[0][1] = nPML_y_1; 
	Allocate_FGE_z->size[0][2] = nPML_z_1;
	
	//Gz_1 
	Allocate_FGE_z->size[1][0] = nPML_x_1;
	Allocate_FGE_z->size[1][1] = nPML_y_1; 
	Allocate_FGE_z->size[1][2] = nPML_z_1;
	
	//Fz_2 
	Allocate_FGE_z->size[2][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_FGE_z->size[2][1] = nPML_y_1;
	Allocate_FGE_z->size[2][2] = nPML_z_1;
	
	//Fz_3 
	Allocate_FGE_z->size[3][0] = nPML_x_2; 
	Allocate_FGE_z->size[3][1] = nPML_y_1;
	Allocate_FGE_z->size[3][2] = nPML_z_1;
	
	//Gz_3 
	Allocate_FGE_z->size[4][0] = nPML_x_2; 
	Allocate_FGE_z->size[4][1] = nPML_y_1; 
	Allocate_FGE_z->size[4][2] = nPML_z_1;
	
	//Fz_4 
	Allocate_FGE_z->size[5][0] = nPML_x_1; 
	Allocate_FGE_z->size[5][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_z->size[5][2] = nPML_z_1;
	
	//Gz_4 
	Allocate_FGE_z->size[6][0] = nPML_x_1; 
	Allocate_FGE_z->size[6][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_z->size[6][2] = nPML_z_1;
	
	//Fz_5 
	Allocate_FGE_z->size[7][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_FGE_z->size[7][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_FGE_z->size[7][2] = nPML_z_1;
	
	//Fz_6 
	Allocate_FGE_z->size[8][0] = nPML_x_2;
	Allocate_FGE_z->size[8][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_z->size[8][2] = nPML_z_1;
	
	//Gz_6 
	Allocate_FGE_z->size[9][0] = nPML_x_2; 
	Allocate_FGE_z->size[9][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_z->size[9][2] = nPML_z_1;
	
	//Fz_7 
	Allocate_FGE_z->size[10][0] = nPML_x_1; 
	Allocate_FGE_z->size[10][1] = nPML_y_2;
	Allocate_FGE_z->size[10][2] = nPML_z_1;
	
	//Gz_7 
	Allocate_FGE_z->size[11][0] = nPML_x_1;
	Allocate_FGE_z->size[11][1] = nPML_y_2; 
	Allocate_FGE_z->size[11][2] = nPML_z_1;
	
	//Fz_8 
	Allocate_FGE_z->size[12][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_FGE_z->size[12][1] = nPML_y_2; 
	Allocate_FGE_z->size[12][2] = nPML_z_1;
	
	//Fz_9
	Allocate_FGE_z->size[13][0] = nPML_x_2;
	Allocate_FGE_z->size[13][1] = nPML_y_2; 
	Allocate_FGE_z->size[13][2] = nPML_z_1;
	
	//Gz_9 
	Allocate_FGE_z->size[14][0] = nPML_x_2;
	Allocate_FGE_z->size[14][1] = nPML_y_2;
	Allocate_FGE_z->size[14][2] = nPML_z_1;
	
	//Fz_10 
	Allocate_FGE_z->size[15][0] = nPML_x_1;
	Allocate_FGE_z->size[15][1] = nPML_y_1; 
	Allocate_FGE_z->size[15][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Gz_10 
	Allocate_FGE_z->size[16][0] = nPML_x_1;
	Allocate_FGE_z->size[16][1] = nPML_y_1; 
	Allocate_FGE_z->size[16][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	 
	//Fz_11 
	Allocate_FGE_z->size[17][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_FGE_z->size[17][1] = nPML_y_1; 
	Allocate_FGE_z->size[17][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Fz_12 
	Allocate_FGE_z->size[18][0] = nPML_x_2;
	Allocate_FGE_z->size[18][1] = nPML_y_1; 
	Allocate_FGE_z->size[18][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Gz_12 
	Allocate_FGE_z->size[19][0] = nPML_x_2; 
	Allocate_FGE_z->size[19][1] = nPML_y_1; 
	Allocate_FGE_z->size[19][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Fz_13 
	Allocate_FGE_z->size[20][0] = nPML_x_1; 
	Allocate_FGE_z->size[20][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_z->size[20][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Fz_15 
	Allocate_FGE_z->size[21][0] = nPML_x_2; 
	Allocate_FGE_z->size[21][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_z->size[21][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Fz_16 
	Allocate_FGE_z->size[22][0] = nPML_x_1; 
	Allocate_FGE_z->size[22][1] = nPML_y_2;
	Allocate_FGE_z->size[22][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Gz_16 
	Allocate_FGE_z->size[23][0] = nPML_x_1;
	Allocate_FGE_z->size[23][1] = nPML_y_2; 
	Allocate_FGE_z->size[23][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Fz_17 
	Allocate_FGE_z->size[24][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_FGE_z->size[24][1] = nPML_y_2; 
	Allocate_FGE_z->size[24][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Fz_18 
	Allocate_FGE_z->size[25][0] = nPML_x_2; 
	Allocate_FGE_z->size[25][1] = nPML_y_2;
	Allocate_FGE_z->size[25][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Gz_18 
	Allocate_FGE_z->size[26][0] = nPML_x_2;
	Allocate_FGE_z->size[26][1] = nPML_y_2;
	Allocate_FGE_z->size[26][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Fz_19 
	Allocate_FGE_z->size[27][0] = nPML_x_1;
	Allocate_FGE_z->size[27][1] = nPML_y_1; 
	Allocate_FGE_z->size[27][2] = nPML_z_2;
	
	//Gz_19 
	Allocate_FGE_z->size[28][0] = nPML_x_1; 
	Allocate_FGE_z->size[28][1] = nPML_y_1; 
	Allocate_FGE_z->size[28][2] = nPML_z_2;
	
	//Fz_20 
	Allocate_FGE_z->size[29][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_FGE_z->size[29][1] = nPML_y_1; 
	Allocate_FGE_z->size[29][2] = nPML_z_2;
	
	//Fz_21
	Allocate_FGE_z->size[30][0] = nPML_x_2; 
	Allocate_FGE_z->size[30][1] = nPML_y_1;
	Allocate_FGE_z->size[30][2] = nPML_z_2;
	
	//Gz_21
	Allocate_FGE_z->size[31][0] = nPML_x_2; 
	Allocate_FGE_z->size[31][1] = nPML_y_1; 
	Allocate_FGE_z->size[31][2] = nPML_z_2;
	
	//Fz_22
	Allocate_FGE_z->size[32][0] = nPML_x_1;
	Allocate_FGE_z->size[32][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_z->size[32][2] = nPML_z_2;
	
	//Gz_22 
	Allocate_FGE_z->size[33][0] = nPML_x_1; 
	Allocate_FGE_z->size[33][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_FGE_z->size[33][2] = nPML_z_2;
	
	//Fz_23 
	Allocate_FGE_z->size[34][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_FGE_z->size[34][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_FGE_z->size[34][2] = nPML_z_2;
	
	//Fz_24
	Allocate_FGE_z->size[35][0] = nPML_x_2; 
	Allocate_FGE_z->size[35][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_FGE_z->size[35][2] = nPML_z_2;
	
	//Gz_24 
	Allocate_FGE_z->size[36][0] = nPML_x_2; 

⌨️ 快捷键说明

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