aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/Comm.cc
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2006-12-06 16:30:00 +0000
committerErik Schnetter <schnetter@cct.lsu.edu>2006-12-06 16:30:00 +0000
commitca6419b44bcd6d12f72b8f9997d3abe3f96e019a (patch)
treeb6fafcf41d7d0e927c1f0cc2bbc811c451168801 /Carpet/Carpet/src/Comm.cc
parentd6761b9efd3c61b3b2a8d79b7b44bf1aea91fede (diff)
Carpet: Add facility to switch off synchronsing during time evolution
Add parameter sync_during_time_integration. This parameters disables synchronisation during time integration, similar to the way in which prolongation is disabled. This can potentially reduce communication overhead. darcs-hash:20061206163017-dae7b-953a43e45537fcac6acb2436cbcba3a1b75ee938.gz
Diffstat (limited to 'Carpet/Carpet/src/Comm.cc')
-rw-r--r--Carpet/Carpet/src/Comm.cc54
1 files changed, 30 insertions, 24 deletions
diff --git a/Carpet/Carpet/src/Comm.cc b/Carpet/Carpet/src/Comm.cc
index 284484eb2..0ad0e6faf 100644
--- a/Carpet/Carpet/src/Comm.cc
+++ b/Carpet/Carpet/src/Comm.cc
@@ -127,35 +127,41 @@ namespace Carpet {
}
if (goodgroups.size() > 0) {
- // prolongate boundaries
- if (reflevel > 0) {
- if (do_prolongate) {
- bool local_do_prolongate;
- if (use_tapered_grids) {
- // TODO: Check iteration number instead
- CCTK_REAL mytime;
- CCTK_REAL parenttime;
- if (map == -1) {
- mytime = vtt.at(0)->time (0, reflevel, mglevel);
- parenttime = vtt.at(0)->time (0, reflevel - 1, mglevel);
- } else {
- mytime = vtt.at(map)->time (0, reflevel, mglevel);
- parenttime = vtt.at(map)->time (0, reflevel - 1, mglevel);
- }
- bool const in_sync =
- abs (mytime - parenttime) < 1.0e-10 * abs (delta_time);
- local_do_prolongate = in_sync;
+
+ bool local_do_prolongate;
+ if (do_prolongate) {
+ if (use_tapered_grids) {
+ // TODO: Check iteration number instead
+ CCTK_REAL mytime;
+ CCTK_REAL parenttime;
+ if (map == -1) {
+ mytime = vtt.at(0)->time (0, reflevel, mglevel);
+ parenttime = vtt.at(0)->time (0, reflevel - 1, mglevel);
} else {
- local_do_prolongate = true;
- }
- if (local_do_prolongate) {
- ProlongateGroupBoundaries (cctkGH, cctk_initial_time, goodgroups);
+ mytime = vtt.at(map)->time (0, reflevel, mglevel);
+ parenttime = vtt.at(map)->time (0, reflevel - 1, mglevel);
}
+ bool const in_sync =
+ abs (mytime - parenttime) < 1.0e-10 * abs (delta_time);
+ local_do_prolongate = in_sync;
+ } else {
+ local_do_prolongate = true;
}
+ } else {
+ local_do_prolongate = false;
}
-
+
+ // prolongate boundaries
+ if (local_do_prolongate) {
+ if (reflevel > 0) {
+ ProlongateGroupBoundaries (cctkGH, cctk_initial_time, goodgroups);
+ }
+ }
+
// synchronise ghostzones
- SyncGroups (cctkGH, goodgroups);
+ if (sync_during_time_integration or local_do_prolongate) {
+ SyncGroups (cctkGH, goodgroups);
+ }
}
return retval;