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

📄 fdtd_3d_pml.cpp

📁 采用UMPL边界的FDTD编程
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	Allocate_BH_y->size[0][0] = nPML_x_1;
	Allocate_BH_y->size[0][1] = nPML_y_1; 
	Allocate_BH_y->size[0][2] = nPML_z_1;

	//By_2 
	Allocate_BH_y->size[1][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_BH_y->size[1][1] = nPML_y_1; 
	Allocate_BH_y->size[1][2] = nPML_z_1;

	//By_3 
	Allocate_BH_y->size[2][0] = nPML_x_2; 
	Allocate_BH_y->size[2][1] = nPML_y_1; 
	Allocate_BH_y->size[2][2] = nPML_z_1;

	//By_4 
	Allocate_BH_y->size[3][0] = nPML_x_1; 
	Allocate_BH_y->size[3][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_BH_y->size[3][2] = nPML_z_1;

	//By_6
	Allocate_BH_y->size[4][0] = nPML_x_2; 
	Allocate_BH_y->size[4][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_BH_y->size[4][2] = nPML_z_1;

	//By_7 
	Allocate_BH_y->size[5][0] = nPML_x_1; 
	Allocate_BH_y->size[5][1] = nPML_y_2; 
	Allocate_BH_y->size[5][2] = nPML_z_1;

	//By_8 
	Allocate_BH_y->size[6][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_BH_y->size[6][1] = nPML_y_2;
	Allocate_BH_y->size[6][2] = nPML_z_1;

	//By_9 
	Allocate_BH_y->size[7][0] = nPML_x_2; 
	Allocate_BH_y->size[7][1] = nPML_y_2;
	Allocate_BH_y->size[7][2] = nPML_z_1;

	//By_10 
	Allocate_BH_y->size[8][0] = nPML_x_1;
	Allocate_BH_y->size[8][1] = nPML_y_1; 
	Allocate_BH_y->size[8][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;

	//By_11
	Allocate_BH_y->size[9][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_BH_y->size[9][1] = nPML_y_1; 
	Allocate_BH_y->size[9][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;

	//By_12 
	Allocate_BH_y->size[10][0] = nPML_x_2; 
	Allocate_BH_y->size[10][1] = nPML_y_1; 
	Allocate_BH_y->size[10][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;

	//By_16 
	Allocate_BH_y->size[11][0] = nPML_x_1; 
	Allocate_BH_y->size[11][1] = nPML_y_2; 
	Allocate_BH_y->size[11][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;

	//By_17
	Allocate_BH_y->size[12][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_BH_y->size[12][1] = nPML_y_2; 
	Allocate_BH_y->size[12][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;

	//By_18 
	Allocate_BH_y->size[13][0] = nPML_x_2;
	Allocate_BH_y->size[13][1] = nPML_y_2; 
	Allocate_BH_y->size[13][2] = nz_MIN_1_MIN_nPML_z_1_MIN_nPML_z_2;

	//By_19 
	Allocate_BH_y->size[14][0] = nPML_x_1; 
	Allocate_BH_y->size[14][1] = nPML_y_1; 
	Allocate_BH_y->size[14][2] = nPML_z_2;

	//By_20
	Allocate_BH_y->size[15][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_BH_y->size[15][1] = nPML_y_1; 
	Allocate_BH_y->size[15][2] = nPML_z_2;

	//By_21 
	Allocate_BH_y->size[16][0] = nPML_x_2; 
	Allocate_BH_y->size[16][1] = nPML_y_1; 
	Allocate_BH_y->size[16][2] = nPML_z_2;

	//By_22 
	Allocate_BH_y->size[17][0] = nPML_x_1; 
	Allocate_BH_y->size[17][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_BH_y->size[17][2] = nPML_z_2;

	//By_24 
	Allocate_BH_y->size[18][0] = nPML_x_2;
	Allocate_BH_y->size[18][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
	Allocate_BH_y->size[18][2] = nPML_z_2;

	//By_25 
	Allocate_BH_y->size[19][0] = nPML_x_1; 
	Allocate_BH_y->size[19][1] = nPML_y_2; 
	Allocate_BH_y->size[19][2] = nPML_z_2;

	//By_26
	Allocate_BH_y->size[20][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_BH_y->size[20][1] = nPML_y_2;
	Allocate_BH_y->size[20][2] = nPML_z_2;

	//By_27
	Allocate_BH_y->size[21][0] = nPML_x_2;
	Allocate_BH_y->size[21][1] = nPML_y_2; 
	Allocate_BH_y->size[21][2] = nPML_z_2;

	//Hy 
	Allocate_BH_y->size[22][0] = nx - 1; 
	Allocate_BH_y->size[22][1] = ny; 
	Allocate_BH_y->size[22][2] = nz - 1;

	//PML vectors
	Allocate_BH_y->B_PML[0]  = &K_By_a_1;
	Allocate_BH_y->B_PML[1]  = &K_By_b_1;
	Allocate_BH_y->B_PML[2]  = &K_Hy_a_1; 
	Allocate_BH_y->B_PML[3]  = &K_Hy_b_1; 
	Allocate_BH_y->B_PML[4]  = &K_Hy_c_1; 
	Allocate_BH_y->B_PML[5]  = &K_Hy_d_1; 
	Allocate_BH_y->B_PML[6]  = &K_By_a_2; 
	Allocate_BH_y->B_PML[7]  = &K_By_b_2; 
	Allocate_BH_y->B_PML[8]  = &K_Hy_a_2;
	Allocate_BH_y->B_PML[9]  = &K_Hy_b_2;
	Allocate_BH_y->B_PML[10] = &K_Hy_c_2;
	Allocate_BH_y->B_PML[11] = &K_Hy_d_2;
	
	//PML vector sizes
	//K_By_a_1 
	Allocate_BH_y->size_B[0]  = nPML_z_1; 
	//K_By_b_1
	Allocate_BH_y->size_B[1]  = nPML_z_1; 
	//K_Hy_a_1 
	Allocate_BH_y->size_B[2]  = nPML_x_1; 
	//K_Hy_b_1 
	Allocate_BH_y->size_B[3]  = nPML_x_1; 
	//K_Hy_c_1 
	Allocate_BH_y->size_B[4]  = nPML_y_1; 
	//K_Hy_d_1 
	Allocate_BH_y->size_B[5]  = nPML_y_1; 
	//K_By_a_2 
	Allocate_BH_y->size_B[6]  = nPML_z_2; 
	//K_By_b_2 
	Allocate_BH_y->size_B[7]  = nPML_z_2; 
	//K_Hy_a_2
	Allocate_BH_y->size_B[8]  = nPML_x_2; 
	//K_Hy_b_2 
	Allocate_BH_y->size_B[9]  = nPML_x_2; 
	//K_Hy_c_2
	Allocate_BH_y->size_B[10] = nPML_y_2; 
	//K_Hy_d_2 
	Allocate_BH_y->size_B[11] = nPML_y_2; 

	//PML vector names
	strcpy(Allocate_BH_y->name_B_PML[0],"K_By_a_1");
	strcpy(Allocate_BH_y->name_B_PML[1],"K_By_b_1");
	strcpy(Allocate_BH_y->name_B_PML[2],"K_Hy_a_1"); 
	strcpy(Allocate_BH_y->name_B_PML[3],"K_Hy_b_1"); 
	strcpy(Allocate_BH_y->name_B_PML[4],"K_Hy_c_1"); 
	strcpy(Allocate_BH_y->name_B_PML[5],"K_Hy_d_1"); 
	strcpy(Allocate_BH_y->name_B_PML[6],"K_By_a_2"); 
	strcpy(Allocate_BH_y->name_B_PML[7],"K_By_b_2"); 
	strcpy(Allocate_BH_y->name_B_PML[8],"K_Hy_a_2");
	strcpy(Allocate_BH_y->name_B_PML[9],"K_Hy_b_2");
	strcpy(Allocate_BH_y->name_B_PML[10],"K_Hy_c_2");
	strcpy(Allocate_BH_y->name_B_PML[11],"K_Hy_d_2");
}

////////////////////////////////////////////////////////////////////
//Collect the information - Hz field
////////////////////////////////////////////////////////////////////
void CFDTD_3D_PML::Init_Alloc_BzHz()
{
	long nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2 = nx - 1 - 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_nPML_z_1_MIN_nPML_z_2 = nz - nPML_z_1 - nPML_z_2;

	Allocate_BH_z->A[0]  = &Bz_1;  Allocate_BH_z->A[1]  = &Bz_2;  Allocate_BH_z->A[2]  = &Bz_3;  
	Allocate_BH_z->A[3]  = &Bz_4;  Allocate_BH_z->A[4]  = &Bz_5;  Allocate_BH_z->A[5]  = &Bz_6; 
	Allocate_BH_z->A[6]  = &Bz_7;  Allocate_BH_z->A[7]  = &Bz_8;  Allocate_BH_z->A[8]  = &Bz_9;  
	Allocate_BH_z->A[9]  = &Bz_10; Allocate_BH_z->A[10] = &Bz_12; Allocate_BH_z->A[11] = &Bz_16; 
	Allocate_BH_z->A[12] = &Bz_18; Allocate_BH_z->A[13] = &Bz_19; Allocate_BH_z->A[14] = &Bz_20; 
	Allocate_BH_z->A[15] = &Bz_21; Allocate_BH_z->A[16] = &Bz_22; Allocate_BH_z->A[17] = &Bz_23; 
	Allocate_BH_z->A[18] = &Bz_24; Allocate_BH_z->A[19] = &Bz_25; Allocate_BH_z->A[20] = &Bz_26;
	Allocate_BH_z->A[21] = &Bz_27; Allocate_BH_z->A[22] = &Hz; 
	
	Allocate_BH_z->er = 0;

	strcpy(&Allocate_BH_z->name[0][0],"Bz_1");   strcpy(&Allocate_BH_z->name[1][0],"Bz_2");  
	strcpy(&Allocate_BH_z->name[2][0],"Bz_3");   strcpy(&Allocate_BH_z->name[3][0],"Bz_4"); 
	strcpy(&Allocate_BH_z->name[4][0],"Bz_5");   strcpy(&Allocate_BH_z->name[5][0],"Bz_6"); 
	strcpy(&Allocate_BH_z->name[6][0],"Bz_7");   strcpy(&Allocate_BH_z->name[7][0],"Bz_8"); 
	strcpy(&Allocate_BH_z->name[8][0],"Bz_9");   strcpy(&Allocate_BH_z->name[9][0],"Bz_10"); 
	strcpy(&Allocate_BH_z->name[10][0],"Bz_12"); strcpy(&Allocate_BH_z->name[11][0],"Bz_16"); 
	strcpy(&Allocate_BH_z->name[12][0],"Bz_18"); strcpy(&Allocate_BH_z->name[13][0],"Bz_19"); 
	strcpy(&Allocate_BH_z->name[14][0],"Bz_20"); strcpy(&Allocate_BH_z->name[15][0],"Bz_21"); 
	strcpy(&Allocate_BH_z->name[16][0],"Bz_22"); strcpy(&Allocate_BH_z->name[17][0],"Bz_23"); 
	strcpy(&Allocate_BH_z->name[18][0],"Bz_24"); strcpy(&Allocate_BH_z->name[19][0],"Bz_25"); 
	strcpy(&Allocate_BH_z->name[20][0],"Bz_26"); strcpy(&Allocate_BH_z->name[21][0],"Bz_27"); 
	strcpy(&Allocate_BH_z->name[22][0],"Hz"); 

	//Bz_1 
	Allocate_BH_z->size[0][0] = nPML_x_1; 
	Allocate_BH_z->size[0][1] = nPML_y_1;
	Allocate_BH_z->size[0][2] = nPML_z_1;
	
	//Bz_2 
	Allocate_BH_z->size[1][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_BH_z->size[1][1] = nPML_y_1; 
	Allocate_BH_z->size[1][2] = nPML_z_1;
	
	//Bz_3 
	Allocate_BH_z->size[2][0] = nPML_x_2; 
	Allocate_BH_z->size[2][1] = nPML_y_1; 
	Allocate_BH_z->size[2][2] = nPML_z_1;
	
	//Bz_4 
	Allocate_BH_z->size[3][0] = nPML_x_1;
	Allocate_BH_z->size[3][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_BH_z->size[3][2] = nPML_z_1;
	
	//Bz_5 
	Allocate_BH_z->size[4][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_BH_z->size[4][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_BH_z->size[4][2] = nPML_z_1;
	
	//Bz_6
	Allocate_BH_z->size[5][0] = nPML_x_2; 
	Allocate_BH_z->size[5][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_BH_z->size[5][2] = nPML_z_1;
	
	//Bz_7 
	Allocate_BH_z->size[6][0] = nPML_x_1; 
	Allocate_BH_z->size[6][1] = nPML_y_2; 
	Allocate_BH_z->size[6][2] = nPML_z_1;
	
	//Bz_8
	Allocate_BH_z->size[7][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_BH_z->size[7][1] = nPML_y_2; 
	Allocate_BH_z->size[7][2] = nPML_z_1;
	
	//Bz_9 
	Allocate_BH_z->size[8][0] = nPML_x_2; 
	Allocate_BH_z->size[8][1] = nPML_y_2;
	Allocate_BH_z->size[8][2] = nPML_z_1;
	
	//Bz_10 
	Allocate_BH_z->size[9][0] = nPML_x_1;
	Allocate_BH_z->size[9][1] = nPML_y_1; 
	Allocate_BH_z->size[9][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Bz_12
	Allocate_BH_z->size[10][0] = nPML_x_2;
	Allocate_BH_z->size[10][1] = nPML_y_1;
	Allocate_BH_z->size[10][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Bz_16 
	Allocate_BH_z->size[11][0] = nPML_x_1; 
	Allocate_BH_z->size[11][1] = nPML_y_2;
	Allocate_BH_z->size[11][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Bz_18
	Allocate_BH_z->size[12][0] = nPML_x_2; 
	Allocate_BH_z->size[12][1] = nPML_y_2; 
	Allocate_BH_z->size[12][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
	
	//Bz_19 
	Allocate_BH_z->size[13][0] = nPML_x_1; 
	Allocate_BH_z->size[13][1] = nPML_y_1; 
	Allocate_BH_z->size[13][2] = nPML_z_2;
	
	//Bz_20
	Allocate_BH_z->size[14][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_BH_z->size[14][1] = nPML_y_1; 
	Allocate_BH_z->size[14][2] = nPML_z_2;
	
	//Bz_21
	Allocate_BH_z->size[15][0] = nPML_x_2; 
	Allocate_BH_z->size[15][1] = nPML_y_1; 
	Allocate_BH_z->size[15][2] = nPML_z_2;
	
	//Bz_22
	Allocate_BH_z->size[16][0] = nPML_x_1;
	Allocate_BH_z->size[16][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_BH_z->size[16][2] = nPML_z_2;
	
	//Bz_23
	Allocate_BH_z->size[17][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2; 
	Allocate_BH_z->size[17][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_BH_z->size[17][2] = nPML_z_2;
	
	//Bz_24 
	Allocate_BH_z->size[18][0] = nPML_x_2;
	Allocate_BH_z->size[18][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2; 
	Allocate_BH_z->size[18][2] = nPML_z_2;
	
	//Bz_25 
	Allocate_BH_z->size[19][0] = nPML_x_1; 
	Allocate_BH_z->size[19][1] = nPML_y_2; 
	Allocate_BH_z->size[19][2] = nPML_z_2;
	
	//Bz_26 
	Allocate_BH_z->size[20][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
	Allocate_BH_z->size[20][1] = nPML_y_2; 
	Allocate_BH_z->size[20][2] = nPML_z_2;
	
	//Bz_27 
	Allocate_BH_z->size[21][0] = nPML_x_2; 
	Allocate_BH_z->size[21][1] = nPML_y_2;
	Allocate_BH_z->size[21][2] = nPML_z_2;
	
	//Hz 
	Allocate_BH_z->size[22][0] = nx - 1; 
	Allocate_BH_z->size[22][1] = ny - 1; 
	Allocate_BH_z->size[22][2] = nz;

	//PML vectors
	Allocate_BH_z->B_PML[0]  = &K_Bz_a_1; 
	Allocate_BH_z->B_PML[1]  = &K_Bz_b_1; 
	Allocate_BH_z->B_PML[2]  = &K_Hz_a_1; 
	Allocate_BH_z->B_PML[3]  = &K_Hz_b_1; 
	Allocate_BH_z->B_

⌨️ 快捷键说明

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