aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetIOASCII
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2008-08-03 22:04:07 -0500
committerErik Schnetter <schnetter@cct.lsu.edu>2008-08-03 22:10:45 -0500
commit468aec3031c0ec657353e277637c9068fe305af7 (patch)
treeb2e052dfecbbf4eae4c008784c249855ede51d65 /Carpet/CarpetIOASCII
parentb42ccb8da80bb7c413a57d418dc9ac81d21d862d (diff)
CarpetIOASCII: Correct problem with IO::out_dt
Correct a multi-processor synchronisation problem when using IO::out_dt.
Diffstat (limited to 'Carpet/CarpetIOASCII')
-rw-r--r--Carpet/CarpetIOASCII/src/ioascii.cc17
1 files changed, 11 insertions, 6 deletions
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