aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/Initialise.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Carpet/Carpet/src/Initialise.cc')
-rw-r--r--Carpet/Carpet/src/Initialise.cc132
1 files changed, 108 insertions, 24 deletions
diff --git a/Carpet/Carpet/src/Initialise.cc b/Carpet/Carpet/src/Initialise.cc
index 08a00aa84..75b6c56ad 100644
--- a/Carpet/Carpet/src/Initialise.cc
+++ b/Carpet/Carpet/src/Initialise.cc
@@ -56,7 +56,11 @@ namespace Carpet {
CCTKi_AddGH (fc, convlev, cctkGH);
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;
global_time = cctk_initial_time;
delta_time = 1.0;
for (int ml = 0; ml < mglevel; ++ ml) {
@@ -140,8 +144,12 @@ namespace Carpet {
timer.start();
BEGIN_MGLEVEL_LOOP(cctkGH) {
+ do_early_global_mode = true;
+ do_late_global_mode = true;
do_global_mode = true;
- do_meta_mode = mglevel==mglevels-1; // on first iteration, coarsest grid
+ do_early_meta_mode = mglevel==mglevels-1;
+ do_late_meta_mode = mglevel==0;
+ do_meta_mode = do_early_meta_mode; // on first iteration, coarsest grid
// Checking
{
@@ -179,8 +187,12 @@ namespace Carpet {
for (int rl=0; rl<reflevels; ++rl) {
BEGIN_MGLEVEL_LOOP(cctkGH) {
ENTER_LEVEL_MODE (cctkGH, rl) {
- do_global_mode = reflevel==0; // on first iteration, coarsest grid
- do_meta_mode = do_global_mode and mglevel==mglevels-1; // on first iteration, coarsest grid
+ 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_early_global_mode; // on first iteration, coarsest grid
+ do_meta_mode = do_early_meta_mode; // on first iteration, coarsest grid
// cctkGH->cctk_time = global_time;
@@ -200,7 +212,7 @@ namespace Carpet {
// Timing statistics
// (do this here, after cctk_time has been recovered)
- if (do_global_mode) {
+ if (do_early_global_mode) {
InitTimingStats (cctkGH);
}
@@ -233,8 +245,12 @@ namespace Carpet {
for (int rl=0; rl<reflevels; ++rl) {
BEGIN_MGLEVEL_LOOP(cctkGH) {
ENTER_LEVEL_MODE (cctkGH, rl) {
- do_global_mode = reflevel==reflevels-1; // on last iteration, finest grid
- do_meta_mode = do_global_mode and mglevel==mglevels-1; // on first iteration, coarsest grid
+ 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_early_global_mode; // on first iteration, coarsest grid
+ do_meta_mode = do_early_meta_mode; // on first iteration, coarsest grid
Waypoint ("Recovering II at iteration %d time %g%s%s",
cctkGH->cctk_iteration, (double)cctkGH->cctk_time,
@@ -287,8 +303,12 @@ namespace Carpet {
for (int rl=0; rl<reflevels; ++rl) {
BEGIN_MGLEVEL_LOOP(cctkGH) {
ENTER_LEVEL_MODE (cctkGH, rl) {
- do_global_mode = reflevel==0; // on first iteration, coarsest grid
- do_meta_mode = do_global_mode and mglevel==mglevels-1; // on first iteration, coarsest grid
+ 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_early_global_mode; // on first iteration, coarsest grid
+ do_meta_mode = do_early_meta_mode; // on first iteration, coarsest grid
// cctkGH->cctk_time = global_time;
@@ -298,7 +318,7 @@ namespace Carpet {
(do_meta_mode ? " (meta)" : ""));
// Timing statistics
- if (do_global_mode) {
+ if (do_early_global_mode) {
InitTimingStats (cctkGH);
}
@@ -394,8 +414,12 @@ namespace Carpet {
for (int rl=0; rl<reflevels; ++rl) {
BEGIN_MGLEVEL_LOOP(cctkGH) {
ENTER_LEVEL_MODE (cctkGH, rl) {
- do_global_mode = reflevel==reflevels-1; // on last iteration, finest grid
- do_meta_mode = do_global_mode and mglevel==mglevels-1; // on first iteration, coarsest grid
+ 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; // on last iteration, finest grid
+ do_meta_mode = do_late_meta_mode; // on last iteration, finest grid
Waypoint ("Initialisation II at iteration %d time %g%s%s",
cctkGH->cctk_iteration, (double)cctkGH->cctk_time,
@@ -431,8 +455,12 @@ namespace Carpet {
for (int rl=0; rl<reflevels; ++rl) {
BEGIN_MGLEVEL_LOOP(cctkGH) {
ENTER_LEVEL_MODE (cctkGH, rl) {
- do_global_mode = reflevel==reflevels-1; // last iteration, finest grid
- do_meta_mode = do_global_mode and mglevel==mglevels-1; // first iteration, coarsest grid
+ 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; // on last iteration, finest grid
+ do_meta_mode = do_late_meta_mode; // on last iteration, finest grid
Waypoint ("Initialisation III at iteration %d time %g%s%s",
cctkGH->cctk_iteration, (double)cctkGH->cctk_time,
@@ -449,7 +477,7 @@ namespace Carpet {
// Analysis
ScheduleTraverse (where, "CCTK_ANALYSIS", cctkGH);
- if (do_global_mode) {
+ if (do_late_global_mode) {
// Timing statistics
UpdateTimingStats (cctkGH);
}
@@ -703,9 +731,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;
// Preregrid
Waypoint ("Preregrid at iteration %d time %g%s%s",
@@ -730,8 +766,12 @@ namespace Carpet {
if (did_recompose) {
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,
@@ -790,7 +830,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();
}
@@ -809,9 +853,17 @@ namespace Carpet {
assert (is_meta_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;
ENTER_GLOBAL_MODE (cctkGH, 0) {
ENTER_LEVEL_MODE (cctkGH, 0) {
@@ -842,7 +894,11 @@ namespace Carpet {
} LEAVE_GLOBAL_MODE;
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();
}
@@ -864,9 +920,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;
// Preregrid
Waypoint ("Preregridinitial at iteration %d time %g%s%s",
@@ -891,8 +955,12 @@ namespace Carpet {
if (did_recompose) {
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 ("Postregridinitial at iteration %d time %g%s%s",
cctkGH->cctk_iteration, (double)cctkGH->cctk_time,
@@ -952,7 +1020,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();
}
@@ -988,8 +1060,12 @@ namespace Carpet {
BEGIN_MGLEVEL_LOOP(cctkGH) {
BEGIN_REFLEVEL_LOOP(cctkGH) {
- do_global_mode = reflevel==0;
- 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_early_global_mode;
+ do_meta_mode = do_early_meta_mode;
initialise_3tl_advance_time (cctkGH);
initialise_3tl_evolve_Ia (cctkGH);
@@ -1006,8 +1082,12 @@ namespace Carpet {
BEGIN_MGLEVEL_LOOP(cctkGH) {
BEGIN_REVERSE_REFLEVEL_LOOP(cctkGH) {
- do_global_mode = reflevel==0;
- do_meta_mode = do_global_mode and mglevel==mglevels-1;
+ do_early_global_mode = reflevel==reflevels-1;
+ do_late_global_mode = reflevel==0;
+ 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;
initialise_3tl_evolve_IIb (cctkGH);
initialise_3tl_advance_time_2 (cctkGH);
@@ -1020,8 +1100,12 @@ namespace Carpet {
BEGIN_MGLEVEL_LOOP(cctkGH) {
BEGIN_REVERSE_REFLEVEL_LOOP(cctkGH) {
- do_global_mode = reflevel==0;
- do_meta_mode = do_global_mode and mglevel==mglevels-1;
+ do_early_global_mode = reflevel==reflevels-1;
+ do_late_global_mode = reflevel==0;
+ 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;
initialise_3tl_reset_time (cctkGH);