diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-07-11 15:57:07 -0500 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-07-11 15:57:07 -0500 |
commit | e91c85225521026738519d1d81455b22bbdcb2ee (patch) | |
tree | 58353f4aa6dad338a84c7dce9a5bb5a91b1750ad /Carpet/Carpet/src/Evolve.cc | |
parent | 0919bf0eae4230dd83343340e562f0fdbe7cb9b0 (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.cc | 43 |
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); } |