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

📄 alloc_save_load_field_thread.h

📁 利用c++语言写的三维FDTD
💻 H
字号:
//interface for parallel data saving with threads
#include <pthread.h> //for threads
#include <iostream>
#include "Load_Save_File_Data.h"

#ifndef _Struct1_
	///////////////////////////////////////////////////////////////////////////
	//Data structure definitions
	///////////////////////////////////////////////////////////////////////////
	typedef struct 
	{
		double ****A[43]; //the adresses of F G E
		long size[43][3]; //the x y and z dimesion
		char name[43][6]; //the name F(xyz)_1, G(xyz)_1, ... E(xyz)
		char path[128];   //the path where to save the workspace data 
		                  //in case of exceeding the time limit
		int er;		      //for error handling
	}Allocate_E_comp;

	typedef struct 
	{
		double ****A[23]; //the adresses of B H
		long size[23][3]; //the x y and z dimesion
		char name[23][6]; //the name B(xyz)_1,...  H(xyz)
		char path[128];   //the path where to save the workspace data 
		                  //in case of exceeding the time limit
		int er;		      //for error handling
	}Allocate_H_comp;

	typedef struct
	{
		double ***F_comp;   
		long  n_1_a; long  n_1_b; 
		long  n_2_a; long  n_2_b; 
		long  n_3_slice;
		long iter;
		char *path_file_name;
	}Data_Save_Slice;

	#define _Struct1_
#endif

//Collect the information for workspace data
void Init_Alloc_FxGxEx(Allocate_E_comp *Allocate_FGE_x, double ***&Fx_1,  double ***&Gx_1,
				  double ***&Fx_2,  double ***&Gx_2, double ***&Fx_3,  double ***&Gx_3,  
				  double ***&Fx_4,  double ***&Fx_5, double ***&Fx_6,  double ***&Fx_7,  
				  double ***&Gx_7,  double ***&Fx_8,  double ***&Gx_8,  double ***&Fx_9,
				  double ***&Gx_9,  double ***&Fx_10, double ***&Gx_10, double ***&Fx_11, 
				  double ***&Fx_12, double ***&Gx_12, double ***&Fx_13, double ***&Fx_15, 
				  double ***&Fx_16, double ***&Gx_16, double ***&Fx_17, double ***&Fx_18, 
				  double ***&Gx_18, double ***&Fx_19, double ***&Gx_19, double ***&Fx_20,
				  double ***&Gx_20, double ***&Fx_21, double ***&Gx_21, double ***&Fx_22, 
				  double ***&Fx_23, double ***&Fx_24, double ***&Fx_25, double ***&Gx_25, 
				  double ***&Fx_26, double ***&Gx_26, double ***&Fx_27, double ***&Gx_27, 
				  double ***&Ex, long nPML_x_1, long nPML_y_1, long nPML_z_1, long nPML_x_2,
				  long nPML_y_2, long nPML_z_2, long nx, long ny, long nz);

void Init_Alloc_FyGyEy(Allocate_E_comp *Allocate_FGE_y, double ***&Fy_1, double ***&Gy_1, 
				  double ***&Fy_2,  double ***&Gy_2,  double ***&Fy_3,  double ***&Gy_3, 
				  double ***&Fy_4,  double ***&Gy_4,  double ***&Fy_5,  double ***&Fy_6,  
				  double ***&Gy_6,  double ***&Fy_7,  double ***&Gy_7,  double ***&Fy_8, 
				  double ***&Gy_8,  double ***&Fy_9,  double ***&Gy_9,  double ***&Fy_10, 
				  double ***&Fy_11, double ***&Fy_12, double ***&Fy_13, double ***&Fy_15, 
				  double ***&Fy_16, double ***&Fy_17, double ***&Fy_18, double ***&Fy_19, 
				  double ***&Gy_19, double ***&Fy_20, double ***&Gy_20, double ***&Fy_21, 
				  double ***&Gy_21, double ***&Fy_22, double ***&Gy_22, double ***&Fy_23, 
				  double ***&Fy_24, double ***&Gy_24, double ***&Fy_25, double ***&Gy_25, 
				  double ***&Fy_26, double ***&Gy_26, double ***&Fy_27, double ***&Gy_27, 
				  double ***&Ey, long nPML_x_1, long nPML_y_1, long nPML_z_1, long nPML_x_2,
				  long nPML_y_2, long nPML_z_2, long nx, long ny, long nz);

