aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetIOHDF5/src/OutputSlice.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Carpet/CarpetIOHDF5/src/OutputSlice.cc')
-rw-r--r--Carpet/CarpetIOHDF5/src/OutputSlice.cc31
1 files changed, 28 insertions, 3 deletions
diff --git a/Carpet/CarpetIOHDF5/src/OutputSlice.cc b/Carpet/CarpetIOHDF5/src/OutputSlice.cc
index 8c4c42295..f0d570ced 100644
--- a/Carpet/CarpetIOHDF5/src/OutputSlice.cc
+++ b/Carpet/CarpetIOHDF5/src/OutputSlice.cc
@@ -648,7 +648,8 @@ namespace CarpetIOHDF5 {
for (comm_state state; not state.done(); state.step()) {
for (size_t n=0; n<datas.size(); ++n) {
tmpdatas.at(n)->copy_from
- (state, datas.at(n), data_ext, ioproc, proc);
+ (state, datas.at(n), data_ext, data_ext, NULL,
+ ioproc, proc);
}
}
@@ -1420,11 +1421,23 @@ namespace CarpetIOHDF5 {
datasetname.append (datasetname_suffix.str());
// remove an already existing dataset of the same name
- if (slice_requests.at(vi + n)->check_exist) {
+ ioRequest* request = slice_requests.at(vi + n);
+ if (not request) {
+#ifdef IOUTIL_PARSER_HAS_OUT_DT
+ request = IOUtil_DefaultIORequest (cctkGH, vi + n, 1, -1.0);
+#else
+ request = IOUtil_DefaultIORequest (cctkGH, vi + n, 1);
+#endif
+ }
+ if (request->check_exist) {
H5E_BEGIN_TRY {
H5Gunlink(file, datasetname.c_str());
} H5E_END_TRY;
}
+ // free I/O request structure
+ if (request != slice_requests.at(vi + n)) {
+ IOUtil_FreeIORequest (&request);
+ }
// write the dataset
hid_t dataset;
@@ -1516,11 +1529,23 @@ namespace CarpetIOHDF5 {
datasetname.append (datasetname_suffix.str());
// remove an already existing dataset of the same name
- if (slice_requests[vi + n]->check_exist) {
+ ioRequest* request = slice_requests.at(vi + n);
+ if (not request) {
+#ifdef IOUTIL_PARSER_HAS_OUT_DT
+ request = IOUtil_DefaultIORequest (cctkGH, vi + n, 1, -1.0);
+#else
+ request = IOUtil_DefaultIORequest (cctkGH, vi + n, 1);
+#endif
+ }
+ if (request->check_exist) {
H5E_BEGIN_TRY {
H5Gunlink(file, datasetname.c_str());
} H5E_END_TRY;
}
+ // free I/O request structure
+ if (request != slice_requests.at(vi + n)) {
+ IOUtil_FreeIORequest (&request);
+ }
// write the dataset
hid_t dataset;