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

📄 fdtd_1d_eh_pml_loss.h

📁 fdtd 3D xyzPML MPI OpenMP
💻 H
字号:
#pragma once

#ifndef NULL
	#define NULL 0
#endif

class CFDTD_1D_EH_PML_LOSS
{
private:
	double pi, eps_0, mu_0;
	
	double *F_2, *E_1D, *H_1D;//*F_1, 
	double *K_F_a, *K_F_b, *K_H_a, *K_H_b;
	
	double K_E_a, K_E_b, K_H;
	
	long n; //Dimension of the simulation space
	double dt, d, inv_d;
	long n_PML, n_TS_a, n_TS_b;
	long n_MIN_n_PML, n_PML_MIN_1, n_MIN_n_PML_MIN_1, n_MIN_1;

	double eps_r, mu_r, sigma;

	double E0, omega, phase, t0, tw, alfa;
	double beta, eta;
	int Source_Type;

	int jel_source; // 1 - Gauss, 2 - Sin, 3 - SinGauss

	int num_threads;

public:
	CFDTD_1D_EH_PML_LOSS(void);
	~CFDTD_1D_EH_PML_LOSS(void);

	#ifdef _OPENMP
		void Init_nr_THR(int nr_threads);
	#endif

	bool Init(long N, long n_pml, double d_t, double D, double eps_r, double mu_r, 
		      double sigma);

	void Init_PML_Param(void);

	void Init_Sin_Source(double E_0, double om, double Phase);
	void Init_Gauss_Source(double E_0, double t_0, double t_w);
	void Init_GaussSin_Source(double E_0, double om, double Phase, double t_0, double t_w);

	void Calc_E(double time);
	void Calc_H();

	void Get_Data(double *&e, double *&h);

	void Free_Mem(void);

	int Save_FDTD_1D_Workspace(char *path);
	int Load_FDTD_1D_Workspace(char *path);
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -