aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2008-08-03 22:04:31 -0500
committerErik Schnetter <schnetter@cct.lsu.edu>2008-08-03 22:04:31 -0500
commit1e2adf79c918a03a990c8812b82713a33a8967af (patch)
tree46f7ab8d3822082bcc8c863f071c5947757cfac1 /Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc
parent7e9e70198a20e543493e70d3231236bc60f05899 (diff)
CarpetIOHDF5: Correct problem with IO::out_dt
Correct a multi-processor synchronisation problem when using IO::out_dt.
Diffstat (limited to 'Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc')
-rw-r--r--Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc b/Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc
index e3b37c312..f49260002 100644
--- a/Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc
+++ b/Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc
@@ -513,12 +513,17 @@ static int TimeToOutput (const cGH* const cctkGH, const int vindex)
CCTK_REAL myoutdt = out_dt == -2 ? io_out_dt : out_dt;
if (myoutdt == 0 or *this_iteration == cctk_iteration) {
output_this_iteration = true;
- } else if (myoutdt > 0 and (cctk_time / cctk_delta_time
- >= *next_output_time / cctk_delta_time - 1.0e-12)) {
- // it is time for the next output
- output_this_iteration = true;
- *this_iteration = cctk_iteration;
- *next_output_time = cctk_time + myoutdt;
+ } else if (myoutdt > 0) {
+ int do_output =
+ (cctk_time / cctk_delta_time >=
+ *next_output_time / cctk_delta_time - 1.0e-12);
+ MPI_Bcast (&do_output, 1, MPI_INT, 0, dist::comm());
+ if (do_output) {
+ // it is time for the next output
+ output_this_iteration = true;
+ *this_iteration = cctk_iteration;
+ *next_output_time = cctk_time + myoutdt;
+ }
}
}