📄 init_thread_calc_data.cpp
字号:
ind = i;
}
else
{
ind = i - 1;
}
if (ind != 12)
{
Data_Hz_PML[ind].nx_1 = nPML_x_1;
Data_Hz_PML[ind].nx_2 = nx_MIN_1_MIN_nPML_x_2;
}
}
//x component III zone - (3 6 9 12 15 18 21 24 27)
for (i = 2; i<27; i=i+3)
{
if (i < 13)
{
ind = i;
}
else
{
ind = i - 1;
}
Data_Hz_PML[ind].K_B_a = K_Bz_a_2; Data_Hz_PML[ind].K_B_b = K_Bz_b_2;
Data_Hz_PML[ind].nx_1 = nx_MIN_1_MIN_nPML_x_2;
Data_Hz_PML[ind].nx_2 = nx_MIN_1;
Data_Hz_PML[ind].c_PML_x = nPML_x_2_MIN_1;
}
////////////////////////
//y component I zone - (1 2 3 10 11 12 19 20 21)
long ii = 0;
long jel = 0;
for (i = 0; i<9; i++)
{
if (jel == 3)
{
jel = 0;
ii = ii + 6;
}
if (ii < 13)
{
ind = ii;
}
else
{
ind = ii - 1;
}
Data_Hz_PML[ind].K_H_a = K_Hz_a_1; Data_Hz_PML[ind].K_H_b = K_Hz_b_1;
Data_Hz_PML[ind].ny_2 = nPML_y_1;
ii++;
jel++;
}
//y component II zone - (4 5 6 13 14 15 22 23 24)
ii = 3;
jel = 0;
for (i = 0; i<9; i++)
{
if (jel == 3)
{
jel = 0;
ii = ii + 6;
}
if (ii < 13)
{
ind = ii;
}
else
{
ind = ii - 1;
}
if (ii != 13)
{
Data_Hz_PML[ind].ny_1 = nPML_y_1;
Data_Hz_PML[ind].ny_2 = ny_MIN_1_MIN_nPML_y_2;
}
ii++;
jel++;
}
//y component III zone - (7 8 9 16 17 18 25 26 27)
ii = 6;
jel = 0;
for (i = 0; i<9; i++)
{
if (jel == 3)
{
jel = 0;
ii = ii + 6;
}
if (ii < 13)
{
ind = ii;
}
else
{
ind = ii - 1;
}
Data_Hz_PML[ind].K_H_a = K_Hz_a_2; Data_Hz_PML[ind].K_H_b = K_Hz_b_2;
Data_Hz_PML[ind].ny_1 = ny_MIN_1_MIN_nPML_y_2;
Data_Hz_PML[ind].ny_2 = ny_MIN_1;
Data_Hz_PML[ind].c_PML_y = nPML_y_2_MIN_1;
ii++;
jel++;
}
////////////////////////
//z component I zone - (1 2 3 4 5 6 7 8 9)
for (i = 0; i<9; i++)
{
Data_Hz_PML[i].K_H_c = K_Hz_c_1; Data_Hz_PML[i].K_H_d = K_Hz_d_1;
Data_Hz_PML[i].nz_2 = nPML_z_1;
}
//z component II zone - (10 11 12 13 15 16 17 18)
for (i = 9; i<17; i++)
{
Data_Hz_PML[i].nz_1 = nPML_z_1; Data_Hz_PML[i].nz_2 = nz_MIN_nPML_z_2;
}
//z component III zone - (19 20 21 22 23 24 25 26 27)
for (i = 17; i<26; i++)
{
Data_Hz_PML[i].K_H_c = K_Hz_c_2; Data_Hz_PML[i].K_H_d = K_Hz_d_2;
Data_Hz_PML[i].nz_1 = nz_MIN_nPML_z_2; Data_Hz_PML[i].nz_2 = nz;
Data_Hz_PML[i].c_PML_z = nPML_z_2_MIN_1;
}
}
////////////////////////////////////////////////////////////////////
//Init threads parameters outside PML E -- 14 zone
////////////////////////////////////////////////////////////////////
void Init_Thread_Calc_E(Data_E_comp *Data_E, double ***E, double ***H1, double ***H2,
long ***Index, double **K_a, double **K_b, long nx_1,
long ny_1, long nz_1, long nx_2, long ny_2, long nz_2,
double inv_d1, double inv_d2, long nr_DIV_x, long nr_DIV_y,
long nr_DIV_z)
{
long delta_nx = (nx_2 - nx_1)/nr_DIV_x;
long delta_ny = (ny_2 - ny_1)/nr_DIV_y;
long delta_nz = (nz_2 - nz_1)/nr_DIV_z;
long i, ii, j, k;
long nx_thr_a, nx_thr_b, ny_thr_a, ny_thr_b, nz_thr_a, nz_thr_b;
ii = 0;
nx_thr_a = nx_1;
for (i = 0; i < nr_DIV_x; i++)
{
if (i == nr_DIV_x-1)
{
nx_thr_b = nx_2;
}
else
{
nx_thr_b = nx_thr_a + delta_nx;
}
ny_thr_a = ny_1;
for (j = 0; j < nr_DIV_y; j++)
{
if (j == nr_DIV_y - 1)
{
ny_thr_b = ny_2;
}
else
{
ny_thr_b = ny_thr_a + delta_ny;
}
nz_thr_a = nz_1;
for (k = 0; k < nr_DIV_z; k++)
{
if (k == nr_DIV_z - 1)
{
nz_thr_b = nz_2;
}
else
{
nz_thr_b = nz_thr_a + delta_nz;
}
Data_E[ii].E = E; Data_E[ii].H1 = H1;
Data_E[ii].H2 = H2; Data_E[ii].Ind = Index;
Data_E[ii].Ka = K_a[26+ii]; Data_E[ii].Kb = K_b[26+ii];
Data_E[ii].inv_d1 = inv_d1; Data_E[ii].inv_d2 = inv_d2;
Data_E[ii].nx_1 = nx_thr_a; Data_E[ii].nx_2 = nx_thr_b;
Data_E[ii].ny_1 = ny_thr_a; Data_E[ii].ny_2 = ny_thr_b;
Data_E[ii].nz_1 = nz_thr_a; Data_E[ii].nz_2 = nz_thr_b;
ii++;
nz_thr_a = nz_thr_b;
}
ny_thr_a = ny_thr_b;
}
nx_thr_a= nx_thr_b;
}
}
////////////////////////////////////////////////////////////////////
//Init threads parameters outside PML H -- 14 zone
////////////////////////////////////////////////////////////////////
void Init_Thread_Calc_H(Data_H_comp *Data_H, double ***H, double ***E1, double ***E2,
long ***Index, double **mu_r, long nx_1, long ny_1, long nz_1,
long nx_2, long ny_2, long nz_2, double cons_1, double cons_2,
long nr_DIV_x, long nr_DIV_y, long nr_DIV_z)
{
long delta_nx = (nx_2 - nx_1)/nr_DIV_x;
long delta_ny = (ny_2 - ny_1)/nr_DIV_y;
long delta_nz = (nz_2 - nz_1)/nr_DIV_z;
long i, ii, j, k;
long nx_thr_a, nx_thr_b, ny_thr_a, ny_thr_b, nz_thr_a, nz_thr_b;
ii = 0;
nx_thr_a = nx_1;
for (i = 0; i < nr_DIV_x; i++)
{
if (i == nr_DIV_x-1)
{
nx_thr_b = nx_2;
}
else
{
nx_thr_b = nx_thr_a + delta_nx;
}
ny_thr_a = ny_1;
for (j = 0; j < nr_DIV_y; j++)
{
if (j == nr_DIV_y-1)
{
ny_thr_b = ny_2;
}
else
{
ny_thr_b = ny_thr_a + delta_ny;
}
nz_thr_a = nz_1;
for (k = 0; k < nr_DIV_z; k++)
{
if (k == nr_DIV_z-1)
{
nz_thr_b = nz_2;
}
else
{
nz_thr_b = nz_thr_a + delta_nz;
}
Data_H[ii].H = H; Data_H[ii].E1 = E1;
Data_H[ii].E2 = E2; Data_H[ii].Ind = Index;
Data_H[ii].mu_r = mu_r[26+ii];
Data_H[ii].coef_1 = cons_1; Data_H[ii].coef_2 = cons_2;
Data_H[ii].nx_1 = nx_thr_a; Data_H[ii].nx_2 = nx_thr_b;
Data_H[ii].ny_1 = ny_thr_a; Data_H[ii].ny_2 = ny_thr_b;
Data_H[ii].nz_1 = nz_thr_a; Data_H[ii].nz_2 = nz_thr_b;
ii++;
nz_thr_a = nz_thr_b;
}
ny_thr_a = ny_thr_b;
}
nx_thr_a= nx_thr_b;
}
}
////////////////////////////////////////////////////////////////////
//Init threads parameters outside PML H -- 14 zone
////////////////////////////////////////////////////////////////////
void Init_Thread_Calc_W(Data_En *Data_W, double ***W, double ***Ex, double ***Ey,
double ***Ez, double ***Hx, double ***Hy, double ***Hz,
long ***Ind, double **Mat, long nx_1, long ny_1, long nz_1,
long nx_2, long ny_2, long nz_2, long nr_DIV_x,
long nr_DIV_y, long nr_DIV_z, double *local_W_aver)
{
long delta_nx = (nx_2 - nx_1)/nr_DIV_x;
long delta_ny = (ny_2 - ny_1)/nr_DIV_y;
long delta_nz = (nz_2 - nz_1)/nr_DIV_z;
long i, ii, j, k;
long nx_thr_a, nx_thr_b, ny_thr_a, ny_thr_b, nz_thr_a, nz_thr_b;
double eps_0_DIV_2 = (8.8541878176203898505365630317107e-12)/2.0; // [F/m]
double mu_0_DIV_2 = (1.2566370614359172953850573533118e-6)/2.0; // [H/m]
ii = 0;
nx_thr_a = nx_1;
for (i = 0; i < nr_DIV_x; i++)
{
if (i == nr_DIV_x-1)
{
nx_thr_b = nx_2;
}
else
{
nx_thr_b = nx_thr_a + delta_nx;
}
ny_thr_a = ny_1;
for (j = 0; j < nr_DIV_y; j++)
{
if (j == nr_DIV_y-1)
{
ny_thr_b = ny_2;
}
else
{
ny_thr_b = ny_thr_a + delta_ny;
}
nz_thr_a = nz_1;
for (k = 0; k < nr_DIV_z; k++)
{
if (k == nr_DIV_z-1)
{
nz_thr_b = nz_2;
}
else
{
nz_thr_b = nz_thr_a + delta_nz;
}
Data_W[ii].W = W;
Data_W[ii].Ex = Ex; Data_W[ii].Ey = Ey; Data_W[ii].Ez = Ez;
Data_W[ii].Hx = Hx; Data_W[ii].Hy = Hy; Data_W[ii].Hz = Hz;
Data_W[ii].Ind = Ind; Data_W[ii].Mat = Mat;
Data_W[ii].nx_W_a = nx_1;
Data_W[ii].ny_W_a = ny_1;
Data_W[ii].nz_W_a = nz_1;
Data_W[ii].eps_0_DIV_2 = eps_0_DIV_2;
Data_W[ii].mu_0_DIV_2 = mu_0_DIV_2;
Data_W[ii].nx_1 = nx_thr_a; Data_W[ii].nx_2 = nx_thr_b;
Data_W[ii].ny_1 = ny_thr_a; Data_W[ii].ny_2 = ny_thr_b;
Data_W[ii].nz_1 = nz_thr_a; Data_W[ii].nz_2 = nz_thr_b;
Data_W[ii].W_av = &local_W_aver[ii];
ii++;
nz_thr_a = nz_thr_b;
}
ny_thr_a = ny_thr_b;
}
nx_thr_a= nx_thr_b;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -