⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init_thread_calc_data.cpp

📁 利用c++语言写的三维FDTD
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#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 + -