diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-08-03 22:04:31 -0500 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-08-03 22:04:31 -0500 |
commit | 1e2adf79c918a03a990c8812b82713a33a8967af (patch) | |
tree | 46f7ab8d3822082bcc8c863f071c5947757cfac1 /Carpet/CarpetIOHDF5/src/CarpetIOHDF5.cc | |
parent | 7e9e70198a20e543493e70d3231236bc60f05899 (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.cc | 17 |
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; + } } } |