📄 init_thread_calc_data.cpp
字号:
#include "Thread_Calc.h"
#include "Init_Thread_Calc_Data.h"
////////////////////////////////////////////////////////////////////
//Init threads parameters in the PML zone -- Ex
////////////////////////////////////////////////////////////////////
void Init_Thread_Calc_PML_Ex(Data_E_comp_PML *Data_Ex_PML,
double ***Fx_1, double ***Gx_1, double ***Fx_2, double ***Gx_2,
double ***Fx_3, double ***Gx_3, double ***Fx_4, double ***Fx_5,
double ***Fx_6, double ***Fx_7, double ***Gx_7, double ***Fx_8,
double ***Gx_8, double ***Fx_9, double ***Gx_9, double ***Fx_10,
double ***Gx_10, double ***Fx_11, double ***Fx_12, double ***Gx_12,
double ***Fx_13, double ***Fx_15, double ***Fx_16, double ***Gx_16,
double ***Fx_17, double ***Fx_18, double ***Gx_18, double ***Fx_19,
double ***Gx_19, double ***Fx_20, double ***Gx_20, double ***Fx_21,
double ***Gx_21, double ***Fx_22, double ***Fx_23, double ***Fx_24,
double ***Fx_25, double ***Gx_25, double ***Fx_26, double ***Gx_26,
double ***Fx_27, double ***Gx_27, double ***Ex, double ***Hy,
double ***Hz, long ***Index, double **K_a, double **K_b,
double *K_Gx_a_1, double *K_Gx_b_1, double *K_Ex_a_1, double *K_Ex_b_1,
double *K_Ex_c_1, double *K_Ex_d_1, double *K_Gx_a_2, double *K_Gx_b_2,
double *K_Ex_a_2, double *K_Ex_b_2, double *K_Ex_c_2, double *K_Ex_d_2,
long nPML_x_1, long nPML_y_1, long nPML_z_1, long nPML_x_2, long nPML_y_2,
long nPML_z_2, long nx, long ny, long nz, double inv_dy, double inv_dz,
double TwoOREp0, double inv_TwoOREp0)
{
long i;
long nx_MIN_1 = nx - 1;
long ny_MIN_1 = ny - 1;
long nz_MIN_1 = nz - 1;
long ny_MIN_nPML_y_2 = ny - nPML_y_2;
long nz_MIN_nPML_z_2 = nz - nPML_z_2;
long nx_MIN_1_MIN_nPML_x_2 = nx - 1 - nPML_x_2;
long nPML_x_2_MIN_1 = nPML_x_2 - 1;
long nPML_y_2_MIN_1 = nPML_y_2 - 1;
long nPML_z_2_MIN_1 = nPML_z_2 - 1;
//set the same elements for all regions
for (i = 0; i<26; i++)
{
Data_Ex_PML[i].E = Ex; Data_Ex_PML[i].Ind = Index;
Data_Ex_PML[i].H1 = Hy; Data_Ex_PML[i].H2 = Hz;
Data_Ex_PML[i].Ka = K_a[i]; Data_Ex_PML[i].Kb = K_b[i];
Data_Ex_PML[i].inv_d1 = inv_dy; Data_Ex_PML[i].inv_d2 = inv_dz;
}
//set the particular elements
//1
Data_Ex_PML[0].F = Fx_1; Data_Ex_PML[0].G = Gx_1;
Data_Ex_PML[0].K_G_a = K_Gx_a_1; Data_Ex_PML[0].K_G_b = K_Gx_b_1;
Data_Ex_PML[0].K_E_a = K_Ex_a_1; Data_Ex_PML[0].K_E_b = K_Ex_b_1;
Data_Ex_PML[0].K_E_c = K_Ex_c_1; Data_Ex_PML[0].K_E_d = K_Ex_d_1;
Data_Ex_PML[0].nx_2 = nPML_x_1; Data_Ex_PML[0].ny_2 = nPML_y_1;
Data_Ex_PML[0].nz_2 = nPML_z_1;
//2
Data_Ex_PML[1].F = Fx_2; Data_Ex_PML[1].G = Gx_2;
Data_Ex_PML[1].K_G_a = K_Gx_a_1; Data_Ex_PML[1].K_G_b = K_Gx_b_1;
Data_Ex_PML[1].K_E_a = K_Ex_a_1; Data_Ex_PML[1].K_E_b = K_Ex_b_1;
Data_Ex_PML[1].nx_1 = nPML_x_1; Data_Ex_PML[1].nx_2 = nx_MIN_1_MIN_nPML_x_2;
Data_Ex_PML[1].ny_2 = nPML_y_1; Data_Ex_PML[1].nz_2 = nPML_z_1;
Data_Ex_PML[1].cnst = TwoOREp0;
//3
Data_Ex_PML[2].F = Fx_3; Data_Ex_PML[2].G = Gx_3;
Data_Ex_PML[2].K_G_a = K_Gx_a_1; Data_Ex_PML[2].K_G_b = K_Gx_b_1;
Data_Ex_PML[2].K_E_a = K_Ex_a_1; Data_Ex_PML[2].K_E_b = K_Ex_b_1;
Data_Ex_PML[2].K_E_c = K_Ex_c_2; Data_Ex_PML[2].K_E_d = K_Ex_d_2;
Data_Ex_PML[2].nx_1 = nx_MIN_1_MIN_nPML_x_2; Data_Ex_PML[2].nx_2 = nx_MIN_1;
Data_Ex_PML[2].ny_2 = nPML_y_1; Data_Ex_PML[2].nz_2 = nPML_z_1;
Data_Ex_PML[2].c_PML_x = nPML_x_2_MIN_1;
//4
Data_Ex_PML[3].F = Fx_4; Data_Ex_PML[3].K_E_a = K_Ex_a_1;
Data_Ex_PML[3].K_E_b = K_Ex_b_1; Data_Ex_PML[3].K_E_c = K_Ex_c_1;
Data_Ex_PML[3].K_E_d = K_Ex_d_1; Data_Ex_PML[3].nx_2 = nPML_x_1;
Data_Ex_PML[3].ny_1 = nPML_y_1; Data_Ex_PML[3].ny_2 = ny_MIN_nPML_y_2;
Data_Ex_PML[3].nz_2 = nPML_z_1;
//5
Data_Ex_PML[4].F = Fx_5; Data_Ex_PML[4].K_E_a = K_Ex_a_1;
Data_Ex_PML[4].K_E_b = K_Ex_b_1; Data_Ex_PML[4].nx_1 = nPML_x_1;
Data_Ex_PML[4].nx_2 = nx_MIN_1_MIN_nPML_x_2;
Data_Ex_PML[4].ny_1 = nPML_y_1; Data_Ex_PML[4].ny_2 = ny_MIN_nPML_y_2;
Data_Ex_PML[4].nz_2 = nPML_z_1; Data_Ex_PML[4].cnst = TwoOREp0;
//6
Data_Ex_PML[5].F = Fx_6; Data_Ex_PML[5].K_E_a = K_Ex_a_1;
Data_Ex_PML[5].K_E_b = K_Ex_b_1; Data_Ex_PML[5].K_E_c = K_Ex_c_2;
Data_Ex_PML[5].K_E_d = K_Ex_d_2; Data_Ex_PML[5].nx_1 = nx_MIN_1_MIN_nPML_x_2;
Data_Ex_PML[5].nx_2 = nx_MIN_1;
Data_Ex_PML[5].ny_1 = nPML_y_1; Data_Ex_PML[5].ny_2 = ny_MIN_nPML_y_2;
Data_Ex_PML[5].nz_2 = nPML_z_1; Data_Ex_PML[5].c_PML_x = nPML_x_2_MIN_1;
//7
Data_Ex_PML[6].F = Fx_7; Data_Ex_PML[6].G = Gx_7;
Data_Ex_PML[6].K_G_a = K_Gx_a_2; Data_Ex_PML[6].K_G_b = K_Gx_b_2;
Data_Ex_PML[6].K_E_a = K_Ex_a_1; Data_Ex_PML[6].K_E_b = K_Ex_b_1;
Data_Ex_PML[6].K_E_c = K_Ex_c_1; Data_Ex_PML[6].K_E_d = K_Ex_d_1;
Data_Ex_PML[6].nx_2 = nPML_x_1; Data_Ex_PML[6].ny_1 = ny_MIN_nPML_y_2;
Data_Ex_PML[6].ny_2 = ny_MIN_1; Data_Ex_PML[6].nz_2 = nPML_z_1;
Data_Ex_PML[6].c_PML_y = nPML_y_2_MIN_1;
//8
Data_Ex_PML[7].F = Fx_8; Data_Ex_PML[7].G = Gx_8;
Data_Ex_PML[7].K_G_a = K_Gx_a_2; Data_Ex_PML[7].K_G_b = K_Gx_b_2;
Data_Ex_PML[7].K_E_a = K_Ex_a_1; Data_Ex_PML[7].K_E_b = K_Ex_b_1;
Data_Ex_PML[7].nx_1 = nPML_x_1; Data_Ex_PML[7].nx_2 = nx_MIN_1_MIN_nPML_x_2;
Data_Ex_PML[7].ny_1 = ny_MIN_nPML_y_2; Data_Ex_PML[7].ny_2 = ny_MIN_1;
Data_Ex_PML[7].nz_2 = nPML_z_1; Data_Ex_PML[7].c_PML_y = nPML_y_2_MIN_1;
Data_Ex_PML[7].cnst = TwoOREp0;
//9
Data_Ex_PML[8].F = Fx_9; Data_Ex_PML[8].G = Gx_9;
Data_Ex_PML[8].K_G_a = K_Gx_a_2; Data_Ex_PML[8].K_G_b = K_Gx_b_2;
Data_Ex_PML[8].K_E_a = K_Ex_a_1; Data_Ex_PML[8].K_E_b = K_Ex_b_1;
Data_Ex_PML[8].K_E_c = K_Ex_c_2; Data_Ex_PML[8].K_E_d = K_Ex_d_2;
Data_Ex_PML[8].nx_1 = nx_MIN_1_MIN_nPML_x_2; Data_Ex_PML[8].nx_2 = nx_MIN_1;
Data_Ex_PML[8].ny_1 = ny_MIN_nPML_y_2; Data_Ex_PML[8].ny_2 = ny_MIN_1;
Data_Ex_PML[8].nz_2 = nPML_z_1; Data_Ex_PML[8].c_PML_x = nPML_x_2_MIN_1;
Data_Ex_PML[8].c_PML_y = nPML_y_2_MIN_1;
//10
Data_Ex_PML[9].F = Fx_10; Data_Ex_PML[9].G = Gx_10;
Data_Ex_PML[9].K_G_a = K_Gx_a_1; Data_Ex_PML[9].K_G_b = K_Gx_b_1;
Data_Ex_PML[9].K_E_c = K_Ex_c_1; Data_Ex_PML[9].K_E_d = K_Ex_d_1;
Data_Ex_PML[9].nx_2 = nPML_x_1; Data_Ex_PML[9].ny_2 = nPML_y_1;
Data_Ex_PML[9].nz_1 = nPML_z_1; Data_Ex_PML[9].nz_2 = nz_MIN_nPML_z_2;
Data_Ex_PML[9].cnst = inv_TwoOREp0;
//11
Data_Ex_PML[10].F = Fx_11; Data_Ex_PML[10].K_G_a = K_Gx_a_1;
Data_Ex_PML[10].K_G_b = K_Gx_b_1; Data_Ex_PML[10].nx_1 = nPML_x_1;
Data_Ex_PML[10].nx_2 = nx_MIN_1_MIN_nPML_x_2; Data_Ex_PML[10].ny_2 = nPML_y_1;
Data_Ex_PML[10].nz_1 = nPML_z_1; Data_Ex_PML[10].nz_2 = nz_MIN_nPML_z_2;
//12
Data_Ex_PML[11].F = Fx_12; Data_Ex_PML[11].G = Gx_12;
Data_Ex_PML[11].K_G_a = K_Gx_a_1; Data_Ex_PML[11].K_G_b = K_Gx_b_1;
Data_Ex_PML[11].K_E_c = K_Ex_c_2; Data_Ex_PML[11].K_E_d = K_Ex_d_2;
Data_Ex_PML[11].nx_1 = nx_MIN_1_MIN_nPML_x_2; Data_Ex_PML[11].nx_2 = nx_MIN_1;
Data_Ex_PML[11].ny_2 = nPML_y_1; Data_Ex_PML[11].nz_1 = nPML_z_1;
Data_Ex_PML[11].nz_2 = nz_MIN_nPML_z_2; Data_Ex_PML[11].c_PML_x = nPML_x_2_MIN_1;
Data_Ex_PML[11].cnst = inv_TwoOREp0;
//13
Data_Ex_PML[12].F = Fx_13; Data_Ex_PML[12].K_E_c = K_Ex_c_1;
Data_Ex_PML[12].K_E_d = K_Ex_d_1; Data_Ex_PML[12].nx_2 = nPML_x_1;
Data_Ex_PML[12].ny_1 = nPML_y_1; Data_Ex_PML[12].ny_2 = ny_MIN_nPML_y_2;
Data_Ex_PML[12].nz_1 = nPML_z_1; Data_Ex_PML[12].nz_2 = nz_MIN_nPML_z_2;
Data_Ex_PML[12].cnst = inv_TwoOREp0;
//15
Data_Ex_PML[13].F = Fx_15; Data_Ex_PML[13].K_E_c = K_Ex_c_2;
Data_Ex_PML[13].K_E_d = K_Ex_d_2; Data_Ex_PML[13].nx_1 = nx_MIN_1_MIN_nPML_x_2;
Data_Ex_PML[13].nx_2 = nx_MIN_1; Data_Ex_PML[13].ny_1 = nPML_y_1;
Data_Ex_PML[13].ny_2 = ny_MIN_nPML_y_2; Data_Ex_PML[13].nz_1 = nPML_z_1;
Data_Ex_PML[13].nz_2 = nz_MIN_nPML_z_2; Data_Ex_PML[13].c_PML_x = nPML_x_2_MIN_1;
Data_Ex_PML[13].cnst = inv_TwoOREp0;
//16
Data_Ex_PML[14].F = Fx_16; Data_Ex_PML[14].G = Gx_16;
Data_Ex_PML[14].K_G_a = K_Gx_a_2; Data_Ex_PML[14].K_G_b = K_Gx_b_2;
Data_Ex_PML[14].K_E_c = K_Ex_c_1; Data_Ex_PML[14].K_E_d = K_Ex_d_1;
Data_Ex_PML[14].nx_2 = nPML_x_1; Data_Ex_PML[14].ny_1 = ny_MIN_nPML_y_2;
Data_Ex_PML[14].ny_2 = ny_MIN_1; Data_Ex_PML[14].nz_1 = nPML_z_1;
Data_Ex_PML[14].nz_2 = nz_MIN_nPML_z_2; Data_Ex_PML[14].c_PML_y = nPML_y_2_MIN_1;
Data_Ex_PML[14].cnst = inv_TwoOREp0;
//17
Data_Ex_PML[15].F = Fx_17; Data_Ex_PML[15].K_G_a = K_Gx_a_2;
Data_Ex_PML[15].K_G_b = K_Gx_b_2; Data_Ex_PML[15].nx_1 = nPML_x_1;
Data_Ex_PML[15].nx_2 = nx_MIN_1_MIN_nPML_x_2;
Data_Ex_PML[15].ny_1 = ny_MIN_nPML_y_2; Data_Ex_PML[15].ny_2 = ny_MIN_1;
Data_Ex_PML[15].nz_1 = nPML_z_1; Data_Ex_PML[15].nz_2 = nz_MIN_nPML_z_2;
Data_Ex_PML[15].c_PML_y = nPML_y_2_MIN_1;
//18
Data_Ex_PML[16].F = Fx_18; Data_Ex_PML[16].G = Gx_18;
Data_Ex_PML[16].K_G_a = K_Gx_a_2; Data_Ex_PML[16].K_G_b = K_Gx_b_2;
Data_Ex_PML[16].K_E_c = K_Ex_c_2; Data_Ex_PML[16].K_E_d = K_Ex_d_2;
Data_Ex_PML[16].nx_1 = nx_MIN_1_MIN_nPML_x_2; Data_Ex_PML[16].nx_2 = nx_MIN_1;
Data_Ex_PML[16].ny_1 = ny_MIN_nPML_y_2; Data_Ex_PML[16].ny_2 = ny_MIN_1;
Data_Ex_PML[16].nz_1 = nPML_z_1; Data_Ex_PML[16].nz_2 = nz_MIN_nPML_z_2;
Data_Ex_PML[16].c_PML_x = nPML_x_2_MIN_1; Data_Ex_PML[16].c_PML_y = nPML_y_2_MIN_1;
Data_Ex_PML[16].cnst = inv_TwoOREp0;
//19
Data_Ex_PML[17].F = Fx_19; Data_Ex_PML[17].G = Gx_19;
Data_Ex_PML[17].K_G_a = K_Gx_a_1; Data_Ex_PML[17].K_G_b = K_Gx_b_1;
Data_Ex_PML[17].K_E_a = K_Ex_a_2; Data_Ex_PML[17].K_E_b = K_Ex_b_2;
Data_Ex_PML[17].K_E_c = K_Ex_c_1; Data_Ex_PML[17].K_E_d = K_Ex_d_1;
Data_Ex_PML[17].nx_2 = nPML_x_1; Data_Ex_PML[17].ny_2 = nPML_y_1;
Data_Ex_PML[17].nz_1 = nz_MIN_nPML_z_2; Data_Ex_PML[17].nz_2 = nz_MIN_1;
Data_Ex_PML[17].c_PML_z = nPML_z_2_MIN_1;
//20
Data_Ex_PML[18].F = Fx_20; Data_Ex_PML[18].G = Gx_20;
Data_Ex_PML[18].K_G_a = K_Gx_a_1; Data_Ex_PML[18].K_G_b = K_Gx_b_1;
Data_Ex_PML[18].K_E_a = K_Ex_a_2; Data_Ex_PML[18].K_E_b = K_Ex_b_2;
Data_Ex_PML[18].nx_1 = nPML_x_1; Data_Ex_PML[18].nx_2 = nx_MIN_1_MIN_nPML_x_2;
Data_Ex_PML[18].ny_2 = nPML_y_1; Data_Ex_PML[18].nz_1 = nz_MIN_nPML_z_2;
Data_Ex_PML[18].nz_2 = nz_MIN_1; Data_Ex_PML[18].c_PML_z = nPML_z_2_MIN_1;
Data_Ex_PML[18].cnst = TwoOREp0;
//21
Data_Ex_PML[19].F = Fx_21; Data_Ex_PML[19].G = Gx_21;
Data_Ex_PML[19].K_G_a = K_Gx_a_1; Data_Ex_PML[19].K_G_b = K_Gx_b_1;
Data_Ex_PML[19].K_E_a = K_Ex_a_2; Data_Ex_PML[19].K_E_b = K_Ex_b_2;
Data_Ex_PML[19].K_E_c = K_Ex_c_2; Data_Ex_PML[19].K_E_d = K_Ex_d_2;
Data_Ex_PML[19].nx_1 = nx_MIN_1_MIN_nPML_x_2; Data_Ex_PML[19].nx_2 = nx_MIN_1;
Data_Ex_PML[19].ny_2 = nPML_y_1; Data_Ex_PML[19].nz_1 = nz_MIN_nPML_z_2;
Data_Ex_PML[19].nz_2 = nz_MIN_1; Data_Ex_PML[19].c_PML_x = nPML_x_2_MIN_1;
Data_Ex_PML[19].c_PML_z = nPML_z_2_MIN_1;
//22
Data_Ex_PML[20].F = Fx_22; Data_Ex_PML[20].K_E_a = K_Ex_a_2;
Data_Ex_PML[20].K_E_b = K_Ex_b_2; Data_Ex_PML[20].K_E_c = K_Ex_c_1;
Data_Ex_PML[20].K_E_d = K_Ex_d_1; Data_Ex_PML[20].nx_2 = nPML_x_1;
Data_Ex_PML[20].ny_1 = nPML_y_1; Data_Ex_PML[20].ny_2 = ny_MIN_nPML_y_2;
Data_Ex_PML[20].nz_1 = nz_MIN_nPML_z_2; Data_Ex_PML[20].nz_2 = nz_MIN_1;
Data_Ex_PML[20].c_PML_z = nPML_z_2_MIN_1;
//23
Data_Ex_PML[21].F = Fx_23; Data_Ex_PML[21].K_E_a = K_Ex_a_2;
Data_Ex_PML[21].K_E_b = K_Ex_b_2; Data_Ex_PML[21].nx_1 = nPML_x_1;
Data_Ex_PML[21].nx_2 = nx_MIN_1_MIN_nPML_x_2;
Data_Ex_PML[21].ny_1 = nPML_y_1; Data_Ex_PML[21].ny_2 = ny_MIN_nPML_y_2;
Data_Ex_PML[21].nz_1 = nz_MIN_nPML_z_2; Data_Ex_PML[21].nz_2 = nz_MIN_1;
Data_Ex_PML[21].c_PML_z = nPML_z_2_MIN_1; Data_Ex_PML[21].cnst = TwoOREp0;
//24
Data_Ex_PML[22].F = Fx_24; Data_Ex_PML[22].K_E_a = K_Ex_a_2;
Data_Ex_PML[22].K_E_b = K_Ex_b_2; Data_Ex_PML[22].K_E_c = K_Ex_c_2;
Data_Ex_PML[22].K_E_d = K_Ex_d_2; Data_Ex_PML[22].nx_1 = nx_MIN_1_MIN_nPML_x_2;
Data_Ex_PML[22].nx_2 = nx_MIN_1; Data_Ex_PML[22].ny_1 = nPML_y_1;
Data_Ex_PML[22].ny_2 = ny_MIN_nPML_y_2; Data_Ex_PML[22].nz_1 = nz_MIN_nPML_z_2;
Data_Ex_PML[22].nz_2 = nz_MIN_1; Data_Ex_PML[22].c_PML_x = nPML_x_2_MIN_1;
Data_Ex_PML[22].c_PML_z = nPML_z_2_MIN_1;
//25
Data_Ex_PML[23].F = Fx_25; Data_Ex_PML[23].G = Gx_25;
Data_Ex_PML[23].K_G_a = K_Gx_a_2; Data_Ex_PML[23].K_G_b = K_Gx_b_2;
Data_Ex_PML[23].K_E_a = K_Ex_a_2; Data_Ex_PML[23].K_E_b = K_Ex_b_2;
Data_Ex_PML[23].K_E_c = K_Ex_c_1; Data_Ex_PML[23].K_E_d = K_Ex_d_1;
Data_Ex_PML[23].nx_2 = nPML_x_1; Data_Ex_PML[23].ny_1 = ny_MIN_nPML_y_2;
Data_Ex_PML[23].ny_2 = ny_MIN_1; Data_Ex_PML[23].nz_1 = nz_MIN_nPML_z_2;
Data_Ex_PML[23].nz_2 = nz_MIN_1; Data_Ex_PML[23].c_PML_y = nPML_y_2_MIN_1;
Data_Ex_PML[23].c_PML_z = nPML_z_2_MIN_1;
//26
Data_Ex_PML[24].F = Fx_26; Data_Ex_PML[24].G = Gx_26;
Data_Ex_PML[24].K_G_a = K_Gx_a_2; Data_Ex_PML[24].K_G_b = K_Gx_b_2;
Data_Ex_PML[24].K_E_a = K_Ex_a_2; Data_Ex_PML[24].K_E_b = K_Ex_b_2;
Data_Ex_PML[24].nx_1 = nPML_x_1; Data_Ex_PML[24].nx_2 = nx_MIN_1_MIN_nPML_x_2;
Data_Ex_PML[24].ny_1 = ny_MIN_nPML_y_2; Data_Ex_PML[24].ny_2 = ny_MIN_1;
Data_Ex_PML[24].nz_1 = nz_MIN_nPML_z_2; Data_Ex_PML[24].nz_2 = nz_MIN_1;
Data_Ex_PML[24].c_PML_y = nPML_y_2_MIN_1; Data_Ex_PML[24].c_PML_z = nPML_z_2_MIN_1;
Data_Ex_PML[24].cnst = TwoOREp0;
//27
Data_Ex_PML[25].F = Fx_27; Data_Ex_PML[25].G = Gx_27;
Data_Ex_PML[25].K_G_a = K_Gx_a_2; Data_Ex_PML[25].K_G_b = K_Gx_b_2;
Data_Ex_PML[25].K_E_a = K_Ex_a_2; Data_Ex_PML[25].K_E_b = K_Ex_b_2;
Data_Ex_PML[25].K_E_c = K_Ex_c_2; Data_Ex_PML[25].K_E_d = K_Ex_d_2;
Data_Ex_PML[25].nx_1 = nx_MIN_1_MIN_nPML_x_2; Data_Ex_PML[25].nx_2 = nx_MIN_1;
Data_Ex_PML[25].ny_1 = ny_MIN_nPML_y_2; Data_Ex_PML[25].ny_2 = ny_MIN_1;
Data_Ex_PML[25].nz_1 = nz_MIN_nPML_z_2; Data_Ex_PML[25].nz_2 = nz_MIN_1;
Data_Ex_PML[25].c_PML_x = nPML_x_2_MIN_1; Data_Ex_PML[25].c_PML_y = nPML_y_2_MIN_1;
Data_Ex_PML[25].c_PML_z = nPML_z_2_MIN_1;
}
////////////////////////////////////////////////////////////////////
//Init threads parameters in the PML zone -- Ey
////////////////////////////////////////////////////////////////////
void Init_Thread_Calc_PML_Ey(Data_E_comp_PML *Data_Ey_PML,
double ***Fy_1, double ***Gy_1, double ***Fy_2, double ***Gy_2,
double ***Fy_3, double ***Gy_3, double ***Fy_4, double ***Gy_4,
double ***Fy_5, double ***Fy_6, double ***Gy_6, double ***Fy_7,
double ***Gy_7, double ***Fy_8, double ***Gy_8, double ***Fy_9,
double ***Gy_9, double ***Fy_10, double ***Fy_11, double ***Fy_12,
double ***Fy_13, double ***Fy_15, double ***Fy_16, double ***Fy_17,
double ***Fy_18, double ***Fy_19, double ***Gy_19, double ***Fy_20,
double ***Gy_20, double ***Fy_21, double ***Gy_21, double ***Fy_22,
double ***Gy_22, double ***Fy_23, double ***Fy_24, double ***Gy_24,
double ***Fy_25, double ***Gy_25, double ***Fy_26, double ***Gy_26,
double ***Fy_27, double ***Gy_27, double ***Ey, double ***Hx,
double ***Hz, long ***Index, double **K_a, double **K_b,
double *K_Gy_a_1, double *K_Gy_b_1, double *K_Ey_a_1, double *K_Ey_b_1,
double *K_Ey_c_1, double *K_Ey_d_1, double *K_Gy_a_2, double *K_Gy_b_2,
double *K_Ey_a_2, double *K_Ey_b_2, double *K_Ey_c_2, double *K_Ey_d_2,
long nPML_x_1, long nPML_y_1, long nPML_z_1, long nPML_x_2, long nPML_y_2,
long nPML_z_2, long nx, long ny, long nz, double inv_dx, double inv_dz,
double TwoOREp0, double inv_TwoOREp0)
{
long i;
long nx_MIN_1 = nx - 1;
long ny_MIN_1 = ny - 1;
long nz_MIN_1 = nz - 1;
long nx_MIN_nPML_x_2 = nx - nPML_x_2;
long nz_MIN_nPML_z_2 = nz - nPML_z_2;
long ny_MIN_1_MIN_nPML_y_2 = ny - 1 - nPML_y_2;
long nPML_x_2_MIN_1 = nPML_x_2 - 1;
long nPML_y_2_MIN_1 = nPML_y_2 - 1;
long nPML_z_2_MIN_1 = nPML_z_2 - 1;
//set the same elements for all regions
for (i = 0; i<26; i++)
{
Data_Ey_PML[i].E = Ey; Data_Ey_PML[i].Ind = Index;
Data_Ey_PML[i].H1 = Hx; Data_Ey_PML[i].H2 = Hz;
Data_Ey_PML[i].Ka = K_a[i]; Data_Ey_PML[i].Kb = K_b[i];
Data_Ey_PML[i].inv_d1 = inv_dx; Data_Ey_PML[i].inv_d2 = inv_dz;
}
//set the particular elements
//1
Data_Ey_PML[0].F = Fy_1; Data_Ey_PML[0].G = Gy_1;
Data_Ey_PML[0].K_G_a = K_Gy_a_1; Data_Ey_PML[0].K_G_b = K_Gy_b_1;
Data_Ey_PML[0].K_E_a = K_Ey_a_1; Data_Ey_PML[0].K_E_b = K_Ey_b_1;
Data_Ey_PML[0].K_E_c = K_Ey_c_1; Data_Ey_PML[0].K_E_d = K_Ey_d_1;
Data_Ey_PML[0].nx_2 = nPML_x_1; Data_Ey_PML[0].ny_2 = nPML_y_1;
Data_Ey_PML[0].nz_2 = nPML_z_1;
//2
Data_Ey_PML[1].F = Fy_2; Data_Ey_PML[1].G = Gy_2;
Data_Ey_PML[1].K_G_a = K_Gy_a_1; Data_Ey_PML[1].K_G_b = K_Gy_b_1;
Data_Ey_PML[1].K_E_c = K_Ey_c_1; Data_Ey_PML[1].K_E_d = K_Ey_d_1;
Data_Ey_PML[1].nx_1 = nPML_x_1; Data_Ey_PML[1].nx_2 = nx_MIN_nPML_x_2;
Data_Ey_PML[1].ny_2 = nPML_y_1; Data_Ey_PML[1].nz_2 = nPML_z_1;
Data_Ey_PML[1].cnst = inv_TwoOREp0;
//3
Data_Ey_PML[2].F = Fy_3; Data_Ey_PML[2].G = Gy_3;
Data_Ey_PML[2].K_G_a = K_Gy_a_1; Data_Ey_PML[2].K_G_b = K_Gy_b_1;
Data_Ey_PML[2].K_E_a = K_Ey_a_2; Data_Ey_PML[2].K_E_b = K_Ey_b_2;
Data_Ey_PML[2].K_E_c = K_Ey_c_1; Data_Ey_PML[2].K_E_d = K_Ey_d_1;
Data_Ey_PML[2].nx_1 = nx_MIN_nPML_x_2; Data_Ey_PML[2].nx_2 = nx_MIN_1;
Data_Ey_PML[2].ny_2 = nPML_y_1; Data_Ey_PML[2].nz_2 = nPML_z_1;
Data_Ey_PML[2].c_PML_x = nPML_x_2_MIN_1;
//4
Data_Ey_PML[3].F = Fy_4; Data_Ey_PML[3].G = Gy_4;
Data_Ey_PML[3].K_G_a = K_Gy_a_1; Data_Ey_PML[3].K_G_b = K_Gy_b_1;
Data_Ey_PML[3].K_E_a = K_Ey_a_1; Data_Ey_PML[3].K_E_b = K_Ey_b_1;
Data_Ey_PML[3].nx_2 = nPML_x_1; Data_Ey_PML[3].ny_1 = nPML_y_1;
Data_Ey_PML[3].ny_2 = ny_MIN_1_MIN_nPML_y_2; Data_Ey_PML[3].nz_2 = nPML_z_1;
Data_Ey_PML[3].cnst = TwoOREp0;
//5
Data_Ey_PML[4].F = Fy_5; Data_Ey_PML[4].K_G_a = K_Gy_a_1;
Data_Ey_PML[4].K_G_b = K_Gy_b_1; Data_Ey_PML[4].nx_1 = nPML_x_1;
Data_Ey_PML[4].nx_2 = nx_MIN_nPML_x_2; Data_Ey_PML[4].ny_1 = nPML_y_1;
Data_Ey_PML[4].ny_2 = ny_MIN_1_MIN_nPML_y_2; Data_Ey_PML[4].nz_2 = nPML_z_1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -