aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetIOHDF5/src
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-05-26 15:55:33 -0400
committerErik Schnetter <schnetter@gmail.com>2013-05-26 15:55:33 -0400
commit84e390d73ab7148814b19d4758ff90564c3f1c5d (patch)
tree93cc0c4ef78338a6cf9879016a9a1e6518a237ac /Carpet/CarpetIOHDF5/src
parent9748e3a83336a9ccae73a66481530f8049e8c78d (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/src')
-rw-r--r--Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc13
-rw-r--r--Carpet/CarpetIOHDF5/src/OutputSlice.cc13
2 files changed, 18 insertions, 8 deletions
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);