void Init_Alloc_FzGzEz(Allocate_E_comp *Allocate_FGE_z,double ***&Fz_1,  double ***&Gz_1,
				  double ***&Fz_2,  double ***&Fz_3,  double ***&Gz_3,  double ***&Fz_4, 
				  double ***&Gz_4,  double ***&Fz_5,  double ***&Fz_6,  double ***&Gz_6,  
				  double ***&Fz_7,  double ***&Gz_7,  double ***&Fz_8,  double ***&Fz_9, 
				  double ***&Gz_9,  double ***&Fz_10, double ***&Gz_10, double ***&Fz_11, 
				  double ***&Fz_12, double ***&Gz_12, double ***&Fz_13, double ***&Fz_15, 
				  double ***&Fz_16, double ***&Gz_16, double ***&Fz_17, double ***&Fz_18, 
				  double ***&Gz_18, double ***&Fz_19, double ***&Gz_19, double ***&Fz_20, 
				  double ***&Fz_21, double ***&Gz_21, double ***&Fz_22, double ***&Gz_22, 
				  double ***&Fz_23, double ***&Fz_24, double ***&Gz_24, double ***&Fz_25, 
				  double ***&Gz_25, double ***&Fz_26, double ***&Fz_27, double ***&Gz_27, 
				  double ***&Ez, long nPML_x_1, long nPML_y_1, long nPML_z_1, long nPML_x_2,
				  long nPML_y_2, long nPML_z_2, long nx, long ny, long nz);

void Init_Alloc_BxHx(Allocate_H_comp *Allocate_BH_x, double ***&Bx_1, double ***&Bx_2,
			    double ***&Bx_3,  double ***&Bx_4,  double ***&Bx_6,  double ***&Bx_7,  
				double ***&Bx_8,  double ***&Bx_9, double ***&Bx_10, double ***&Bx_12, 
				double ***&Bx_13, double ***&Bx_15, double ***&Bx_16, double ***&Bx_18,
				double ***&Bx_19, double ***&Bx_20, double ***&Bx_21, double ***&Bx_22,
				double ***&Bx_24, double ***&Bx_25, double ***&Bx_26, double ***&Bx_27, 
				double ***&Hx, long nPML_x_1, long nPML_y_1, long nPML_z_1, long nPML_x_2,
				long nPML_y_2, long nPML_z_2, long nx, long ny, long nz);

void Init_Alloc_ByHy(Allocate_H_comp *Allocate_BH_y, double ***&By_1,  double ***&By_2, 
			    double ***&By_3,  double ***&By_4,  double ***&By_6,  double ***&By_7,  
				double ***&By_8,  double ***&By_9,  double ***&By_10, double ***&By_11, 
				double ***&By_12, double ***&By_16, double ***&By_17, double ***&By_18, 
				double ***&By_19, double ***&By_20, double ***&By_21, double ***&By_22, 
				double ***&By_24, double ***&By_25, double ***&By_26, double ***&By_27, 
				double ***&Hy, long nPML_x_1, long nPML_y_1, long nPML_z_1, long nPML_x_2,
				long nPML_y_2, long nPML_z_2, long nx, long ny, long nz);

void Init_Alloc_BzHz(Allocate_H_comp *Allocate_BH_z, double ***&Bz_1,  double ***&Bz_2,  
				double ***&Bz_3,  double ***&Bz_4,  double ***&Bz_5,  double ***&Bz_6, 
				double ***&Bz_7,  double ***&Bz_8,  double ***&Bz_9,  double ***&Bz_10, 
				double ***&Bz_12, double ***&Bz_16, double ***&Bz_18, double ***&Bz_19,
				double ***&Bz_20, double ***&Bz_21, double ***&Bz_22, double ***&Bz_23, 
				double ***&Bz_24, double ***&Bz_25, double ***&Bz_26, double ***&Bz_27, 
				double ***&Hz, long nPML_x_1, long nPML_y_1, long nPML_z_1, long nPML_x_2,
				long nPML_y_2, long nPML_z_2, long nx, long ny, long nz);

//Allocate memory
void *Thread_Alloc_FGE(void *Dat);
void *Thread_Alloc_BH(void *Dat);

void Init_Thread_Save_Field_Slice(Data_Save_Slice *Data, double ***XX, long  n1_a, 
							      long  n1_b, long  n2_a, long  n2_b, long  n_slice,
							      char *file_name, long nr_DIV_1, long nr_DIV_2);

//save slices in text file from 3D data
void *Thread_Save_Field_xy(void *Dat);
void *Thread_Save_Field_yz(void *Dat);
void *Thread_Save_Field_xz(void *Dat);

//save the workspace parameters
void *Thread_Save_FGE(void *Dat);
void *Thread_Save_BH(void *Dat);

//load the workspace parameters
void *Thread_Load_FGE(void *Dat);
void *Thread_Load_BH(void *Dat);

⌨️ 快捷键说明

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