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