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/src | |
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/src')
-rw-r--r-- | Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc | 13 | ||||
-rw-r--r-- | Carpet/CarpetIOHDF5/src/OutputSlice.cc | 13 |
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); |