亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fdtd_3d.h

?? fdtd 3D xyzPML MPI OpenMP
?? H
字號:
#pragma once

#ifndef NULL
	#define NULL 0
#endif

#include "FDTD_1D_EH_PML_LOSS.h"

class CFDTD_3D
{
private:
	double pi, eps_0, mu_0;
	
	long ***Ind;  //indicates the material type in each FDTD cell
	
	double **Mat, *mu_r; //coefficients of the Lorentz materials
				  // - Mat[l][0] - nr of Lorentz terms
	              // - Mat[l][1] - eps_r_inf
				  // - Mat[l][2] - a(l) ; Mat[i][3] - delta(l); Mat[i][4] - omega_0(l)
				  // ... 
	              // - Mat[l][3*Mat[l][0]+3] - mu_r
	long n_Mat;   //number of materials present in the investigated geometry

	//MPI parameters
	int myrank, myrank_i, myrank_j, myrank_k;
	int iprocs, jprocs, kprocs;
	int iprocsMIN1, jprocsMIN1, kprocsMIN1;

	//OpenMP parameters
	int nr_threads;

	//the full size of the computational volume
	long nx, ny, nz;

	double time;
	double dx, dy, dz, dt;
	double inv_dx, inv_dy, inv_dz;

	long iter;
	long switch_off_time;

	//Decompositon of the geometry
	long ista, iend;
	long jsta, jend;
	long ksta, kend;
	long nlx, nly, nlz;

	//Initialization of the FDTD algorithm parameters
	double ***Ex, ***Gx, ***Fx;
	double **Hz_recv_j, **Hy_recv_k, **Ex_send_j, **Ex_send_k;

	double ***Ey, ***Gy, ***Fy;
	double **Hx_recv_k, **Hz_recv_i, **Ey_send_i, **Ey_send_k;
	
	double ***Ez, ***Gz, ***Fz;
	double **Hy_recv_i, **Hx_recv_j, **Ez_send_i, **Ez_send_j;
	
	double ***Hx, ***Bx; 
	double **Ey_recv_k, **Ez_recv_j, **Hx_send_j, **Hx_send_k;
	
	double ***Hy, ***By;
	double **Ez_recv_i, **Ex_recv_k, **Hy_send_i, **Hy_send_k;
	
	double ***Hz, ***Bz;
	double **Ex_recv_j, **Ey_recv_i, **Hz_send_i, **Hz_send_j;

	long ista_Ex, iend_Ex, jsta_Ex, jend_Ex, ksta_Ex, kend_Ex;
	long ista_Ey, iend_Ey, jsta_Ey, jend_Ey, ksta_Ey, kend_Ey;
	long ista_Ez, iend_Ez, jsta_Ez, jend_Ez, ksta_Ez, kend_Ez;
	long ista_Hx, iend_Hx, jsta_Hx, jend_Hx, ksta_Hx, kend_Hx;
	long ista_Hy, iend_Hy, jsta_Hy, jend_Hy, ksta_Hy, kend_Hy;
	long ista_Hz, iend_Hz, jsta_Hz, jend_Hz, ksta_Hz, kend_Hz;
	long nlx_Ex, nly_Ex, nlz_Ex, nlx_Ey, nly_Ey, nlz_Ey, nlx_Ez, nly_Ez, nlz_Ez;
	long nlx_Hx, nly_Hx, nlz_Hx, nlx_Hy, nly_Hy, nlz_Hy, nlx_Hz, nly_Hz, nlz_Hz;
	long nly_HxMIN1, nlz_HxMIN1, nlx_HyMIN1, nlz_HyMIN1, nlx_HzMIN1, nly_HzMIN1;

	//Coefficients containing the PML boundary parameters
	//Electric field
	double *K_Gx_a, *K_Gx_b;
	double *K_Ex_a, *K_Ex_b, *K_Ex_c, *K_Ex_d; 
	double *K_Gy_a, *K_Gy_b;
	double *K_Ey_a, *K_Ey_b, *K_Ey_c, *K_Ey_d; 
	double *K_Gz_a, *K_Gz_b;
	double *K_Ez_a, *K_Ez_b, *K_Ez_c, *K_Ez_d; 
	
	//Magnetic field
	double *K_Bx_a, *K_Bx_b;
	double *K_Hx_a, *K_Hx_b, *K_Hx_c, *K_Hx_d; 
	double *K_By_a, *K_By_b;
	double *K_Hy_a, *K_Hy_b, *K_Hy_c, *K_Hy_d; 
	double *K_Bz_a, *K_Bz_b;
	double *K_Hz_a, *K_Hz_b, *K_Hz_c, *K_Hz_d; 

