aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2004-04-27 16:38:56 +0000
committerjthorn <jthorn@f88db872-0e4f-0410-b76b-b9085cfa78c5>2004-04-27 16:38:56 +0000
commite89f09029a07b707428a2d286fd0531448d10b26 (patch)
tree6ba640f5dd05ec64ff5cc0dfd8fb7a78ce9e1c04 /src
parentf9a8ae7d783a2c2b53a3bfe076d9a4892f3712e5 (diff)
refactor some code so file naming conventions are more explicit
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinderDirect/trunk@1313 f88db872-0e4f-0410-b76b-b9085cfa78c5
Diffstat (limited to 'src')
-rw-r--r--src/driver/io.cc68
1 files changed, 60 insertions, 8 deletions
diff --git a/src/driver/io.cc b/src/driver/io.cc
index 6f7fd71..b763761 100644
--- a/src/driver/io.cc
+++ b/src/driver/io.cc
@@ -10,6 +10,7 @@
// output_Jacobians - write a Jacobian matrix or matrices to an output file
//
/// io_file_name - compute file name for angular-gridfn I/O file
+/// OpenDX_control_file_name - compute file name for OpenDX control file
//
#include <stdio.h>
@@ -64,9 +65,13 @@ namespace {
void output_OpenDX_control_file(const patch_system& ps,
const struct IO_info& IO_info,
int hn);
+
const char* io_file_name(const struct IO_info& IO_info,
const char base_file_name[],
int hn, int AHF_iteration = 0);
+const char* OpenDX_control_file_name(const struct IO_info& IO_info,
+ const char base_file_name[],
+ int hn);
}
//******************************************************************************
@@ -174,17 +179,14 @@ void output_OpenDX_control_file(const patch_system& ps,
const struct IO_info& IO_info,
int hn)
{
-static char file_name_buffer[IO_info::file_name_buffer_size];
-snprintf(file_name_buffer, IO_info::file_name_buffer_size,
- "%s/%s.ah%d.%s",
- IO_info.h_directory, IO_info.h_base_file_name, hn,
- IO_info.OpenDX_control_file_name_extension);
-
-FILE *fileptr = fopen(file_name_buffer, "w");
+const char* file_name = OpenDX_control_file_name(IO_info,
+ IO_info.h_base_file_name,
+ hn);
+FILE *fileptr = fopen(file_name, "w");
if (fileptr == NULL)
then CCTK_VWarn(FATAL_ERROR, __LINE__, __FILE__, CCTK_THORNSTRING,
"output_OpenDX_control_file(): can't open output file \"%s\"!",
- file_name_buffer); /*NOTREACHED*/
+ file_name); /*NOTREACHED*/
fprintf(fileptr, "# list the size of each patch (N_rho x N_sigma)\n");
for (int pn = 0 ; pn < ps.N_patches() ; ++pn)
@@ -468,4 +470,54 @@ return file_name_buffer;
//******************************************************************************
+//
+// This function encapsulates our file-naming conventions for OpenDX
+// control files for our regular angular-gridfn output files.
+//
+// Arguments:
+// base_file_name[] = from the parameter file
+// hn = the horizon number
+//
+// Results:
+// This function returns (a pointer to) the file name. The returned
+// result points into a private static buffer; the usual caveats apply.
+//
+namespace {
+const char* OpenDX_control_file_name(const struct IO_info& IO_info,
+ const char base_file_name[],
+ int hn)
+{
+const char* file_name_extension;
+
+switch (IO_info.horizon_file_format)
+ {
+case horizon_file_format__ASCII_gnuplot:
+ file_name_extension = IO_info.OpenDX_control_file_name_extension;
+ break;
+case horizon_file_format__HDF5:
+ CCTK_VWarn(FATAL_ERROR, __LINE__, __FILE__, CCTK_THORNSTRING,
+"\n"
+" OpenDX_control_file_name(): don't know how to form OpenDX control file\n"
+" name for HDF output files!"); /*NOTREACHED*/
+default:
+ CCTK_VWarn(FATAL_ERROR, __LINE__, __FILE__, CCTK_THORNSTRING,
+"\n"
+" OpenDX_control_file_name(): unknown IO_info.horizon_file_format=(int)%d!\n"
+" (this should never happen!)"
+ ,
+ int(IO_info.horizon_file_format)); /*NOTREACHED*/
+ }
+
+static char file_name_buffer[IO_info::file_name_buffer_size];
+snprintf(file_name_buffer, IO_info::file_name_buffer_size,
+ "%s/%s.ah%d.%s",
+ IO_info.h_directory, base_file_name, hn,
+ file_name_extension);
+
+return file_name_buffer;
+}
+ }
+
+//******************************************************************************
+
} // namespace AHFinderDirect