📄 fdtd_3d_pml.cpp
字号:
Allocate_FGE_x->size[21][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_x->size[21][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fx_16
Allocate_FGE_x->size[22][0] = nPML_x_1;
Allocate_FGE_x->size[22][1] = nPML_y_2;
Allocate_FGE_x->size[22][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Gx_16
Allocate_FGE_x->size[23][0] = nPML_x_1;
Allocate_FGE_x->size[23][1] = nPML_y_2;
Allocate_FGE_x->size[23][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fx_17
Allocate_FGE_x->size[24][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_x->size[24][1] = nPML_y_2;
Allocate_FGE_x->size[24][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fx_18
Allocate_FGE_x->size[25][0] = nPML_x_2;
Allocate_FGE_x->size[25][1] = nPML_y_2;
Allocate_FGE_x->size[25][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Gx_18
Allocate_FGE_x->size[26][0] = nPML_x_2;
Allocate_FGE_x->size[26][1] = nPML_y_2;
Allocate_FGE_x->size[26][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fx_19
Allocate_FGE_x->size[27][0] = nPML_x_1;
Allocate_FGE_x->size[27][1] = nPML_y_1;
Allocate_FGE_x->size[27][2] = nPML_z_2;
//Gx_19
Allocate_FGE_x->size[28][0] = nPML_x_1;
Allocate_FGE_x->size[28][1] = nPML_y_1;
Allocate_FGE_x->size[28][2] = nPML_z_2;
//Fx_20
Allocate_FGE_x->size[29][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_x->size[29][1] = nPML_y_1;
Allocate_FGE_x->size[29][2] = nPML_z_2;
//Gx_20
Allocate_FGE_x->size[30][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_x->size[30][1] = nPML_y_1;
Allocate_FGE_x->size[30][2] = nPML_z_2;
//Fx_21
Allocate_FGE_x->size[31][0] = nPML_x_2;
Allocate_FGE_x->size[31][1] = nPML_y_1;
Allocate_FGE_x->size[31][2] = nPML_z_2;
//Gx_21
Allocate_FGE_x->size[32][0] = nPML_x_2;
Allocate_FGE_x->size[32][1] = nPML_y_1;
Allocate_FGE_x->size[32][2] = nPML_z_2;
//Fx_22
Allocate_FGE_x->size[33][0] = nPML_x_1;
Allocate_FGE_x->size[33][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_x->size[33][2] = nPML_z_2;
//Fx_23
Allocate_FGE_x->size[34][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_x->size[34][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_x->size[34][2] = nPML_z_2;
//Fx_24
Allocate_FGE_x->size[35][0] = nPML_x_2;
Allocate_FGE_x->size[35][1] = ny_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_x->size[35][2] = nPML_z_2;
//Fx_25
Allocate_FGE_x->size[36][0] = nPML_x_1;
Allocate_FGE_x->size[36][1] = nPML_y_2;
Allocate_FGE_x->size[36][2] = nPML_z_2;
//Gx_25
Allocate_FGE_x->size[37][0] = nPML_x_1;
Allocate_FGE_x->size[37][1] = nPML_y_2;
Allocate_FGE_x->size[37][2] = nPML_z_2;
//Fx_26
Allocate_FGE_x->size[38][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_x->size[38][1] = nPML_y_2;
Allocate_FGE_x->size[38][2] = nPML_z_2;
//Gx_26
Allocate_FGE_x->size[39][0] = nx_MIN_1_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_x->size[39][1] = nPML_y_2;
Allocate_FGE_x->size[39][2] = nPML_z_2;
//Fx_27
Allocate_FGE_x->size[40][0] = nPML_x_2;
Allocate_FGE_x->size[40][1] = nPML_y_2;
Allocate_FGE_x->size[40][2] = nPML_z_2;
//Gx_27
Allocate_FGE_x->size[41][0] = nPML_x_2;
Allocate_FGE_x->size[41][1] = nPML_y_2;
Allocate_FGE_x->size[41][2] = nPML_z_2;
//Ex
Allocate_FGE_x->size[42][0] = nx - 1;
Allocate_FGE_x->size[42][1] = ny;
Allocate_FGE_x->size[42][2] = nz;
//PML vectors
Allocate_FGE_x->B_PML[0] = &K_Gx_a_1;
Allocate_FGE_x->B_PML[1] = &K_Gx_b_1;
Allocate_FGE_x->B_PML[2] = &K_Ex_a_1;
Allocate_FGE_x->B_PML[3] = &K_Ex_b_1;
Allocate_FGE_x->B_PML[4] = &K_Ex_c_1;
Allocate_FGE_x->B_PML[5] = &K_Ex_d_1;
Allocate_FGE_x->B_PML[6] = &K_Gx_a_2;
Allocate_FGE_x->B_PML[7] = &K_Gx_b_2;
Allocate_FGE_x->B_PML[8] = &K_Ex_a_2;
Allocate_FGE_x->B_PML[9] = &K_Ex_b_2;
Allocate_FGE_x->B_PML[10] = &K_Ex_c_2;
Allocate_FGE_x->B_PML[11] = &K_Ex_d_2;
//PML vector sizes
//K_Gx_a_1
Allocate_FGE_x->size_B[0] = nPML_y_1;
//K_Gx_b_1
Allocate_FGE_x->size_B[1] = nPML_y_1;
//K_Ex_a_1
Allocate_FGE_x->size_B[2] = nPML_z_1;
//K_Ex_b_1
Allocate_FGE_x->size_B[3] = nPML_z_1;
//K_Ex_c_1
Allocate_FGE_x->size_B[4] = nPML_x_1;
//K_Ex_d_1
Allocate_FGE_x->size_B[5] = nPML_x_1;
//K_Gx_a_2
Allocate_FGE_x->size_B[6] = nPML_y_2;
//K_Gx_b_2
Allocate_FGE_x->size_B[7] = nPML_y_2;
//K_Ex_a_2
Allocate_FGE_x->size_B[8] = nPML_z_2;
//K_Ex_b_2
Allocate_FGE_x->size_B[9] = nPML_z_2;
//K_Ex_c_2
Allocate_FGE_x->size_B[10] = nPML_x_2;
//K_Ex_d_2
Allocate_FGE_x->size_B[11] = nPML_x_2;
//PML vector names
strcpy(Allocate_FGE_x->name_B_PML[0],"K_Gx_a_1");
strcpy(Allocate_FGE_x->name_B_PML[1],"K_Gx_b_1");
strcpy(Allocate_FGE_x->name_B_PML[2],"K_Ex_a_1");
strcpy(Allocate_FGE_x->name_B_PML[3],"K_Ex_b_1");
strcpy(Allocate_FGE_x->name_B_PML[4],"K_Ex_c_1");
strcpy(Allocate_FGE_x->name_B_PML[5],"K_Ex_d_1");
strcpy(Allocate_FGE_x->name_B_PML[6],"K_Gx_a_2");
strcpy(Allocate_FGE_x->name_B_PML[7],"K_Gx_b_2");
strcpy(Allocate_FGE_x->name_B_PML[8],"K_Ex_a_2");
strcpy(Allocate_FGE_x->name_B_PML[9],"K_Ex_b_2");
strcpy(Allocate_FGE_x->name_B_PML[10],"K_Ex_c_2");
strcpy(Allocate_FGE_x->name_B_PML[11],"K_Ex_d_2");
}
////////////////////////////////////////////////////////////////////
//Collect the information - Ey field
////////////////////////////////////////////////////////////////////
void CFDTD_3D_PML::Init_Alloc_FyGyEy()
{
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_nPML_z_1_MIN_nPML_z_2 = nz - nPML_z_1 - nPML_z_2;
Allocate_FGE_y->A[0] = &Fy_1; Allocate_FGE_y->A[1] = &Gy_1; Allocate_FGE_y->A[2] = &Fy_2;
Allocate_FGE_y->A[3] = &Gy_2; Allocate_FGE_y->A[4] = &Fy_3; Allocate_FGE_y->A[5] = &Gy_3;
Allocate_FGE_y->A[6] = &Fy_4; Allocate_FGE_y->A[7] = &Gy_4; Allocate_FGE_y->A[8] = &Fy_5;
Allocate_FGE_y->A[9] = &Fy_6; Allocate_FGE_y->A[10] = &Gy_6; Allocate_FGE_y->A[11] = &Fy_7;
Allocate_FGE_y->A[12] = &Gy_7; Allocate_FGE_y->A[13] = &Fy_8; Allocate_FGE_y->A[14] = &Gy_8;
Allocate_FGE_y->A[15] = &Fy_9; Allocate_FGE_y->A[16] = &Gy_9; Allocate_FGE_y->A[17] = &Fy_10;
Allocate_FGE_y->A[18] = &Fy_11; Allocate_FGE_y->A[19] = &Fy_12; Allocate_FGE_y->A[20] = &Fy_13;
Allocate_FGE_y->A[21] = &Fy_15; Allocate_FGE_y->A[22] = &Fy_16; Allocate_FGE_y->A[23] = &Fy_17;
Allocate_FGE_y->A[24] = &Fy_18; Allocate_FGE_y->A[25] = &Fy_19; Allocate_FGE_y->A[26] = &Gy_19;
Allocate_FGE_y->A[27] = &Fy_20; Allocate_FGE_y->A[28] = &Gy_20; Allocate_FGE_y->A[29] = &Fy_21;
Allocate_FGE_y->A[30] = &Gy_21; Allocate_FGE_y->A[31] = &Fy_22; Allocate_FGE_y->A[32] = &Gy_22;
Allocate_FGE_y->A[33] = &Fy_23; Allocate_FGE_y->A[34] = &Fy_24; Allocate_FGE_y->A[35] = &Gy_24;
Allocate_FGE_y->A[36] = &Fy_25; Allocate_FGE_y->A[37] = &Gy_25; Allocate_FGE_y->A[38] = &Fy_26;
Allocate_FGE_y->A[39] = &Gy_26; Allocate_FGE_y->A[40] = &Fy_27; Allocate_FGE_y->A[41] = &Gy_27;
Allocate_FGE_y->A[42] = &Ey;
Allocate_FGE_y->er = 0;
strcpy(&Allocate_FGE_y->name[0][0],"Fy_1"); strcpy(&Allocate_FGE_y->name[1][0],"Gy_1");
strcpy(&Allocate_FGE_y->name[2][0],"Fy_2"); strcpy(&Allocate_FGE_y->name[3][0],"Gy_2");
strcpy(&Allocate_FGE_y->name[4][0],"Fy_3"); strcpy(&Allocate_FGE_y->name[5][0],"Gy_3");
strcpy(&Allocate_FGE_y->name[6][0],"Fy_4"); strcpy(&Allocate_FGE_y->name[7][0],"Gy_4");
strcpy(&Allocate_FGE_y->name[8][0],"Fy_5"); strcpy(&Allocate_FGE_y->name[9][0],"Fy_6");
strcpy(&Allocate_FGE_y->name[10][0],"Gy_6"); strcpy(&Allocate_FGE_y->name[11][0],"Fy_7");
strcpy(&Allocate_FGE_y->name[12][0],"Gy_7"); strcpy(&Allocate_FGE_y->name[13][0],"Fy_8");
strcpy(&Allocate_FGE_y->name[14][0],"Gy_8"); strcpy(&Allocate_FGE_y->name[15][0],"Fy_9");
strcpy(&Allocate_FGE_y->name[16][0],"Gy_9"); strcpy(&Allocate_FGE_y->name[17][0],"Fy_10");
strcpy(&Allocate_FGE_y->name[18][0],"Fy_11"); strcpy(&Allocate_FGE_y->name[19][0],"Fy_12");
strcpy(&Allocate_FGE_y->name[20][0],"Fy_13"); strcpy(&Allocate_FGE_y->name[21][0],"Fy_15");
strcpy(&Allocate_FGE_y->name[22][0],"Fy_16"); strcpy(&Allocate_FGE_y->name[23][0],"Fy_17");
strcpy(&Allocate_FGE_y->name[24][0],"Fy_18"); strcpy(&Allocate_FGE_y->name[25][0],"Fy_19");
strcpy(&Allocate_FGE_y->name[26][0],"Gy_19"); strcpy(&Allocate_FGE_y->name[27][0],"Fy_20");
strcpy(&Allocate_FGE_y->name[28][0],"Gy_20"); strcpy(&Allocate_FGE_y->name[29][0],"Fy_21");
strcpy(&Allocate_FGE_y->name[30][0],"Gy_21"); strcpy(&Allocate_FGE_y->name[31][0],"Fy_22");
strcpy(&Allocate_FGE_y->name[32][0],"Gy_22"); strcpy(&Allocate_FGE_y->name[33][0],"Fy_23");
strcpy(&Allocate_FGE_y->name[34][0],"Fy_24"); strcpy(&Allocate_FGE_y->name[35][0],"Gy_24");
strcpy(&Allocate_FGE_y->name[36][0],"Fy_25"); strcpy(&Allocate_FGE_y->name[37][0],"Gy_25");
strcpy(&Allocate_FGE_y->name[38][0],"Fy_26"); strcpy(&Allocate_FGE_y->name[39][0],"Gy_26");
strcpy(&Allocate_FGE_y->name[40][0],"Fy_27"); strcpy(&Allocate_FGE_y->name[41][0],"Gy_27");
strcpy(&Allocate_FGE_y->name[42][0],"Ey");
//Fy_1
Allocate_FGE_y->size[0][0] = nPML_x_1;
Allocate_FGE_y->size[0][1] = nPML_y_1;
Allocate_FGE_y->size[0][2] = nPML_z_1;
//Gy_1
Allocate_FGE_y->size[1][0] = nPML_x_1;
Allocate_FGE_y->size[1][1] = nPML_y_1;
Allocate_FGE_y->size[1][2] = nPML_z_1;
//Fy_2
Allocate_FGE_y->size[2][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_y->size[2][1] = nPML_y_1;
Allocate_FGE_y->size[2][2] = nPML_z_1;
//Gy_2
Allocate_FGE_y->size[3][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_y->size[3][1] = nPML_y_1;
Allocate_FGE_y->size[3][2] = nPML_z_1;
//Fy_3
Allocate_FGE_y->size[4][0] = nPML_x_2;
Allocate_FGE_y->size[4][1] = nPML_y_1;
Allocate_FGE_y->size[4][2] = nPML_z_1;
//Gy_3
Allocate_FGE_y->size[5][0] = nPML_x_2;
Allocate_FGE_y->size[5][1] = nPML_y_1;
Allocate_FGE_y->size[5][2] = nPML_z_1;
//Fy_4
Allocate_FGE_y->size[6][0] = nPML_x_1;
Allocate_FGE_y->size[6][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_y->size[6][2] = nPML_z_1;
//Gy_4
Allocate_FGE_y->size[7][0] = nPML_x_1;
Allocate_FGE_y->size[7][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_y->size[7][2] = nPML_z_1;
//Fy_5
Allocate_FGE_y->size[8][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_y->size[8][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_y->size[8][2] = nPML_z_1;
//Fy_6
Allocate_FGE_y->size[9][0] = nPML_x_2;
Allocate_FGE_y->size[9][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_y->size[9][2] = nPML_z_1;
//Gy_6
Allocate_FGE_y->size[10][0] = nPML_x_2;
Allocate_FGE_y->size[10][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_y->size[10][2] = nPML_z_1;
//Fy_7
Allocate_FGE_y->size[11][0] = nPML_x_1;
Allocate_FGE_y->size[11][1] = nPML_y_2;
Allocate_FGE_y->size[11][2] = nPML_z_1;
//Gy_7
Allocate_FGE_y->size[12][0] = nPML_x_1;
Allocate_FGE_y->size[12][1] = nPML_y_2;
Allocate_FGE_y->size[12][2] = nPML_z_1;
//Fy_8
Allocate_FGE_y->size[13][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_y->size[13][1] = nPML_y_2;
Allocate_FGE_y->size[13][2] = nPML_z_1;
//Gy_8
Allocate_FGE_y->size[14][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_y->size[14][1] = nPML_y_2;
Allocate_FGE_y->size[14][2] = nPML_z_1;
//Fy_9
Allocate_FGE_y->size[15][0] = nPML_x_2;
Allocate_FGE_y->size[15][1] = nPML_y_2;
Allocate_FGE_y->size[15][2] = nPML_z_1;
//Gy_9
Allocate_FGE_y->size[16][0] = nPML_x_2;
Allocate_FGE_y->size[16][1] = nPML_y_2;
Allocate_FGE_y->size[16][2] = nPML_z_1;
//Fy_10
Allocate_FGE_y->size[17][0] = nPML_x_1;
Allocate_FGE_y->size[17][1] = nPML_y_1;
Allocate_FGE_y->size[17][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fy_11
Allocate_FGE_y->size[18][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_y->size[18][1] = nPML_y_1;
Allocate_FGE_y->size[18][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fy_12
Allocate_FGE_y->size[19][0] = nPML_x_2;
Allocate_FGE_y->size[19][1] = nPML_y_1;
Allocate_FGE_y->size[19][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fy_13
Allocate_FGE_y->size[20][0] = nPML_x_1;
Allocate_FGE_y->size[20][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_y->size[20][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fy_15
Allocate_FGE_y->size[21][0] = nPML_x_2;
Allocate_FGE_y->size[21][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_y->size[21][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fy_16
Allocate_FGE_y->size[22][0] = nPML_x_1;
Allocate_FGE_y->size[22][1] = nPML_y_2;
Allocate_FGE_y->size[22][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fy_17
Allocate_FGE_y->size[23][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_y->size[23][1] = nPML_y_2;
Allocate_FGE_y->size[23][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fy_18
Allocate_FGE_y->size[24][0] = nPML_x_2;
Allocate_FGE_y->size[24][1] = nPML_y_2;
Allocate_FGE_y->size[24][2] = nz_MIN_nPML_z_1_MIN_nPML_z_2;
//Fy_19
Allocate_FGE_y->size[25][0] = nPML_x_1;
Allocate_FGE_y->size[25][1] = nPML_y_1;
Allocate_FGE_y->size[25][2] = nPML_z_2;
//Gy_19
Allocate_FGE_y->size[26][0] = nPML_x_1;
Allocate_FGE_y->size[26][1] = nPML_y_1;
Allocate_FGE_y->size[26][2] = nPML_z_2;
//Fy_20
Allocate_FGE_y->size[27][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_y->size[27][1] = nPML_y_1;
Allocate_FGE_y->size[27][2] = nPML_z_2;
//Gy_20
Allocate_FGE_y->size[28][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
Allocate_FGE_y->size[28][1] = nPML_y_1;
Allocate_FGE_y->size[28][2] = nPML_z_2;
//Fy_21
Allocate_FGE_y->size[29][0] = nPML_x_2;
Allocate_FGE_y->size[29][1] = nPML_y_1;
Allocate_FGE_y->size[29][2] = nPML_z_2;
//Gy_21
Allocate_FGE_y->size[30][0] = nPML_x_2;
Allocate_FGE_y->size[30][1] = nPML_y_1;
Allocate_FGE_y->size[30][2] = nPML_z_2;
//Fy_22
Allocate_FGE_y->size[31][0] = nPML_x_1;
Allocate_FGE_y->size[31][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_y->size[31][2] = nPML_z_2;
//Gy_22
Allocate_FGE_y->size[32][0] = nPML_x_1;
Allocate_FGE_y->size[32][1] = ny_MIN_1_MIN_nPML_y_1_MIN_nPML_y_2;
Allocate_FGE_y->size[32][2] = nPML_z_2;
//Fy_23
Allocate_FGE_y->size[33][0] = nx_MIN_nPML_x_1_MIN_nPML_x_2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -