aboutsummaryrefslogtreecommitdiff
path: root/src/driver/io.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/driver/io.cc')
-rw-r--r--src/driver/io.cc133
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;
}