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

📄 thread_calc.h

📁 利用c++语言写的三维FDTD
💻 H
字号:
//////////////////////////////////////////////////////////////////////////
//Header for functions called by threads
//////////////////////////////////////////////////////////////////////////
#ifndef NULL
	#define NULL 0
#endif

#include <pthread.h> //for threads
#include "fdtd_3d_pml_ex.h"
#include "fdtd_3d_pml_ey.h"
#include "fdtd_3d_pml_ez.h"
#include "fdtd_3d_pml_hx.h"
#include "fdtd_3d_pml_hy.h"
#include "fdtd_3d_pml_hz.h"
#include "fdtd_3d.h" //contains the declaration of calc_W

#ifndef _Struct2_
	typedef struct
	{
		double ***E;   double ***H1;  double ***H2;  double ***F;
		double ***G;   long  ***Ind;    double *Ka;    double *Kb; 
		double *K_G_a; double *K_G_b; double *K_E_a; double *K_E_b;
		double *K_E_c; double *K_E_d; double inv_d1; double inv_d2; 
		long  nx_1; long  nx_2; long  ny_1; long  ny_2; long  nz_1; long  nz_2; 
		long  c_PML_x; long  c_PML_y; long  c_PML_z;
		double cnst;
	}Data_E_comp_PML;

	typedef struct
	{
		double ***E;   double ***H1;  double ***H2;    long  ***Ind;
		double *Ka;    double *Kb;    double inv_d1;   double inv_d2; 
		long  nx_1; long  nx_2; long  ny_1; long  ny_2; long  nz_1; long  nz_2; 
	}Data_E_comp;

	typedef struct
	{
		double ***H;   double ***E1;  double ***E2;  double ***B;
		long  ***Ind;    double *mu_r;  double *K_B_a; double *K_B_b; 
		double *K_H_a; double *K_H_b; double *K_H_c; double *K_H_d; 
		double coef_1; double coef_2; long  nx_1; long  nx_2; long  ny_1; 
		long  ny_2; long  nz_1; long  nz_2; long  c_PML_x; long  c_PML_y; long  c_PML_z;
		double cnst;
	}Data_H_comp_PML;

	typedef struct
	{
		double ***H;  double ***E1;   double ***E2;  long  ***Ind;  
		double *mu_r;  double coef_1;  double coef_2; long  nx_1; 
		long  nx_2; long  ny_1; long  ny_2; long  nz_1; long  nz_2;
	}Data_H_comp;

	typedef struct
	{
		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_1; long nx_2; long ny_1; long ny_2;
		long nz_1; long nz_2; double eps_0_DIV_2; double mu_0_DIV_2;
		double *W_av;
	}Data_En;

	#define _Struct2_
#endif

//Calc Ex
void *Thread_Calc_Ex_1(void *Dat);    void *Thread_Calc_Ex_2(void *Dat);
void *Thread_Calc_Ex_3(void *Dat);    void *Thread_Calc_Ex_4(void *Dat);
void *Thread_Calc_Ex_5(void *Dat);    void *Thread_Calc_Ex_6(void *Dat);
void *Thread_Calc_Ex_7(void *Dat);    void *Thread_Calc_Ex_8(void *Dat);
void *Thread_Calc_Ex_9(void *Dat);    void *Thread_Calc_Ex_10(void *Dat);
void *Thread_Calc_Ex_11(void *Dat);   void *Thread_Calc_Ex_12(void *Dat);
void *Thread_Calc_Ex_13(void *Dat);   void *Thread_Calc_Ex_14(void *Dat); //outside PML
void *Thread_Calc_Ex_15(void *Dat);   void *Thread_Calc_Ex_16(void *Dat);
void *Thread_Calc_Ex_17(void *Dat);   void *Thread_Calc_Ex_18(void *Dat);
void *Thread_Calc_Ex_19(void *Dat);   void *Thread_Calc_Ex_20(void *Dat);
void *Thread_Calc_Ex_21(void *Dat);   void *Thread_Calc_Ex_22(void *Dat);
void *Thread_Calc_Ex_23(void *Dat);   void *Thread_Calc_Ex_24(void *Dat);
void *Thread_Calc_Ex_25(void *Dat);   void *Thread_Calc_Ex_26(void *Dat);
void *Thread_Calc_Ex_27(void *Dat);

