diff options
Diffstat (limited to 'Carpet/Carpet/src/Initialise.cc')
-rw-r--r-- | Carpet/Carpet/src/Initialise.cc | 132 |
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); |