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