aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Carpet/Carpet/src/Evolve.cc80
-rw-r--r--Carpet/Carpet/src/Initialise.cc11
2 files changed, 65 insertions, 26 deletions
diff --git a/Carpet/Carpet/src/Evolve.cc b/Carpet/Carpet/src/Evolve.cc
index a9034f774..21647a4e3 100644
--- a/Carpet/Carpet/src/Evolve.cc
+++ b/Carpet/Carpet/src/Evolve.cc
@@ -449,41 +449,22 @@ namespace Carpet {
for (int ml=mglevels-1; ml>=0; --ml) {
- bool have_done_global_mode = false;
- bool have_done_early_global_mode = false;
- bool have_done_late_global_mode = false;
- bool have_done_anything = false;
+ bool did_restrict = false;
for (int rl=reflevels-2; rl>=0; --rl) {
- int const do_every
- = ipow(mgfact, ml) * (maxtimereflevelfact / timereffacts.AT(rl));
+ int const do_every =
+ ipow(mgfact, ml) * (maxtimereflevelfact / timereffacts.AT(rl));
if (cctkGH->cctk_iteration % do_every == 0) {
ENTER_GLOBAL_MODE (cctkGH, ml) {
ENTER_LEVEL_MODE (cctkGH, rl) {
BeginTimingLevel (cctkGH);
- do_early_global_mode = reflevel==reflevels-2;
- do_late_global_mode = not have_done_late_global_mode;
- 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));
- assert (not (have_done_early_global_mode and
- do_early_global_mode));
- assert (not (have_done_late_global_mode and
- do_late_global_mode));
- have_done_global_mode |= do_global_mode;
- have_done_early_global_mode |= do_early_global_mode;
- have_done_late_global_mode |= do_late_global_mode;
- have_done_anything = true;
-
Waypoint ("Evolution/Restrict at iteration %d time %g",
cctkGH->cctk_iteration, (double)cctkGH->cctk_time);
Restrict (cctkGH);
- ScheduleTraverse (where, "CCTK_POSTRESTRICT", cctkGH);
+ did_restrict = true;
EndTimingLevel (cctkGH);
} LEAVE_LEVEL_MODE;
@@ -491,9 +472,56 @@ namespace Carpet {
} // if do_every
} // for rl
- if (have_done_anything) assert (have_done_global_mode);
- if (have_done_anything) assert (have_done_early_global_mode);
- if (have_done_anything) assert (have_done_late_global_mode);
+ if (did_restrict) {
+
+ bool have_done_global_mode = false;
+ bool have_done_early_global_mode = false;
+ bool have_done_late_global_mode = false;
+ bool have_done_anything = false;
+
+ for (int rl=0; rl<reflevels; ++rl) {
+ int const do_every =
+ ipow(mgfact, ml) * (maxtimereflevelfact / timereffacts.AT(rl));
+ if (cctkGH->cctk_iteration % do_every == 0) {
+ ENTER_GLOBAL_MODE (cctkGH, ml) {
+ ENTER_LEVEL_MODE (cctkGH, rl) {
+ BeginTimingLevel (cctkGH);
+
+ // do_early_global_mode = reflevel==reflevels-2;
+ // do_late_global_mode = not have_done_late_global_mode;
+ do_early_global_mode = not have_done_early_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));
+ assert (not (have_done_early_global_mode and
+ do_early_global_mode));
+ assert (not (have_done_late_global_mode and
+ do_late_global_mode));
+ have_done_global_mode |= do_global_mode;
+ have_done_early_global_mode |= do_early_global_mode;
+ have_done_late_global_mode |= do_late_global_mode;
+ have_done_anything = true;
+
+ Waypoint ("Evolution/PostRestrict at iteration %d time %g",
+ cctkGH->cctk_iteration, (double)cctkGH->cctk_time);
+
+ ScheduleTraverse (where, "CCTK_POSTRESTRICT", cctkGH);
+
+ EndTimingLevel (cctkGH);
+ } LEAVE_LEVEL_MODE;
+ } LEAVE_GLOBAL_MODE;
+ } // if do_every
+ } // for rl
+
+ if (have_done_anything) assert (have_done_global_mode);
+ if (have_done_anything) assert (have_done_early_global_mode);
+ if (have_done_anything) assert (have_done_late_global_mode);
+
+ } // if did_restrict
} // for ml
diff --git a/Carpet/Carpet/src/Initialise.cc b/Carpet/Carpet/src/Initialise.cc
index 35fe88a6b..c9ab6cef3 100644
--- a/Carpet/Carpet/src/Initialise.cc
+++ b/Carpet/Carpet/src/Initialise.cc
@@ -282,6 +282,7 @@ namespace Carpet {
do_global_mode = do_early_global_mode; // on first iteration, coarsest grid
do_meta_mode = do_early_meta_mode; // on first iteration, coarsest grid
+#if 0
BEGIN_TIMELEVEL_LOOP(cctkGH) {
Waypoint ("Recovering II at iteration %d time %g timelevel %d%s%s",
@@ -295,6 +296,16 @@ namespace Carpet {
ScheduleTraverse (where, "CCTK_POST_RECOVER_VARIABLES", cctkGH);
} END_TIMELEVEL_LOOP;
+#else
+ Waypoint ("Recovering II at iteration %d time %g%s%s",
+ cctkGH->cctk_iteration,
+ (double)cctkGH->cctk_time,
+ (do_global_mode ? " (global)" : ""),
+ (do_meta_mode ? " (meta)" : ""));
+
+ // Post recover variables
+ ScheduleTraverse (where, "CCTK_POST_RECOVER_VARIABLES", cctkGH);
+#endif
// Checking
PoisonCheck (cctkGH, currenttime);