fdtd_1d_eh_pml_loss.h

来自「利用c++语言写的三维FDTD」· C头文件 代码 · 共 59 行

H
59
字号
#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 + =
减小字号Ctrl + -
显示快捷键?