📄 alloc_save_load_field_thread.cpp
字号:
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;
}
////////////////////////////////////////////////////////////////////
//Collect the information - Hz field
////////////////////////////////////////////////////////////////////
void Init_Alloc_BzHz(Allocate_H_comp *Allocate_BH_z, double ***&Bz_1, double ***&Bz_2,
double ***&Bz_3, double ***&Bz_4, double ***&Bz_5, double ***&Bz_6,
double ***&Bz_7, double ***&Bz_8, double ***&Bz_9, double ***&Bz_10,
double ***&Bz_12, double ***&Bz_16, double ***&Bz_18, double ***&Bz_19,
double ***&Bz_20, double ***&Bz_21, double ***&Bz_22, double ***&Bz_23,
double ***&Bz_24, double ***&Bz_25, double ***&Bz_26, double ***&Bz_27,
double ***&Hz, 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)
{
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;
}
////////////////////////////////////////////////////////////////////
//Allocate memory for F G E -x -y -z
////////////////////////////////////////////////////////////////////
void *Thread_Alloc_FGE(void *Dat)
{
Allocate_E_comp *data = (Allocate_E_comp *)Dat;
long i;
for (i = 0; i < 43; i++)
{
*data->A[i] = Init_Matrix_3D<double>(data->size[i][0],data->size[i][1],
data->size[i][2]);
if(!*data->A[i])
{
data->er = 1;
pthread_exit(NULL);
}
}
pthread_exit(NULL);
return(NULL);//to disable the worning
}
////////////////////////////////////////////////////////////////////
//Allocate memory for B H -x -y -z
////////////////////////////////////////////////////////////////////
void *Thread_Alloc_BH(void *Dat)
{
Allocate_H_comp *data = (Allocate_H_comp *)Dat;
long i;
for (i = 0; i < 23; i++)
{
*data->A[i] = Init_Matrix_3D<double>(data->size[i][0],data->size[i][1],
data->size[i][2]);
if(!*data->A[i])
{
data->er = 1;
pthread_exit(NULL);
}
}
pthread_exit(NULL);
return(NULL);//to disable the worning
}
////////////////////////////////////////////////////////////////////
//Init save data xy slice
////////////////////////////////////////////////////////////////////
void Init_Thread_Save_Field_Slice(Data_Save_Slice *Data, double ***XX, long n1_a,
long n1_b, long n2_a, long n2_b, long n_slice,
char *file_name, long nr_DIV_1, long nr_DIV_2)
{
long delta_n1 = (n1_b - n1_a)/nr_DIV_1;
long delta_n2 = (n2_b - n2_a)/nr_DIV_2;
long i, ii, j;
long n1_thr_a, n1_thr_b, n2_thr_a, n2_thr_b;
ii = 0;
n1_thr_a = n1_a;
for (i = 0; i < nr_DIV_1; i++)
{
if (i == nr_DIV_1-1)
{
n1_thr_b = n1_b;
}
else
{
n1_thr_b = n1_thr_a + delta_n1;
}
n2_thr_a = n2_a;
for (j = 0; j < nr_DIV_2; j++)
{
if (j == nr_DIV_2 - 1)
{
n2_thr_b = n2_b;
}
else
{
n2_thr_b = n2_thr_a + delta_n2;
}
Data[ii].F_comp = XX;
Data[ii].n_1_a = n1_thr_a;
Data[ii].n_1_b = n1_thr_b;
Data[ii].n_2_a = n2_thr_a;
Data[ii].n_2_b = n2_thr_b;
Data[ii].n_3_slice = n_slice;
Data[ii].path_file_name = file_name;
ii++;
n2_thr_a = n2_thr_b;
}
n1_thr_a= n1_thr_b;
}
}
///////////////////////////////////////////////////////////////////////////////////////
//Save xy slice from 3D data in ascii file
///////////////////////////////////////////////////////////////////////////////////////
void *Thread_Save_Field_xy(void *Dat)
{
Data_Save_Slice *data = (Data_Save_Slice *)Dat;
save_3D_xy(data->F_comp,data->n_1_a,data->n_1_b,data->n_2_a,data->n_2_b,
data->n_3_slice,data->iter,data->path_file_name);
pthread_exit(NULL);
return(NULL);//to disable the worning
}
///////////////////////////////////////////////////////////////////////////////////////
//Save yz slice from 3D data in ascii file
///////////////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -