📄 fdtd_3d.h
字号:
//set the PML parameters
void Init_PML_Par_x(double *K_Ey_a, double *K_Ey_b, double *K_Gz_a, double *K_Gz_b,
double *K_Hx_c, double *K_Hx_d, double *K_Ex_c, double *K_Ex_d,
double *K_Hy_a, double *K_Hy_b, double *K_Bz_a, double *K_Bz_b,
double eps_r_x, double mu_r_x, long nPML_x, double dx, double dt);
void Init_PML_Par_y(double *K_Gx_a, double *K_Gx_b, double *K_Ez_a, double *K_Ez_b,
double *K_Hy_c, double *K_Hy_d, double *K_Ey_c, double *K_Ey_d,
double *K_Bx_a, double *K_Bx_b, double *K_Hz_a, double *K_Hz_b,
double eps_r_y, double mu_r_y, long nPML_y, double dy, double dt);
void Init_PML_Par_z(double *K_Ex_a, double *K_Ex_b, double *K_Gy_a, double *K_Gy_b,
double *K_Hz_c, double *K_Hz_d, double *K_Ez_c, double *K_Ez_d,
double *K_Hx_a, double *K_Hx_b, double *K_By_a, double *K_By_b,
double eps_r_z, double mu_r_z, long nPML_z, double dz, double dt);
//point source
void ptSource_J(double ***&xx, double **&Par_ptS, long **Coord_ptSource, double time,
double dt, long n_ptSource, int source_type, double const_alfa);
//total field scattered field formulation
void TS_Ey_ydir(double ***Ey, long ***Ind, double *K_b, double *Hx_1D, long n_TS_xa,
long n_TS_xb, long n_TS_ya, long n_TS_ybMIN1, long n_TS_za, long n_TS_zbPL1,
long n_TS_yaMIN1, double inv_dz);
void TS_Ez_ydir(double ***Ez, long ***Ind, double *K_b, double *Hx_1D, long n_TS_xa,
long n_TS_xb, long n_TS_ya, long n_TS_yb, long n_TS_za, long n_TS_zb,
long n_TS_ybMINn_TS_yaPL1, double inv_dy);
void TS_Hx_ydir(double ***Hx, long ***Ind, double **Mat, double *Ez_1D, long n_TS_xa,
long n_TS_xb, long n_TS_yaMIN1, long n_TS_yb, long n_TS_za, long n_TS_zb,
long n_TS_ybMINn_TS_yaPL1, double coef_TS_Hx);
void TS_Hy_ydir(double ***Hy, long ***Ind, double **Mat, double *Ez_1D, long n_TS_xaMIN1,
long n_TS_xb, long n_TS_ya, long n_TS_yb, long n_TS_za, long n_TS_zb,
long n_TS_yaMIN1, double coef_TS_Hy);
int Init_TS_Param(double **ll_1D_E, double **ll_1D_H,
double ***Hz_i0, double ***Hy_i0, double ***Hz_i1, double ***Hy_i1,
double ***Hz_j0, double ***Hx_j0, double ***Hz_j1, double ***Hx_j1,
double ***Hy_k0, double ***Hx_k0, double ***Hy_k1, double ***Hx_k1,
double ***face_Hz_i0, double ***face_Hy_i0, double ***face_Hz_i1,
double ***face_Hy_i1, double ***face_Hz_j0, double ***face_Hx_j0,
double ***face_Hz_j1, double ***face_Hx_j1, double ***face_Hy_k0,
double ***face_Hx_k0, double ***face_Hy_k1, double ***face_Hx_k1,
double ***Ey_i0, double ***Ez_i0, double ***Ey_i1, double ***Ez_i1,
double ***Ex_j0, double ***Ez_j0, double ***Ex_j1, double ***Ez_j1,
double ***Ex_k0, double ***Ey_k0, double ***Ex_k1, double ***Ey_k1,
double ***face_Ey_i0, double ***face_Ez_i0, double ***face_Ey_i1, double ***face_Ez_i1,
double ***face_Ex_j0, double ***face_Ez_j0, double ***face_Ex_j1, double ***face_Ez_j1,
double ***face_Ex_k0, double ***face_Ey_k0, double ***face_Ex_k1, double ***face_Ey_k1,
long l_1D, long l_x, long l_y, long l_z, long n_PML, double teta, double phi,
double gamma, double dx, double dy, double dz, double d, double dt,
double &ct_Ex_1, double &ct_Ex_2, double &ct_Ey_1, double &ct_Ey_2,
double &ct_Ez_1, double &ct_Ez_2, double &ct_Hx_1, double &ct_Hx_2,
double &ct_Hy_1, double &ct_Hy_2, double &ct_Hz_1, double &ct_Hz_2);
int phase_velocity(double dx, double dy, double dz, double dt,
double eps_r, double mu_r, double om,
double teta, double phi, double *phase_vel);
void TS_Ex(double ***Ex, long ***Ind, double *K_b, double **Hz_j0, double **Hz_j1,
double **Hy_k0, double **Hy_k1, double ct_Ex_1, double ct_Ex_2,
long n_TS_xa, long n_TS_xb, long n_TS_ya, long n_TS_yb, long n_TS_za,
long n_TS_zb);
void TS_Ey(double ***Ey, long ***Ind, double *K_b, double **Hz_i0, double **Hz_i1,
double **Hx_k0, double **Hx_k1, double ct_Ey_1, double ct_Ey_2,
long n_TS_xa, long n_TS_xb, long n_TS_ya, long n_TS_yb, long n_TS_za,
long n_TS_zb);
void TS_Ez(double ***Ez, long ***Ind, double *K_b, double **Hy_i0, double **Hy_i1,
double **Hx_j0, double **Hx_j1, double ct_Ez_1, double ct_Ez_2,
long n_TS_xa, long n_TS_xb, long n_TS_ya, long n_TS_yb, long n_TS_za,
long n_TS_zb);
void TS_Hx(double ***Hx, long ***Ind, double **Mat, double **Ez_j0, double **Ez_j1,
double **Ey_k0, double **Ey_k1, double ct_Hx_1, double ct_Hx_2,
long n_TS_xa, long n_TS_xb, long n_TS_ya, long n_TS_yb, long n_TS_za,
long n_TS_zb, long n_TS_ya_MIN_1, long n_TS_za_MIN_1);
void TS_Hy(double ***Hy, long ***Ind, double **Mat, double **Ez_i0, double **Ez_i1,
double **Ex_k0, double **Ex_k1, double ct_Hy_1, double ct_Hy_2,
long n_TS_xa, long n_TS_xb, long n_TS_ya, long n_TS_yb, long n_TS_za,
long n_TS_zb, long n_TS_xa_MIN_1, long n_TS_za_MIN_1);
void TS_Hz(double ***Hz, long ***Ind, double **Mat, double **Ey_i0, double **Ey_i1,
double **Ex_j0, double **Ex_j1, double ct_Hz_1, double ct_Hz_2,
long n_TS_xa, long n_TS_xb, long n_TS_ya, long n_TS_yb, long n_TS_za,
long n_TS_zb, long n_TS_xa_MIN_1, long n_TS_ya_MIN_1);
//the followed field components
void Set_Data_Followed(double ***Ex, double ***Ey, double ***Ez,
double ***Hx, double ***Hy, double ***Hz,
double **Ex_foll, double **Ey_foll, double **Ez_foll,
double **Hx_foll, double **Hy_foll, double **Hz_foll,
long **Ind_Foll, long length_Ind_Foll, long n_t);
//the electromagnetic energy
void calc_W(double ***W, double ***Ex, double ***Ey, double ***Ez, double ***Hx,
double ***Hy, double ***Hz, long ***Ind, double **Mat, long nx_W_a,
long ny_W_a, long nz_W_a, long nx_a, long nx_b, long ny_a, long ny_b,
long nz_a, long nz_b, double eps_0_DIV_2, double mu_0_DIV_2, double *W_av);
void aver_W_xz_t(double ***W, long nx_W, long ny_W, long nz_W, double *W_aver_xz,
double *W_aver_xzt, double Surf_xz);
int aver_xyz(double ***X, long nx_a_av, long nx_b_av, long ny_a_av, long ny_b_av,
long nz_a_av, long nz_b_av, double *X_av, double Vol);
//average over the Wigner cell to compute the specular reflection component
int aver_xyz_WignerC(double ***X, long **Mask_Wigner, long n_Mask_Wigner, double *X_av);
//average over the Wigner cell to compute the Bragg diffraction component
int aver_Bragg_WignerC(double ***X, long **Mask_Wigner, long n_Mask_Wigner,
double kx, double ky, double kz, double Gx, double Gy,
double Gz, double *X_avBr_re, double *X_avBr_im,
double dx, double dy, double dz);
int aver_absEorH(double ***Ux, double ***Uy, double ***Uz, long nx_a_av, long nx_b_av, long ny_a_av, long ny_b_av,
long nz_a_av, long nz_b_av, double *U_av, double Vol);
int fourier_transf_vol(double ***U, long nx_a_f, long nx_b_f, long ny_a_f, long ny_b_f,
long nz_a_f, long nz_b_f, double **FrT_re, double **FrT_im,
double *FrT_om, long n_FrT_om, double time);
int interp_1D(double *x, int length_x, double *f, double *x_i, int length_x_i, double *g);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -