aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/Evolve.cc
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2008-07-11 15:57:07 -0500
committerErik Schnetter <schnetter@cct.lsu.edu>2008-07-11 15:57:07 -0500
commite91c85225521026738519d1d81455b22bbdcb2ee (patch)
tree58353f4aa6dad338a84c7dce9a5bb5a91b1750ad /Carpet/Carpet/src/Evolve.cc
parent0919bf0eae4230dd83343340e562f0fdbe7cb9b0 (diff)
Carpet: Add new modes "global_early" and "global_late"
Add new modes meta_early, meta_late, global_early, and global_late, which execute like meta mode or global mode, but execut either as early or as late as possible in the schedule.
Diffstat (limited to 'Carpet/Carpet/src/Evolve.cc')
-rw-r--r--Carpet/Carpet/src/Evolve.cc43
1 files changed, 32 insertions, 11 deletions
diff --git a/Carpet/Carpet/src/Evolve.cc b/Carpet/Carpet/src/Evolve.cc
index ec3eeb32e..f6ea07eab 100644
--- a/Carpet/Carpet/src/Evolve.cc
+++ b/Carpet/Carpet/src/Evolve.cc
@@ -247,9 +247,17 @@ namespace Carpet {
assert (is_level_mode());
bool const old_do_global_mode = do_global_mode;
+ bool const old_do_early_global_mode = do_early_global_mode;
+ bool const old_do_late_global_mode = do_late_global_mode;
bool const old_do_meta_mode = do_meta_mode;
+ bool const old_do_early_meta_mode = do_early_meta_mode;
+ bool const old_do_late_meta_mode = do_late_meta_mode;
do_global_mode = true;
+ do_early_global_mode = true;
+ do_late_global_mode = true;
do_meta_mode = true;
+ do_early_meta_mode = true;
+ do_late_meta_mode = true;
Waypoint ("Preregrid at iteration %d time %g%s%s",
cctkGH->cctk_iteration, (double)cctkGH->cctk_time,
@@ -278,8 +286,12 @@ namespace Carpet {
if (did_recompose or rl == reflevels - 1) {
BEGIN_MGLEVEL_LOOP (cctkGH) {
ENTER_LEVEL_MODE (cctkGH, rl) {
- do_global_mode = reflevel == reflevels - 1;
- do_meta_mode = do_global_mode and mglevel==mglevels-1;
+ do_early_global_mode = reflevel==0;
+ do_late_global_mode = reflevel==reflevels-1;
+ do_early_meta_mode = do_early_global_mode and mglevel==mglevels-1;
+ do_late_meta_mode = do_late_global_mode and mglevel==0;
+ do_global_mode = do_late_global_mode;
+ do_meta_mode = do_late_meta_mode;
Waypoint ("Postregrid at iteration %d time %g%s%s",
cctkGH->cctk_iteration, (double)cctkGH->cctk_time,
@@ -338,7 +350,11 @@ namespace Carpet {
} // if did_regrid
do_global_mode = old_do_global_mode;
+ do_early_global_mode = old_do_early_global_mode;
+ do_late_global_mode = old_do_late_global_mode;
do_meta_mode = old_do_meta_mode;
+ do_early_meta_mode = old_do_early_meta_mode;
+ do_late_meta_mode = old_do_late_meta_mode;
timer.stop();
}
@@ -366,11 +382,12 @@ namespace Carpet {
ENTER_GLOBAL_MODE (cctkGH, ml) {
ENTER_LEVEL_MODE (cctkGH, rl) {
- do_global_mode
- = (global_mode_on_finest_grid
- ? reflevel == reflevels - 1
- : not have_done_global_mode);
- do_meta_mode = do_global_mode and mglevel==mglevels-1;
+ do_early_global_mode = not have_done_global_mode;
+ do_late_global_mode = reflevel==reflevels-1;
+ do_early_meta_mode = do_early_global_mode and mglevel==mglevels-1;
+ do_late_meta_mode = do_late_global_mode and mglevel==0;
+ do_global_mode = do_early_global_mode;
+ do_meta_mode = do_early_meta_mode;
assert (not (have_done_global_mode and do_global_mode));
have_done_global_mode |= do_global_mode;
have_done_anything = true;
@@ -498,8 +515,12 @@ namespace Carpet {
ENTER_GLOBAL_MODE (cctkGH, ml) {
ENTER_LEVEL_MODE (cctkGH, rl) {
- do_global_mode = reflevel == reflevels - 1;
- do_meta_mode = do_global_mode and mglevel==mglevels-1;
+ do_early_global_mode = not have_done_global_mode;
+ do_late_global_mode = reflevel==reflevels-1;
+ do_early_meta_mode = do_early_global_mode and mglevel==mglevels-1;
+ do_late_meta_mode = do_late_global_mode and mglevel==0;
+ do_global_mode = do_late_global_mode;
+ do_meta_mode = do_global_mode and do_late_meta_mode;
assert (not (have_done_global_mode and do_global_mode));
have_done_global_mode |= do_global_mode;
have_done_anything = true;
@@ -526,7 +547,7 @@ namespace Carpet {
// Analysis
ScheduleTraverse (where, "CCTK_ANALYSIS", cctkGH);
- if (do_global_mode) {
+ if (do_late_global_mode) {
// Timing statistics
UpdateTimingStats (cctkGH);
}
@@ -537,7 +558,7 @@ namespace Carpet {
// Checking
CheckChecksums (cctkGH, alltimes);
- if (do_global_mode) {
+ if (do_late_global_mode) {
// Timing statistics
PrintTimingStats (cctkGH);
}