	//Material parameters
	double *K_a, *K_b;

	//PML parametrers
	long nPML_x_1, nPML_x_2, nPML_y_1, nPML_y_2, nPML_z_1, nPML_z_2;

	int jel_plane_wave; //0 - point source; 1- plane wave source

	//number of point sources present in the computational domain
	double **Param_ptSource;
	long **Coord_ptSource;
	long n_Coord_ptSource;
	int source_type;
	int pt_source_Ex, pt_source_Ey, pt_source_Ez;
	int pt_source_Hx, pt_source_Hy, pt_source_Hz;
	double constORalfa;

	//plane wave excitation with total field - scatterd field formulation
	CFDTD_1D_EH_PML_LOSS fdtd_1D;
	long n_1D, n_1D_MIN_1, nPML_1D;
	double d_1D;

	//the interface between the total field-scattered field zone
	double ct_Ex_1, ct_Ex_2, ct_Ey_1, ct_Ey_2, ct_Ez_1, ct_Ez_2;
	double ct_Hx_1, ct_Hx_2, ct_Hy_1, ct_Hy_2, ct_Hz_1, ct_Hz_2;

	//the incident field for total field scattered field formulation
	double *E_1D, *H_1D; 
	double *ll_1D_E, *ll_1D_H;

	//the direction of propagation and the polarization of the plane wave
	double teta;  //angle relative to +z axis 0 < teta < 180
	double phi;   //angle relative to +x axis 0 <= phi < 360
	double gamma; //polarization
	
	//the recuired incident magnetic fields to compute the electric field components
	double **Hz_i0, **Hy_i0, **Hz_i1, **Hy_i1;
	double **Hz_j0, **Hx_j0, **Hz_j1, **Hx_j1;
	double **Hy_k0, **Hx_k0, **Hy_k1, **Hx_k1;
	double **face_Hz_i0, **face_Hy_i0, **face_Hz_i1, **face_Hy_i1;
	double **face_Hz_j0, **face_Hx_j0, **face_Hz_j1, **face_Hx_j1;
	double **face_Hy_k0, **face_Hx_k0, **face_Hy_k1, **face_Hx_k1;

	//the recuired incident electric fields to compute the magnetic field components
	double **Ey_i0, **Ez_i0, **Ey_i1, **Ez_i1;
	double **Ex_j0, **Ez_j0, **Ex_j1, **Ez_j1;
	double **Ex_k0, **Ey_k0, **Ex_k1, **Ey_k1;
	double **face_Ey_i0, **face_Ez_i0, **face_Ey_i1, **face_Ez_i1;
	double **face_Ex_j0, **face_Ez_j0, **face_Ex_j1, **face_Ez_j1;
	double **face_Ex_k0, **face_Ey_k0, **face_Ex_k1, **face_Ey_k1;

	long n_TS; //the size of the Scattered Field zone
	int *jel_TS_planes, jel_TS;
	//the position of the Total Field - Scattered Field region 
	long n_TS_xa, n_TS_xb, n_TS_ya, n_TS_yb,n_TS_za, n_TS_zb;
	//the local position of the Total Field - Scattered Field region 
	long n_TS_xa_Loc, n_TS_xb_Loc, n_TS_ya_Loc, n_TS_yb_Loc, n_TS_za_Loc, n_TS_zb_Loc;
	long n_TS_xa_Glob, n_TS_ya_Glob, n_TS_za_Glob;
	long ista_TS,  jsta_TS,  ksta_TS; //, iend_TS, jend_TS, kend_TS;
	long l_TS_x, l_TS_y, l_TS_z;
	long l_y_Loc_HzEy_i, l_z_Loc_HzEy_i, l_y_Loc_HyEz_i, l_z_Loc_HyEz_i;
    long l_x_Loc_HzEx_j, l_z_Loc_HzEx_j, l_x_Loc_HxEz_j, l_z_Loc_HxEz_j;
	long l_x_Loc_HyEx_k, l_y_Loc_HyEx_k, l_x_Loc_HxEy_k, l_y_Loc_HxEy_k;

