diff options
Diffstat (limited to 'src/driver/io.cc')
-rw-r--r-- | src/driver/io.cc | 133 |
1 files changed, 96 insertions, 37 deletions
diff --git a/src/driver/io.cc b/src/driver/io.cc index 6feead1..30f15b5 100644 --- a/src/driver/io.cc +++ b/src/driver/io.cc @@ -27,14 +27,14 @@ #include "../jtutil/linear_map.hh" using jtutil::error_exit; -#include "../util/coords.hh" -#include "../util/grid.hh" -#include "../util/fd_grid.hh" -#include "../util/patch.hh" -#include "../util/patch_edge.hh" -#include "../util/patch_interp.hh" -#include "../util/ghost_zone.hh" -#include "../util/patch_system.hh" +#include "../patch/coords.hh" +#include "../patch/grid.hh" +#include "../patch/fd_grid.hh" +#include "../patch/patch.hh" +#include "../patch/patch_edge.hh" +#include "../patch/patch_interp.hh" +#include "../patch/ghost_zone.hh" +#include "../patch/patch_system.hh" #include "../elliptic/Jacobian.hh" @@ -78,9 +78,26 @@ if (print_msg_flag) " reading \"%s\"", file_name); } -ps.read_ghosted_gridfn(unknown_gfn, - file_name, - false); // no ghost zones in data file +switch (IO_info.file_format) + { +case file_format__ASCII: + ps.read_ghosted_gridfn(unknown_gfn, + file_name, + false); // no ghost zones in data file + break; + +case file_format__HDF5: + CCTK_VWarn(-1, __LINE__, __FILE__, CCTK_THORNSTRING, +"input_gridfn(): HDF5 data files not implemented yet!"); /*NOTREACHED*/ + +default: + CCTK_VWarn(-1, __LINE__, __FILE__, CCTK_THORNSTRING, +"\n" +" input_gridfn(): unknown IO_info.file_format=(int)%d!\n" +" (this should never happen!)" + , + int(IO_info.file_format)); /*NOTREACHED*/ + } } //****************************************************************************** @@ -99,32 +116,49 @@ void output_gridfn(patch_system& ps, int unknown_gfn, { const char* file_name = io_file_name(IO_info, base_file_name, hn, AHF_iteration); -if (print_msg_flag) - then CCTK_VInfo(CCTK_THORNSTRING, - " writing \"%s\"", file_name); -switch (unknown_gfn) +switch (IO_info.file_format) { -case gfns::gfn__h: - CCTK_VInfo(CCTK_THORNSTRING, - " writing h to \"%s\"", file_name); - ps.print_ghosted_gridfn_with_xyz(unknown_gfn, - true, gfns::gfn__h, - file_name, - false); // no ghost zones - break; -case gfns::gfn__H: - CCTK_VInfo(CCTK_THORNSTRING, - " writing H(h) to \"%s\"", file_name); - ps.print_gridfn(unknown_gfn, - file_name); +case file_format__ASCII: + switch (unknown_gfn) + { + case gfns::gfn__h: + if (print_msg_flag) + then CCTK_VInfo(CCTK_THORNSTRING, + " writing h to \"%s\"", file_name); + ps.print_ghosted_gridfn_with_xyz(unknown_gfn, + true, gfns::gfn__h, + file_name, + false); // no ghost zones + break; + case gfns::gfn__H: + if (print_msg_flag) + then CCTK_VInfo(CCTK_THORNSTRING, + " writing H to \"%s\"", file_name); + ps.print_gridfn(unknown_gfn, + file_name); + break; + default: + if (print_msg_flag) + then CCTK_VInfo(CCTK_THORNSTRING, + " writing \"%s\"", file_name); + ps.print_gridfn(unknown_gfn, + file_name); + break; + } break; + +case file_format__HDF5: + CCTK_VWarn(-1, __LINE__, __FILE__, CCTK_THORNSTRING, +"output_gridfn(): HDF5 data files not implemented yet!"); /*NOTREACHED*/ + default: - CCTK_VInfo(CCTK_THORNSTRING, - " writing \"%s\"", file_name); - ps.print_gridfn(unknown_gfn, - file_name); - break; + CCTK_VWarn(-1, __LINE__, __FILE__, CCTK_THORNSTRING, +"\n" +" output_gridfn(): unknown IO_info.file_format=(int)%d!\n" +" (this should never happen!)" + , + int(IO_info.file_format)); /*NOTREACHED*/ } } @@ -134,6 +168,9 @@ default: // This function prints one or two Jacobian matrices (and their difference // in the latter case) to a named output file. // +// Bugs: +// - The file format is hardwired to ASCII. +// // Arguments: // A null Jacobian pointer means to skip that Jacobian. // @@ -277,13 +314,35 @@ const char* io_file_name(struct IO_info& IO_info, const char base_file_name[], const int N_file_name_buffer = 200; static char file_name_buffer[N_file_name_buffer]; +const char* file_name_extension; +switch (IO_info.file_format) + { +case file_format__ASCII: + file_name_extension = IO_info.ASCII_file_name_extension; + break; +case file_format__HDF5: + file_name_extension = IO_info.HDF5_file_name_extension; + break; +default: + CCTK_VWarn(-1, __LINE__, __FILE__, CCTK_THORNSTRING, +"\n" +" io_file_name(): unknown IO_info.file_format=(int)%d!\n" +" (this should never happen!)" + , + int(IO_info.file_format)); /*NOTREACHED*/ + } + if (AHF_iteration == 0) then snprintf(file_name_buffer, N_file_name_buffer, - "%s.t%d.ah%d.dat", - base_file_name, IO_info.time_iteration, hn); + "%s.t%d.ah%d.%s", + base_file_name, + IO_info.time_iteration, hn, + file_name_extension); else snprintf(file_name_buffer, N_file_name_buffer, - "%s.t%d.ah%d.it%d.dat", - base_file_name, IO_info.time_iteration, hn, AHF_iteration); + "%s.t%d.ah%d.it%d.%s", + base_file_name, + IO_info.time_iteration, hn, AHF_iteration, + file_name_extension); return file_name_buffer; } |