📄 fdtd_3d_pml.cpp
字号:
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 + -