📄 alloc_save_load_field_thread.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 + -