	//Auxiliary parameters for the Total Field - Scatterd Field formulation
	long n_TS_xa_Loc_MIN_1, n_TS_ya_Loc_MIN_1, n_TS_za_Loc_MIN_1;
	double cos_teta, sin_teta, cos_phi, sin_phi, sin_gamma, cos_gamma;
	long lyLocORlzLoc_HzEy_i, lyLocORlzLoc_HyEz_i;
	long lxLocORlzLoc_HzEx_j, lxLocORlzLoc_HxEz_j;
	long lxLocORlyLoc_HyEx_k, lxLocORlyLoc_HxEy_k;
	long l_x_Loc, l_y_Loc, l_z_Loc;
	long n_TS_xb_Loc_HzEx_j, n_TS_zb_Loc_HzEx_j, n_TS_xb_Loc_HyEx_k, n_TS_yb_Loc_HyEx_k;
	long n_TS_yb_Loc_HzEy_i, n_TS_zb_Loc_HzEy_i, n_TS_xb_Loc_HxEy_k, n_TS_yb_Loc_HxEy_k;
	long n_TS_yb_Loc_HyEz_i, n_TS_zb_Loc_HyEz_i, n_TS_xb_Loc_HxEz_j, n_TS_zb_Loc_HxEz_j;
	
	//the coordinates of the followed field components
	long **Ind_Foll; 
	 //number of the followed points and the number of iterations
	long length_Ind_Foll, n_tot;
	//stores the followed field components
	double **Hx_Foll, **Hy_Foll, **Hz_Foll, **Ex_Foll, **Ey_Foll, **Ez_Foll;

	//to save the field components
	long n_x_a, n_x_b, n_y_a, n_y_b, n_z_a, n_z_b; //identify the saved volume
	long n_x_b1, n_y_b1, n_z_b1;
	long nx_yz, ny_xz, nz_xy;
	char *path_name_Ex, *path_name_Ey, *path_name_Ez;
	char *path_name_Hx, *path_name_Hy, *path_name_Hz;
	int jel_Save_Slice;
	long nr_save;
	long saveFROMinst, saveTOinst;

public:
	CFDTD_3D(void);
	~CFDTD_3D(void);

	void Init_nr_THR(int nr_Threads);
	
	int Init(long ***&Index, long iSta, long iEnd, long jSta, long jEnd, long kSta, 
			 long kEnd, long nLx, long nLy, long nLz, long Nx, long Ny, long Nz,
			 int myRank, int myRanki, int myRankj, int myRankk, int iProcs, 
			 int jProcs, int kProcs, double **&Mater, long nMat, long npml_x1, 
			 long npml_x2, long npml_y1, long npml_y2, long npml_z1, 
			 long npml_z2, double d_x, double d_y, double d_z, double d_t);

	int Init_Followed(long **Ind_Followed, long nFoll, long n_t);

	void Set_Data_Followed(long n_t);

	void Get_Data_Followed(double **&e_x, double **&e_y, double **&e_z, 
						   double **&h_x, double **&h_y, double **&h_z);

	int Init_Save_FieldSlices(long nX_yz, long nY_xz, long nZ_xy,
							  char *path_name_ex, char *path_name_ey, char *path_name_ez,
							  char *path_name_hx, char *path_name_hy, char *path_name_hz);

	void Init_ptSource(long **Coord, long nCoord, double **Par_Excit, int s_type,
					   int Pt_Source_Ex, int Pt_Source_Ey, int Pt_Source_Ez,
	                   int Pt_Source_Hx, int Pt_Source_Hy, int Pt_Source_Hz,
					   long switch_OFF_time);


	int Init_TS(double Teta, double Phi, double Gamma, long N_TS,
				long nPML_1D, int source_type, double X0, double t0,
				double tw, double omega, double phase, double PML_eps_r_1D,
				double PML_mu_r_1D);

	void Get_SendRecv(double **&hz_recv_j, double **&hy_recv_k, 
					  double **&ex_send_j, double **&ex_send_k,
					  double **&hx_recv_k, double **&hz_recv_i, 
					  double **&ey_send_i, double **&ey_send_k,
					  double **&hy_recv_i, double **&hx_recv_j,
					  double **&ez_send_i, double **&ez_send_j,
					  double **&ey_recv_k, double **&ez_recv_j,
					  double **&hx_send_j, double **&hx_send_k,
					  double **&ez_recv_i, double **&ex_recv_k, 
					  double **&hy_send_i, double **&hy_send_k,
					  double **&ex_recv_j, double **&ey_recv_i, 
					  double **&hz_send_i, double **&hz_send_j);

	int Interp_H_TS();
	int Interp_E_TS();

	int Init_PML_Par_x(double eps_r_x_1, double mu_r_x_1, double eps_r_x_2, 
					   double mu_r_x_2);
	int Init_PML_Par_y(double eps_r_y_1, double mu_r_y_1, double eps_r_y_2, 
					   double mu_r_y_2);
	int Init_PML_Par_z(double eps_r_z_1, double mu_r_z_1, double eps_r_z_2, 
					   double mu_r_z_2);

