diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2006-12-06 16:30:00 +0000 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2006-12-06 16:30:00 +0000 |
commit | ca6419b44bcd6d12f72b8f9997d3abe3f96e019a (patch) | |
tree | b6fafcf41d7d0e927c1f0cc2bbc811c451168801 /Carpet/Carpet/src/Comm.cc | |
parent | d6761b9efd3c61b3b2a8d79b7b44bf1aea91fede (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.cc | 54 |
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; |