//Calc Ey
void *Thread_Calc_Ey_1(void *Dat);    void *Thread_Calc_Ey_2(void *Dat);
void *Thread_Calc_Ey_3(void *Dat);    void *Thread_Calc_Ey_4(void *Dat);
void *Thread_Calc_Ey_5(void *Dat);    void *Thread_Calc_Ey_6(void *Dat);
void *Thread_Calc_Ey_7(void *Dat);    void *Thread_Calc_Ey_8(void *Dat);
void *Thread_Calc_Ey_9(void *Dat);    void *Thread_Calc_Ey_10(void *Dat);
void *Thread_Calc_Ey_11(void *Dat);   void *Thread_Calc_Ey_12(void *Dat);
void *Thread_Calc_Ey_13(void *Dat);   void *Thread_Calc_Ey_14(void *Dat); //outside PML
void *Thread_Calc_Ey_15(void *Dat);   void *Thread_Calc_Ey_16(void *Dat);
void *Thread_Calc_Ey_17(void *Dat);   void *Thread_Calc_Ey_18(void *Dat);
void *Thread_Calc_Ey_19(void *Dat);   void *Thread_Calc_Ey_20(void *Dat);
void *Thread_Calc_Ey_21(void *Dat);   void *Thread_Calc_Ey_22(void *Dat);
void *Thread_Calc_Ey_23(void *Dat);   void *Thread_Calc_Ey_24(void *Dat);
void *Thread_Calc_Ey_25(void *Dat);   void *Thread_Calc_Ey_26(void *Dat);
void *Thread_Calc_Ey_27(void *Dat);

//Calc Ez
void *Thread_Calc_Ez_1(void *Dat);    void *Thread_Calc_Ez_2(void *Dat);
void *Thread_Calc_Ez_3(void *Dat);    void *Thread_Calc_Ez_4(void *Dat);
void *Thread_Calc_Ez_5(void *Dat);    void *Thread_Calc_Ez_6(void *Dat);
void *Thread_Calc_Ez_7(void *Dat);    void *Thread_Calc_Ez_8(void *Dat);
void *Thread_Calc_Ez_9(void *Dat);    void *Thread_Calc_Ez_10(void *Dat);
void *Thread_Calc_Ez_11(void *Dat);   void *Thread_Calc_Ez_12(void *Dat);
void *Thread_Calc_Ez_13(void *Dat);   void *Thread_Calc_Ez_14(void *Dat); //outside PML
void *Thread_Calc_Ez_15(void *Dat);   void *Thread_Calc_Ez_16(void *Dat);
void *Thread_Calc_Ez_17(void *Dat);   void *Thread_Calc_Ez_18(void *Dat);
void *Thread_Calc_Ez_19(void *Dat);   void *Thread_Calc_Ez_20(void *Dat);
void *Thread_Calc_Ez_21(void *Dat);   void *Thread_Calc_Ez_22(void *Dat);
void *Thread_Calc_Ez_23(void *Dat);   void *Thread_Calc_Ez_24(void *Dat);
void *Thread_Calc_Ez_25(void *Dat);   void *Thread_Calc_Ez_26(void *Dat);
void *Thread_Calc_Ez_27(void *Dat);