	void Get_jel_TS(int *jelTS); 

	void Set_Time(double Time, long Iter); 

	void Calc_Ex(long  nlx, long  nly, long  nlz);
	void Calc_Ey(long  nlx, long  nly, long  nlz);
	void Calc_Ez(long  nlx, long  nly, long  nlz);
	void Calc_Hx(long  nlx, long  nly, long  nlz);
	void Calc_Hy(long  nlx, long  nly, long  nlz);
	void Calc_Hz(long  nlx, long  nly, long  nlz);

	void Update_Ex_send();
	void Update_Ey_send();
	void Update_Ez_send();
	void Update_Hx_send();
	void Update_Hy_send();
	void Update_Hz_send();

	int Save_FieldSlices(long iter);

	int Load_FGE_BH(char *Path, long *num_iter_0, double *time, long *iter_nr_Save);
	int Save_FGE_BH(char *Path, long iter, double time, long iter_nr_Save);

private:
	//Point Source
	void PtSource_J(double ***&xx, double time);

	int Interp_1D(double *x, int length_x, double *f, double *x_i, int length_x_i, double *g);
	
	//TF_SF Ex
	void TS_Ex_j0();
	void TS_Ex_j1();
	void TS_Ex_k0();
	void TS_Ex_k1();

	//TF_SF Ey
	void TS_Ey_i0(); 
	void TS_Ey_i1(); 
	void TS_Ey_k0(); 
	void TS_Ey_k1();

	//TF_SF Ez
	void TS_Ez_i0(); 
	void TS_Ez_i1(); 
	void TS_Ez_j0(); 
	void TS_Ez_j1();

	//TF_SF Hx
	void TS_Hx_j0(); 
	void TS_Hx_j1(); 
	void TS_Hx_k0(); 
	void TS_Hx_k1();

	//TF_SF Hy
	void TS_Hy_i0();
	void TS_Hy_i1(); 
	void TS_Hy_k0(); 
	void TS_Hy_k1();

	//TF_SF Hz
	void TS_Hz_i0();
	void TS_Hz_i1(); 
	void TS_Hz_j0(); 
	void TS_Hz_j1();

	//Compute the phase velocity
	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 Free_Mem();
	
