?? generate_report.cpp
字號:
#include <stdio.h>
#include "generate_report.h"
int gen_report_W(long nx, long ny, long nz, long nr_DIV_x, long nr_DIV_y, long nr_DIV_z,
long Save_nr_DIV_x, long Save_nr_DIV_y, long Save_nr_DIV_z, long nPML_x_1,
long nPML_x_2, long nPML_y_1, long nPML_y_2, long nPML_z_1, long nPML_z_2,
double dx, double dy, double dz, double dt, long num_iter, double limit_time,
int load_workspace_data, char *Path_Load_Workspace_Data, int save_field,
long nr_Save, long saveFROMinst, long saveTOinst, long source_type,
int pt_source_Ez, int pt_source_Hz, long jel_plane_wave,
int switch_off_time, double X0, double tw, double t0, double omega,
double phase, double const_alfa, long **Coord_ptSource, long n_Coord,
char *path_name_Index, char *path_name_Mat, long n_Mat,
double **Mat, double PML_eps_r_x_1, double PML_mu_r_x_1,
double PML_eps_r_x_2, double PML_mu_r_x_2, double PML_eps_r_y_1,
double PML_mu_r_y_1, double PML_eps_r_y_2, double PML_mu_r_y_2,
double PML_eps_r_z_1, double PML_mu_r_z_1, double PML_eps_r_z_2,
double PML_mu_r_z_2,
long nr_W_DIV_x, long nr_W_DIV_y, long nr_W_DIV_z, long nx_W_a,
long nx_W_b, long ny_W_a, long ny_W_b, long nz_W_a, long nz_W_b,
long eval_W_FROMinst, long eval_W_TOinst, int save_W, int nr_W_Save,
int save_W_FROMinst, int save_W_TOinst, long n_x_W_a, long n_x_W_b,
long n_y_W_a, long n_y_W_b, long n_z_W_a, long n_z_W_b,
long Save_nr_W_DIV_x, long Save_nr_W_DIV_y, long Save_nr_W_DIV_z)
{
long i;
char File_Name[] = "Report.txt";
FILE *fp = NULL;
fp = fopen(File_Name, "w+");
if (!fp)
{
return 2;
}
fprintf(fp,"//The division of the computational space\n");
fprintf(fp,"nx = %d\n",nx);
fprintf(fp,"ny = %d\n",ny);
fprintf(fp,"nz = %d\n",nz);
fprintf(fp,"\n");
fprintf(fp,"//Division of the Total Field Zone - for computing with threads\n");
fprintf(fp,"nr_DIV_x = %d\n",nr_DIV_x);
fprintf(fp,"nr_DIV_y = %d\n",nr_DIV_y);
fprintf(fp,"nr_DIV_z = %d\n",nr_DIV_z);
fprintf(fp,"\n");
fprintf(fp,"//Division for Data Save\n");
fprintf(fp,"Save_nr_DIV_x = %d\n",Save_nr_DIV_x);
fprintf(fp,"Save_nr_DIV_y = %d\n",Save_nr_DIV_y);
fprintf(fp,"Save_nr_DIV_z = %d\n",Save_nr_DIV_z);
fprintf(fp,"\n");
fprintf(fp,"//The sizes of PML zone [cells]\n");
fprintf(fp,"nPML_x_1 = %d\n",nPML_x_1);
fprintf(fp,"nPML_x_2 = %d\n",nPML_x_2);
fprintf(fp,"nPML_y_1 = %d\n",nPML_y_1);
fprintf(fp,"nPML_y_2 = %d\n",nPML_y_2);
fprintf(fp,"nPML_z_1 = %d\n",nPML_z_1);
fprintf(fp,"nPML_z_2 = %d\n",nPML_z_2);
fprintf(fp,"\n");
fprintf(fp,"//The cell sizes\n");
fprintf(fp,"dx = %6.21f\n",dx);
fprintf(fp,"dy = %6.21f\n",dy);
fprintf(fp,"dz = %6.21f\n",dz);
fprintf(fp,"\n");
fprintf(fp,"//The time steep -- dt = ( 1.0/c/sqrt(1.0/dx^2+1.0/dy^2+1.0/dz^2) )*0.9\n");
fprintf(fp,"dt = %6.21f\n",dt);
fprintf(fp,"\n");
fprintf(fp,"//The number of FDTD iterations\n");
fprintf(fp,"num_iter = %d\n",num_iter);
fprintf(fp,"\n");
fprintf(fp,"//Limit time in [s] - after it saves out all workspace data in binary files\n");
fprintf(fp,"limit_time = %f\n",limit_time);
fprintf(fp,"\n");
fprintf(fp,"load_workspace_data = %d\n",load_workspace_data);
if (load_workspace_data)
{
fprintf(fp,"Path_Load_Workspace_Data = %s\n",Path_Load_Workspace_Data);
}
fprintf(fp,"\n");
fprintf(fp,"//Save slices of Ex, Ey, Ez, Hx, Hy, Hz \n");
fprintf(fp,"save_field = %d\n",save_field);
if(save_field)
{
fprintf(fp,"nr_Save = %d\n",nr_Save);
fprintf(fp,"saveFROMinst = %d\n",saveFROMinst);
fprintf(fp,"saveTOinst = %d\n",saveTOinst);
}
fprintf(fp,"\n");
fprintf(fp,"//Data referring to the excitation\n");
fprintf(fp,"source_type = %d\n",source_type);
fprintf(fp,"jel_plane_wave = %d\n",jel_plane_wave);
fprintf(fp,"\n");
if (jel_plane_wave == 0)
{
fprintf(fp,"pt_source_Ez = %d\n",pt_source_Ez);
fprintf(fp,"pt_source_Hz = %d\n",pt_source_Hz);
if (source_type == 2)
{
fprintf(fp,"switch_off_time = %d\n",switch_off_time);
}
fprintf(fp,"\n");
fprintf(fp,"//Coordinates of the pulse\n");
for ( i = 0; i < n_Coord; i++)
{
fprintf(fp,"Coord_ptSource[%d][0] = %d\n",i,Coord_ptSource[i][0]);
fprintf(fp,"Coord_ptSource[%d][1] = %d\n",i,Coord_ptSource[i][1]);
fprintf(fp,"Coord_ptSource[%d][2] = %d\n",i,Coord_ptSource[i][2]);
}
fprintf(fp,"\n");
}
fprintf(fp,"//Parameters of the pulse\n");
fprintf(fp,"X0 = %6.21f\n",X0);
fprintf(fp,"tw = %6.21f\n",tw);
fprintf(fp,"t0 = %6.21f\n",t0);
fprintf(fp,"omega = %6.21f\n",omega);
fprintf(fp,"phase = %6.21f\n",phase);
fprintf(fp,"const_alfa = %6.21f\n",const_alfa);
fprintf(fp,"\n");
fprintf(fp,"//The geometry file\n");
fprintf(fp,"path_name_Index = %s\n",path_name_Index);
fprintf(fp,"\n");
fprintf(fp,"//The materials\n");
fprintf(fp,"path_name_Mat = %s\n",path_name_Mat);
fprintf(fp,"n_Mat = %d\n",n_Mat);
for (i =0; i<n_Mat; i++)
{
fprintf(fp,"eps_r[%d] = %f",i,Mat[i][0]);
fprintf(fp," mu_r[%d] = %f",i,Mat[i][1]);
fprintf(fp," sigma[%d] = %f\n",i,Mat[i][2]);
}
fprintf(fp,"\n");
fprintf(fp,"//The parameters of the PML\n");
fprintf(fp,"//x\n");
fprintf(fp,"PML_eps_r_x_1 = %f\n",PML_eps_r_x_1);
fprintf(fp,"PML_mu_r_x_1 = %f\n",PML_mu_r_x_1);
fprintf(fp,"PML_eps_r_x_2 = %f\n",PML_eps_r_x_2);
fprintf(fp,"PML_mu_r_x_2 = %f\n",PML_mu_r_x_2);
fprintf(fp,"//y\n");
fprintf(fp,"PML_eps_r_y_1 = %f\n",PML_eps_r_y_1);
fprintf(fp,"PML_mu_r_y_1 = %f\n",PML_mu_r_y_1);
fprintf(fp,"PML_eps_r_y_2 = %f\n",PML_eps_r_y_2);
fprintf(fp,"PML_mu_r_y_2 = %f\n",PML_mu_r_y_2);
fprintf(fp,"//z\n");
fprintf(fp,"PML_eps_r_z_1 = %f\n",PML_eps_r_z_1);
fprintf(fp,"PML_mu_r_z_1 = %f\n",PML_mu_r_z_1);
fprintf(fp,"PML_eps_r_z_2 = %f\n",PML_eps_r_z_2);
fprintf(fp,"PML_mu_r_z_2 = %f\n",PML_mu_r_z_2);
fprintf(fp,"\n");
fprintf(fp,"//Data referring to the electromagnetic energy\n");
fprintf(fp,"nr_W_DIV_x = %d\n",nr_W_DIV_x);
fprintf(fp,"nr_W_DIV_y = %d\n",nr_W_DIV_y);
fprintf(fp,"nr_W_DIV_z = %d\n",nr_W_DIV_z);
fprintf(fp,"\n");
fprintf(fp,"//Defines the volume where the energy will be computed\n");
fprintf(fp,"nx_W_a = %d\n",nx_W_a); fprintf(fp,"nx_W_b = %d\n",nx_W_b);
fprintf(fp,"ny_W_a = %d\n",ny_W_a); fprintf(fp,"ny_W_b = %d\n",ny_W_b);
fprintf(fp,"nz_W_a = %d\n",nz_W_a); fprintf(fp,"nz_W_b = %d\n",nz_W_b);
fprintf(fp,"\n");
fprintf(fp,"//Compute the energy between the instants\n");
fprintf(fp,"eval_W_FROMinst = %d\n",eval_W_FROMinst);
fprintf(fp,"eval_W_TOinst = %d\n",eval_W_TOinst);
fprintf(fp,"\n");
fprintf(fp,"//Save slices from W\n");
fprintf(fp,"save_W = %d\n",save_W);
if (save_W)
{
fprintf(fp,"nr_W_Save = %d\n",nr_W_Save);
fprintf(fp,"save_W_FROMinst = %d\n",save_W_FROMinst);
fprintf(fp,"save_W_TOinst = %d\n",save_W_TOinst);
fprintf(fp,"//Defines the volume where the energy will be saved\n");
fprintf(fp,"n_x_W_a = %d\n",n_x_W_a);
fprintf(fp,"n_x_W_b= %d\n",n_x_W_b);
fprintf(fp,"n_y_W_a = %d\n",n_y_W_a);
fprintf(fp,"n_y_W_b= %d\n",n_y_W_b);
fprintf(fp,"n_z_W_a = %d\n",n_z_W_a);
fprintf(fp,"n_z_W_b= %d\n",n_z_W_b);
fprintf(fp,"//Division - for saving W with threads\n");
fprintf(fp,"Save_nr_W_DIV_x = %d\n",Save_nr_W_DIV_x);
fprintf(fp,"Save_nr_W_DIV_y = %d\n",Save_nr_W_DIV_y);
fprintf(fp,"Save_nr_W_DIV_z = %d\n",Save_nr_W_DIV_z);
fprintf(fp,"\n");
}
fclose(fp);
return 0;
}
int gen_report(long nx, long ny, long nz, long nr_DIV_x, long nr_DIV_y, long nr_DIV_z,
long Save_nr_DIV_x, long Save_nr_DIV_y, long Save_nr_DIV_z, long nPML_x_1,
long nPML_x_2, long nPML_y_1, long nPML_y_2, long nPML_z_1, long nPML_z_2,
double dx, double dy, double dz, double dt, long num_iter, double limit_time,
int load_workspace_data, char *Path_Load_Workspace_Data, int save_field,
long nr_Save, long saveFROMinst, long saveTOinst, long source_type,
int pt_source_Ez, int pt_source_Hz, long jel_plane_wave,
int switch_off_time, double X0, double tw, double t0, double omega,
double phase, double const_alfa, long **Coord_ptSource, long n_Coord,
char *path_name_Index, char *path_name_Mat, long n_Mat, double **Mat,
double PML_eps_r_x_1, double PML_mu_r_x_1, double PML_eps_r_x_2,
double PML_mu_r_x_2, double PML_eps_r_y_1, double PML_mu_r_y_1,
double PML_eps_r_y_2, double PML_mu_r_y_2, double PML_eps_r_z_1,
double PML_mu_r_z_1, double PML_eps_r_z_2, double PML_mu_r_z_2)
{
long i;
char File_Name[] = "Report.txt";
FILE *fp = NULL;
fp = fopen(File_Name, "w+");
if (!fp)
{
return 2;
}
fprintf(fp,"//The division of the computational space\n");
fprintf(fp,"nx = %d\n",nx);
fprintf(fp,"ny = %d\n",ny);
fprintf(fp,"nz = %d\n",nz);
fprintf(fp,"\n");
fprintf(fp,"//Division of the Total Field Zone - for computing with threads\n");
fprintf(fp,"nr_DIV_x = %d\n",nr_DIV_x);
fprintf(fp,"nr_DIV_y = %d\n",nr_DIV_y);
fprintf(fp,"nr_DIV_z = %d\n",nr_DIV_z);
fprintf(fp,"\n");
fprintf(fp,"//Division for Data Save\n");
fprintf(fp,"Save_nr_DIV_x = %d\n",Save_nr_DIV_x);
fprintf(fp,"Save_nr_DIV_y = %d\n",Save_nr_DIV_y);
fprintf(fp,"Save_nr_DIV_z = %d\n",Save_nr_DIV_z);
fprintf(fp,"\n");
fprintf(fp,"//The sizes of PML zone [cells]\n");
fprintf(fp,"nPML_x_1 = %d\n",nPML_x_1);
fprintf(fp,"nPML_x_2 = %d\n",nPML_x_2);
fprintf(fp,"nPML_y_1 = %d\n",nPML_y_1);
fprintf(fp,"nPML_y_2 = %d\n",nPML_y_2);
fprintf(fp,"nPML_z_1 = %d\n",nPML_z_1);
fprintf(fp,"nPML_z_2 = %d\n",nPML_z_2);
fprintf(fp,"\n");
fprintf(fp,"//The cell sizes\n");
fprintf(fp,"dx = %6.21f\n",dx);
fprintf(fp,"dy = %6.21f\n",dy);
fprintf(fp,"dz = %6.21f\n",dz);
fprintf(fp,"\n");
fprintf(fp,"//The time steep -- dt = ( 1.0/c/sqrt(1.0/dx^2+1.0/dy^2+1.0/dz^2) )*0.9\n");
fprintf(fp,"dt = %6.21f\n",dt);
fprintf(fp,"\n");
fprintf(fp,"//The number of FDTD iterations\n");
fprintf(fp,"num_iter = %d\n",num_iter);
fprintf(fp,"\n");
fprintf(fp,"//Limit time in [s] - after it saves out all workspace data in binary files\n");
fprintf(fp,"limit_time = %f\n",limit_time);
fprintf(fp,"\n");
fprintf(fp,"load_workspace_data = %d\n",load_workspace_data);
if (load_workspace_data)
{
fprintf(fp,"Path_Load_Workspace_Data = %s\n",Path_Load_Workspace_Data);
}
fprintf(fp,"\n");
fprintf(fp,"//Save slices of Ex, Ey, Ez, Hx, Hy, Hz \n");
fprintf(fp,"save_field = %d\n",save_field);
if(save_field)
{
fprintf(fp,"nr_Save = %d\n",nr_Save);
fprintf(fp,"saveFROMinst = %d\n",saveFROMinst);
fprintf(fp,"saveTOinst = %d\n",saveTOinst);
}
fprintf(fp,"\n");
fprintf(fp,"//Data referring to the excitation\n");
fprintf(fp,"source_type = %d\n",source_type);
fprintf(fp,"jel_plane_wave = %d\n",jel_plane_wave);
fprintf(fp,"\n");
if (jel_plane_wave == 0)
{
fprintf(fp,"pt_source_Ez = %d\n",pt_source_Ez);
fprintf(fp,"pt_source_Hz = %d\n",pt_source_Hz);
if (source_type == 2)
{
fprintf(fp,"switch_off_time = %d\n",switch_off_time);
}
fprintf(fp,"\n");
fprintf(fp,"//Coordinates of the pulse\n");
for ( i = 0; i < n_Coord; i++)
{
fprintf(fp,"Coord_ptSource[%d][0] = %d\n",i,Coord_ptSource[i][0]);
fprintf(fp,"Coord_ptSource[%d][1] = %d\n",i,Coord_ptSource[i][1]);
fprintf(fp,"Coord_ptSource[%d][2] = %d\n",i,Coord_ptSource[i][2]);
}
fprintf(fp,"\n");
}
fprintf(fp,"//Parameters of the pulse\n");
fprintf(fp,"X0 = %6.21f\n",X0);
fprintf(fp,"tw = %6.21f\n",tw);
fprintf(fp,"t0 = %6.21f\n",t0);
fprintf(fp,"omega = %6.21f\n",omega);
fprintf(fp,"phase = %6.21f\n",phase);
fprintf(fp,"const_alfa = %6.21f\n",const_alfa);
fprintf(fp,"\n");
fprintf(fp,"//The geometry file\n");
fprintf(fp,"path_name_Index = %s\n",path_name_Index);
fprintf(fp,"\n");
fprintf(fp,"//The materials\n");
fprintf(fp,"path_name_Mat = %s\n",path_name_Mat);
fprintf(fp,"n_Mat = %d\n",n_Mat);
for (i =0; i<n_Mat; i++)
{
fprintf(fp,"eps_r[%d] = %f",i,Mat[i][0]);
fprintf(fp," mu_r[%d] = %f",i,Mat[i][1]);
fprintf(fp," sigma[%d] = %f\n",i,Mat[i][2]);
}
fprintf(fp,"\n");
fprintf(fp,"//The parameters of the PML\n");
fprintf(fp,"//x\n");
fprintf(fp,"PML_eps_r_x_1 = %f\n",PML_eps_r_x_1);
fprintf(fp,"PML_mu_r_x_1 = %f\n",PML_mu_r_x_1);
fprintf(fp,"PML_eps_r_x_2 = %f\n",PML_eps_r_x_2);
fprintf(fp,"PML_mu_r_x_2 = %f\n",PML_mu_r_x_2);
fprintf(fp,"//y\n");
fprintf(fp,"PML_eps_r_y_1 = %f\n",PML_eps_r_y_1);
fprintf(fp,"PML_mu_r_y_1 = %f\n",PML_mu_r_y_1);
fprintf(fp,"PML_eps_r_y_2 = %f\n",PML_eps_r_y_2);
fprintf(fp,"PML_mu_r_y_2 = %f\n",PML_mu_r_y_2);
fprintf(fp,"//z\n");
fprintf(fp,"PML_eps_r_z_1 = %f\n",PML_eps_r_z_1);
fprintf(fp,"PML_mu_r_z_1 = %f\n",PML_mu_r_z_1);
fprintf(fp,"PML_eps_r_z_2 = %f\n",PML_eps_r_z_2);
fprintf(fp,"PML_mu_r_z_2 = %f\n",PML_mu_r_z_2);
fprintf(fp,"\n");
fclose(fp);
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -