From 468aec3031c0ec657353e277637c9068fe305af7 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 3 Aug 2008 22:04:07 -0500 Subject: CarpetIOASCII: Correct problem with IO::out_dt Correct a multi-processor synchronisation problem when using IO::out_dt. --- Carpet/CarpetIOASCII/src/ioascii.cc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'Carpet/CarpetIOASCII') diff --git a/Carpet/CarpetIOASCII/src/ioascii.cc b/Carpet/CarpetIOASCII/src/ioascii.cc index f09513c7e..11814b216 100644 --- a/Carpet/CarpetIOASCII/src/ioascii.cc +++ b/Carpet/CarpetIOASCII/src/ioascii.cc @@ -339,12 +339,17 @@ namespace CarpetIOASCII { } if (myoutdt == 0 or cctk_iteration == this_iteration[outdim]) { output_this_iteration = true; - } else if (myoutdt > 0 and (cctk_time / cctk_delta_time - >= (last_output_time[outdim] + myoutdt) / cctk_delta_time - 1.0e-12)) { - // it is time for the next output - output_this_iteration = true; - last_output_time[outdim] = cctk_time; - this_iteration[outdim] = cctk_iteration; + } else if (myoutdt > 0) { + int do_output = + cctk_time / cctk_delta_time >= + (last_output_time[outdim] + myoutdt) / 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; + last_output_time[outdim] = cctk_time; + this_iteration[outdim] = cctk_iteration; + } } } // select output criterion -- cgit v1.2.3