	void ErrorMessage(int er, int myrank, char* text);
};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区久久| 国产精品一区免费在线观看| 久久青草国产手机看片福利盒子| av欧美精品.com| 秋霞午夜鲁丝一区二区老狼| 国产精品久久久久三级| 3d动漫精品啪啪1区2区免费| 成人国产电影网| 免费人成网站在线观看欧美高清| 最新欧美精品一区二区三区| 精品免费99久久| 欧美日韩国产乱码电影| 成人高清av在线| 韩国v欧美v亚洲v日本v| 婷婷中文字幕一区三区| 欧美国产日韩在线观看| 久久综合999| 91精品国产品国语在线不卡| 93久久精品日日躁夜夜躁欧美| 国产尤物一区二区| 蜜桃一区二区三区在线观看| 亚洲国产成人91porn| 亚洲视频香蕉人妖| 亚洲国产精品av| 久久久综合视频| 精品久久久久久久久久久院品网| 欧美日韩1区2区| 欧美亚洲日本国产| 99视频一区二区| www.66久久| 成人av先锋影音| 丰满少妇久久久久久久| 国产成人在线视频播放| 韩国毛片一区二区三区| 久久99精品国产| 久久精品国产在热久久| 美女www一区二区| 麻豆精品视频在线| 麻豆91在线观看| 精品在线观看免费| 国内精品久久久久影院薰衣草 | 久久久久久久久久久电影| 欧美成人精品高清在线播放 | 五月综合激情日本mⅴ| 国产精品乱码一区二区三区软件 | 99久久国产综合精品色伊| 国产精品69毛片高清亚洲| 国产伦精品一区二区三区免费迷 | 国产精品久久久久久福利一牛影视| 26uuu精品一区二区三区四区在线| 日韩你懂的在线播放| 亚洲精品一区二区三区影院 | 日韩不卡一区二区三区| 日韩av电影免费观看高清完整版 | 亚洲午夜久久久久久久久久久| 国产日韩精品久久久| 国产视频一区二区在线观看| 欧美国产日本韩| 亚洲精品成人悠悠色影视| 亚洲午夜精品久久久久久久久| 亚洲成人精品在线观看| 久久国产精品99久久久久久老狼| 精品一区二区三区在线播放| 国产91精品一区二区麻豆网站| 99国产精品国产精品久久| 一本大道av一区二区在线播放| 欧美日韩dvd在线观看| 欧美r级在线观看| 亚洲国产精品av| 亚洲大片在线观看| 毛片不卡一区二区| 99re在线精品| 欧美精品99久久久**| 欧美大片国产精品| 国产精品拍天天在线| 亚洲国产欧美在线| 日本va欧美va欧美va精品| 免费精品99久久国产综合精品| 国产乱理伦片在线观看夜一区| 成人精品国产一区二区4080| 欧美亚洲动漫另类| 精品国产不卡一区二区三区| 国产精品国产三级国产普通话99| 亚洲欧美一区二区三区极速播放 | 久久国产精品色婷婷| 99久久精品一区| 欧美一级日韩不卡播放免费| 中文字幕在线观看不卡视频| 亚洲成人av一区二区三区| 国产成人av一区二区| 欧美三级电影网站| 欧美国产一区视频在线观看| 日本中文在线一区| 91婷婷韩国欧美一区二区| 欧美一级理论性理论a| 亚洲欧美综合网| 久热成人在线视频| 在线观看欧美黄色| 亚洲国产成人一区二区三区| 天堂一区二区在线免费观看| 播五月开心婷婷综合| 欧美大片在线观看| 亚洲综合在线观看视频| 国产成人精品免费| 日韩女优毛片在线| 五月婷婷综合网| 99久久久国产精品| 国产日韩欧美亚洲| 另类欧美日韩国产在线| 在线视频国内自拍亚洲视频| 欧美国产精品中文字幕| 黄色资源网久久资源365| 欧美日韩国产乱码电影| 一区二区三区在线影院| 亚洲美女电影在线| 色婷婷国产精品久久包臀| 精品日韩99亚洲| 日韩精品一二三| 色综合久久综合网| 国产精品久久久久久久久果冻传媒| 久久精品国产久精国产| 欧美日韩成人综合| 亚洲福利电影网| 在线亚洲欧美专区二区| 中文字幕一区二区三区视频 | 国内外成人在线视频| 欧美人牲a欧美精品| 一区二区三区四区不卡视频| av在线不卡电影| 国产精品无码永久免费888| 国产精品亚洲第一区在线暖暖韩国| 精品少妇一区二区| 美女www一区二区| 欧美成人三级电影在线| 久久99精品久久久| 26uuu久久综合| 国产一区激情在线| 久久日韩粉嫩一区二区三区| 国产精品一二三区在线| 国产日产精品1区| 成人在线视频一区| 中文字幕精品在线不卡| 不卡在线观看av| 亚洲三级理论片| 91理论电影在线观看| 一区二区三区中文字幕电影| 欧美日韩色综合| 青青草原综合久久大伊人精品优势 | 欧美成人在线直播| 卡一卡二国产精品| 国产欧美日韩在线看| 国产大片一区二区| 中文字幕av一区二区三区高 | 精品一区二区三区免费播放| 精品国产伦一区二区三区观看方式 | 91麻豆精品国产自产在线观看一区 | 久久精品视频免费| 99久久99久久免费精品蜜臀| 一区二区三区在线视频免费 | 国产网红主播福利一区二区| 成人av中文字幕| 一区二区免费在线| 91麻豆精品国产91久久久使用方法 | 国产不卡视频在线播放| 1000精品久久久久久久久| 欧美日免费三级在线| 日韩电影在线一区| 国产免费成人在线视频| 在线欧美日韩国产| 丝袜美腿亚洲一区二区图片| 欧美精品一区二| 99久久精品一区| 日韩国产欧美视频| 国产日产精品1区| 欧美日韩亚洲不卡| 国产精品香蕉一区二区三区| 亚洲女女做受ⅹxx高潮| 日韩一区二区三| 成人午夜在线免费| 天天色天天操综合| 亚洲国产经典视频| 欧美精选在线播放| www.久久久久久久久| 美女国产一区二区三区| 亚洲精品视频免费看| 精品久久久久香蕉网| 色94色欧美sute亚洲线路二| 精品在线你懂的| 亚洲一区二区三区激情| 国产色婷婷亚洲99精品小说| 欧美男人的天堂一二区| 丁香激情综合五月| 日韩国产一二三区| 综合av第一页| www久久久久| 欧美日韩国产一级片| 风间由美一区二区三区在线观看| 日韩成人dvd| 亚洲精品一二三四区| 欧美经典三级视频一区二区三区|