//Calc Hx
void *Thread_Calc_Hx_1(void *Dat);    void *Thread_Calc_Hx_2(void *Dat);
void *Thread_Calc_Hx_3(void *Dat);    void *Thread_Calc_Hx_4(void *Dat);
void *Thread_Calc_Hx_5(void *Dat);    void *Thread_Calc_Hx_6(void *Dat);
void *Thread_Calc_Hx_7(void *Dat);    void *Thread_Calc_Hx_8(void *Dat);
void *Thread_Calc_Hx_9(void *Dat);    void *Thread_Calc_Hx_10(void *Dat);
void *Thread_Calc_Hx_11(void *Dat);   void *Thread_Calc_Hx_12(void *Dat);
void *Thread_Calc_Hx_13(void *Dat);   void *Thread_Calc_Hx_14(void *Dat); //outside PML
void *Thread_Calc_Hx_15(void *Dat);   void *Thread_Calc_Hx_16(void *Dat);
void *Thread_Calc_Hx_17(void *Dat);   void *Thread_Calc_Hx_18(void *Dat);
void *Thread_Calc_Hx_19(void *Dat);   void *Thread_Calc_Hx_20(void *Dat);
void *Thread_Calc_Hx_21(void *Dat);   void *Thread_Calc_Hx_22(void *Dat);
void *Thread_Calc_Hx_23(void *Dat);   void *Thread_Calc_Hx_24(void *Dat);
void *Thread_Calc_Hx_25(void *Dat);   void *Thread_Calc_Hx_26(void *Dat);
void *Thread_Calc_Hx_27(void *Dat);

//Calc Hy
void *Thread_Calc_Hy_1(void *Dat);    void *Thread_Calc_Hy_2(void *Dat);
void *Thread_Calc_Hy_3(void *Dat);    void *Thread_Calc_Hy_4(void *Dat);
void *Thread_Calc_Hy_5(void *Dat);    void *Thread_Calc_Hy_6(void *Dat);
void *Thread_Calc_Hy_7(void *Dat);    void *Thread_Calc_Hy_8(void *Dat);
void *Thread_Calc_Hy_9(void *Dat);    void *Thread_Calc_Hy_10(void *Dat);
void *Thread_Calc_Hy_11(void *Dat);   void *Thread_Calc_Hy_12(void *Dat);
void *Thread_Calc_Hy_13(void *Dat);   void *Thread_Calc_Hy_14(void *Dat); //outside PML
void *Thread_Calc_Hy_15(void *Dat);   void *Thread_Calc_Hy_16(void *Dat);
void *Thread_Calc_Hy_17(void *Dat);   void *Thread_Calc_Hy_18(void *Dat);
void *Thread_Calc_Hy_19(void *Dat);   void *Thread_Calc_Hy_20(void *Dat);
void *Thread_Calc_Hy_21(void *Dat);   void *Thread_Calc_Hy_22(void *Dat);
void *Thread_Calc_Hy_23(void *Dat);   void *Thread_Calc_Hy_24(void *Dat);
void *Thread_Calc_Hy_25(void *Dat);   void *Thread_Calc_Hy_26(void *Dat);
void *Thread_Calc_Hy_27(void *Dat);

//Calc Hz
void *Thread_Calc_Hz_1(void *Dat);    void *Thread_Calc_Hz_2(void *Dat);
void *Thread_Calc_Hz_3(void *Dat);    void *Thread_Calc_Hz_4(void *Dat);
void *Thread_Calc_Hz_5(void *Dat);    void *Thread_Calc_Hz_6(void *Dat);
void *Thread_Calc_Hz_7(void *Dat);    void *Thread_Calc_Hz_8(void *Dat);
void *Thread_Calc_Hz_9(void *Dat);    void *Thread_Calc_Hz_10(void *Dat);
void *Thread_Calc_Hz_11(void *Dat);   void *Thread_Calc_Hz_12(void *Dat);
void *Thread_Calc_Hz_13(void *Dat);   void *Thread_Calc_Hz_14(void *Dat); //outside PML
void *Thread_Calc_Hz_15(void *Dat);   void *Thread_Calc_Hz_16(void *Dat);
void *Thread_Calc_Hz_17(void *Dat);   void *Thread_Calc_Hz_18(void *Dat);
void *Thread_Calc_Hz_19(void *Dat);   void *Thread_Calc_Hz_20(void *Dat);
void *Thread_Calc_Hz_21(void *Dat);   void *Thread_Calc_Hz_22(void *Dat);
void *Thread_Calc_Hz_23(void *Dat);   void *Thread_Calc_Hz_24(void *Dat);
void *Thread_Calc_Hz_25(void *Dat);   void *Thread_Calc_Hz_26(void *Dat);
void *Thread_Calc_Hz_27(void *Dat);

//Calc W
void *Thread_Calc_W(void *Dat);

⌨️ 快捷键说明

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