diff options
author | Erik Schnetter <schnetter@gmail.com> | 2013-05-26 15:55:33 -0400 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2013-05-26 15:55:33 -0400 |
commit | 84e390d73ab7148814b19d4758ff90564c3f1c5d (patch) | |
tree | 93cc0c4ef78338a6cf9879016a9a1e6518a237ac /Carpet/CarpetIOHDF5 | |
parent | 9748e3a83336a9ccae73a66481530f8049e8c78d (diff) |
CarpetIO*: New parameter CarpetIO*::out_group_separator
out_group_separator chooses the string by which thorn name and group name are separated in file names. The default is "::" for backward compatibility. This parameter only affects output where CarpetIO*::one_file_per_group is set; otherwise, the thorn name does not appear in the file name.
Diffstat (limited to 'Carpet/CarpetIOHDF5')
37 files changed, 153 insertions, 9 deletions
diff --git a/Carpet/CarpetIOHDF5/param.ccl b/Carpet/CarpetIOHDF5/param.ccl index 75a774516..05dd25f60 100644 --- a/Carpet/CarpetIOHDF5/param.ccl +++ b/Carpet/CarpetIOHDF5/param.ccl @@ -120,6 +120,11 @@ CCTK_STRING out3D_vars "Variables to output in 3D HDF5 file format" STEERABLE = "" :: "List of group or variable names" } "" +STRING out_group_separator "String to separate group from variable name in file name" STEERABLE = ALWAYS +{ + "" :: "" +} "::" + STRING out_extension "File extension to use for CarpetIOHDF5 output" STEERABLE = ALWAYS { "" :: "File extension (including a leading dot, if desired)" diff --git a/Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc b/Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc index feccb8fbe..4379de113 100644 --- a/Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc +++ b/Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc @@ -669,10 +669,15 @@ static int TriggerOutput (const cGH* const cctkGH, const int vindex) char* const fullname = CCTK_FullName(vindex); if (one_file_per_group) { const int gindex = CCTK_GroupIndexFromVarI(vindex); - char* const groupname = CCTK_GroupName(gindex); - for (char* p=groupname; *p; ++p) *p=tolower(*p); - retval = OutputVarAs (cctkGH, fullname, groupname); - free (groupname); + char* const groupname_c = CCTK_GroupName(gindex); + string groupname(groupname_c); + free (groupname_c); + transform(groupname.begin(), groupname.end(), groupname.begin(), ::tolower); + string const oldsep ("::"); + size_t const oldseppos = groupname.find(oldsep); + assert (oldseppos != string::npos); + groupname.replace(oldseppos, oldsep.size(), out_group_separator); + retval = OutputVarAs (cctkGH, fullname, groupname.c_str()); } else { const char *varname = CCTK_VarName (vindex); retval = OutputVarAs (cctkGH, fullname, varname); diff --git a/Carpet/CarpetIOHDF5/src/OutputSlice.cc b/Carpet/CarpetIOHDF5/src/OutputSlice.cc index 0a5fcee89..2f67d031b 100644 --- a/Carpet/CarpetIOHDF5/src/OutputSlice.cc +++ b/Carpet/CarpetIOHDF5/src/OutputSlice.cc @@ -357,10 +357,15 @@ namespace CarpetIOHDF5 { int retval; if (one_file_per_group) { - char* const alias = CCTK_GroupNameFromVarI (vindex); - for (char* p = alias; *p; ++p) *p = (char) tolower (*p); - retval = OutputVarAs (cctkGH, fullname, alias); - free (alias); + char* const alias_c = CCTK_GroupNameFromVarI (vindex); + string alias(alias_c); + free (alias_c); + transform(alias.begin(), alias.end(), alias.begin(), ::tolower); + string const oldsep ("::"); + size_t const oldseppos = alias.find(oldsep); + assert (oldseppos != string::npos); + alias.replace(oldseppos, oldsep.size(), out_group_separator); + retval = OutputVarAs (cctkGH, fullname, alias.c_str()); } else { const char* const alias = CCTK_VarName (vindex); retval = OutputVarAs (cctkGH, fullname, alias); diff --git a/Carpet/CarpetIOHDF5/test/newsep.par b/Carpet/CarpetIOHDF5/test/newsep.par new file mode 100644 index 000000000..bbb09c9c5 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep.par @@ -0,0 +1,65 @@ +ActiveThorns = " + AEILocalInterp + Carpet + CarpetInterp + CarpetIOHDF5 + CarpetLib + CarpetReduce + CartGrid3D + CoordBase + InterpToArray + IOUtil + LoopControl + SymBase +" + +IO::out_dir = $parfile + +Carpet::global_nx = 7 +Carpet::global_ny = 8 +Carpet::global_nz = 9 + +InterpToArray::nscalars = 1 +InterpToArray::scalar_vars[0] = "grid::r" +InterpToArray::narrays1d = 1 +InterpToArray::array1d_vars[0] = "grid::r" +InterpToArray::array1d_npoints_i = 8 +InterpToArray::narrays2d = 1 +InterpToArray::array2d_vars[0] = "grid::r" +InterpToArray::array2d_npoints_i = 7 +InterpToArray::array2d_npoints_j = 6 +InterpToArray::narrays3d = 1 +InterpToArray::array3d_vars[0] = "grid::r" +InterpToArray::array3d_npoints_i = 5 +InterpToArray::array3d_npoints_j = 4 +InterpToArray::array3d_npoints_k = 3 + +IOHDF5::one_file_per_group = yes +IOHDF5::out_group_separator = "." +IO::out_every = 1 + +IOHDF5::out0D_vars = " + InterpToArray::scalars + InterpToArray::arrays1d + InterpToArray::arrays2d + InterpToArray::arrays3d + grid::r +" +IOHDF5::out1D_vars = " + InterpToArray::arrays1d + InterpToArray::arrays2d + InterpToArray::arrays3d + grid::r +" +IOHDF5::out2D_vars = " + InterpToArray::arrays2d + InterpToArray::arrays3d + grid::r +" +IOHDF5::out3D_vars = " + InterpToArray::arrays3d + grid::r +" +IOHDF5::out_vars = " + grid::r +" diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates..h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates..h5 Binary files differnew file mode 100644 index 000000000..6272bb4c4 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates..h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.d.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.d.h5 Binary files differnew file mode 100644 index 000000000..fb1c432ce --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.d.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.file_0.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.file_0.h5 Binary files differnew file mode 100644 index 000000000..a9b8ad047 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.file_0.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.file_1.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.file_1.h5 Binary files differnew file mode 100644 index 000000000..d07776375 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.file_1.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.x.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.x.h5 Binary files differnew file mode 100644 index 000000000..bbcf0a296 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.x.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xy.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xy.h5 Binary files differnew file mode 100644 index 000000000..7293ef121 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xy.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xyz.file_0.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xyz.file_0.h5 Binary files differnew file mode 100644 index 000000000..aba896845 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xyz.file_0.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xyz.file_1.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xyz.file_1.h5 Binary files differnew file mode 100644 index 000000000..925ce1022 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xyz.file_1.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xz.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xz.h5 Binary files differnew file mode 100644 index 000000000..a44ff80a3 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.xz.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.y.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.y.h5 Binary files differnew file mode 100644 index 000000000..e5a1aa2ed --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.y.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.yz.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.yz.h5 Binary files differnew file mode 100644 index 000000000..7c8a77e2c --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.yz.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.z.h5 b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.z.h5 Binary files differnew file mode 100644 index 000000000..647da1129 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/grid.coordinates.z.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays1d..h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays1d..h5 Binary files differnew file mode 100644 index 000000000..303c66cc1 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays1d..h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays1d.x.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays1d.x.h5 Binary files differnew file mode 100644 index 000000000..a600e4841 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays1d.x.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays1d.y.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays1d.y.h5 Binary files differnew file mode 100644 index 000000000..9745f3190 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays1d.y.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d..h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d..h5 Binary files differnew file mode 100644 index 000000000..75b6e1f3e --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d..h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.x.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.x.h5 Binary files differnew file mode 100644 index 000000000..1471486a1 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.x.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.xy.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.xy.h5 Binary files differnew file mode 100644 index 000000000..ff6cc54ae --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.xy.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.y.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.y.h5 Binary files differnew file mode 100644 index 000000000..e34ff05e8 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.y.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.z.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.z.h5 Binary files differnew file mode 100644 index 000000000..58d290481 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays2d.z.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d..h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d..h5 Binary files differnew file mode 100644 index 000000000..97ba1253c --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d..h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.d.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.d.h5 Binary files differnew file mode 100644 index 000000000..8fac8bb6b --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.d.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.x.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.x.h5 Binary files differnew file mode 100644 index 000000000..631218b74 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.x.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xy.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xy.h5 Binary files differnew file mode 100644 index 000000000..38c795329 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xy.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xyz.file_0.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xyz.file_0.h5 Binary files differnew file mode 100644 index 000000000..365a48982 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xyz.file_0.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xyz.file_1.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xyz.file_1.h5 Binary files differnew file mode 100644 index 000000000..198a86938 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xyz.file_1.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xz.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xz.h5 Binary files differnew file mode 100644 index 000000000..88ec1729b --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.xz.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.y.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.y.h5 Binary files differnew file mode 100644 index 000000000..2c00a14f4 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.y.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.yz.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.yz.h5 Binary files differnew file mode 100644 index 000000000..a02e4086b --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.yz.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.z.h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.z.h5 Binary files differnew file mode 100644 index 000000000..0b4eee1b0 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.arrays3d.z.h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/interptoarray.scalars..h5 b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.scalars..h5 Binary files differnew file mode 100644 index 000000000..df4a075c5 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/interptoarray.scalars..h5 diff --git a/Carpet/CarpetIOHDF5/test/newsep/newsep.par b/Carpet/CarpetIOHDF5/test/newsep/newsep.par new file mode 100644 index 000000000..bbb09c9c5 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/newsep/newsep.par @@ -0,0 +1,65 @@ +ActiveThorns = " + AEILocalInterp + Carpet + CarpetInterp + CarpetIOHDF5 + CarpetLib + CarpetReduce + CartGrid3D + CoordBase + InterpToArray + IOUtil + LoopControl + SymBase +" + +IO::out_dir = $parfile + +Carpet::global_nx = 7 +Carpet::global_ny = 8 +Carpet::global_nz = 9 + +InterpToArray::nscalars = 1 +InterpToArray::scalar_vars[0] = "grid::r" +InterpToArray::narrays1d = 1 +InterpToArray::array1d_vars[0] = "grid::r" +InterpToArray::array1d_npoints_i = 8 +InterpToArray::narrays2d = 1 +InterpToArray::array2d_vars[0] = "grid::r" +InterpToArray::array2d_npoints_i = 7 +InterpToArray::array2d_npoints_j = 6 +InterpToArray::narrays3d = 1 +InterpToArray::array3d_vars[0] = "grid::r" +InterpToArray::array3d_npoints_i = 5 +InterpToArray::array3d_npoints_j = 4 +InterpToArray::array3d_npoints_k = 3 + +IOHDF5::one_file_per_group = yes +IOHDF5::out_group_separator = "." +IO::out_every = 1 + +IOHDF5::out0D_vars = " + InterpToArray::scalars + InterpToArray::arrays1d + InterpToArray::arrays2d + InterpToArray::arrays3d + grid::r +" +IOHDF5::out1D_vars = " + InterpToArray::arrays1d + InterpToArray::arrays2d + InterpToArray::arrays3d + grid::r +" +IOHDF5::out2D_vars = " + InterpToArray::arrays2d + InterpToArray::arrays3d + grid::r +" +IOHDF5::out3D_vars = " + InterpToArray::arrays3d + grid::r +" +IOHDF5::out_vars = " + grid::r +" diff --git a/Carpet/CarpetIOHDF5/test/test.ccl b/Carpet/CarpetIOHDF5/test/test.ccl index 71adcca98..40b696c06 100644 --- a/Carpet/CarpetIOHDF5/test/test.ccl +++ b/Carpet/CarpetIOHDF5/test/test.ccl @@ -12,4 +12,3 @@ TEST CarpetWaveToyRecover_test_4proc { NPROCS 4 } - |