From d2efacf027332e0fbb29c0dd556c838bded13245 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sun, 3 Aug 2008 22:04:44 -0500 Subject: CarpetIOScalar: Correct problem with IO::out_dt Correct a multi-processor synchronisation problem when using IO::out_dt. --- Carpet/CarpetIOScalar/src/ioscalar.cc | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'Carpet/CarpetIOScalar') diff --git a/Carpet/CarpetIOScalar/src/ioscalar.cc b/Carpet/CarpetIOScalar/src/ioscalar.cc index 88a35541d..6cb255e4a 100644 --- a/Carpet/CarpetIOScalar/src/ioscalar.cc +++ b/Carpet/CarpetIOScalar/src/ioscalar.cc @@ -535,15 +535,20 @@ namespace CarpetIOScalar { } else if (cctk_iteration == *this_iteration) { // we already decided to output this iteration output_this_iteration = true; - } else if (cctk_time / cctk_delta_time - >= (*last_output_time + myoutdt) / cctk_delta_time - 1.0e-12) { - // it is time for the next output - output_this_iteration = true; - *last_output_time = cctk_time; - *this_iteration = cctk_iteration; } else { - // we want no output at this iteration - output_this_iteration = false; + int do_output = + (cctk_time / cctk_delta_time >= + (*last_output_time + 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 = cctk_time; + *this_iteration = cctk_iteration; + } else { + // we want no output at this iteration + output_this_iteration = false; + } } } else { -- cgit v1.2.3