diff options
Diffstat (limited to 'Carpet/Carpet/src/Initialise.cc')
-rw-r--r-- | Carpet/Carpet/src/Initialise.cc | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/Carpet/Carpet/src/Initialise.cc b/Carpet/Carpet/src/Initialise.cc index 9a6c2150b..ec007a882 100644 --- a/Carpet/Carpet/src/Initialise.cc +++ b/Carpet/Carpet/src/Initialise.cc @@ -20,6 +20,8 @@ #include <TimerSet.hh> #include <TimerNode.hh> +#include "Requirements.hh" + namespace Carpet { @@ -192,7 +194,7 @@ namespace Carpet { ScheduleTraverse (where, "CCTK_PARAMCHECK", cctkGH); } END_MGLEVEL_LOOP; - Requirements::CheckRequirements (cctkGH); + // Requirements::CheckRequirements (cctkGH); CCTKi_FinaliseParamWarn(); @@ -919,6 +921,7 @@ namespace Carpet { assert (not did_remove_level or did_regrid); if (did_regrid) { + Requirements::Regrid(reflevels); bool did_any_recompose = false; BEGIN_META_MODE (cctkGH) { @@ -932,6 +935,12 @@ namespace Carpet { bool did_recompose = false; did_recompose = Recompose (cctkGH, rl, prolongate_initial_data); did_any_recompose = did_any_recompose or did_recompose; + Requirements::Recompose(rl, + not did_recompose ? + Requirements::valid::everywhere : + prolongate_initial_data ? + Requirements::valid::interior : + Requirements::valid::nowhere); // Carpet assumes that a regridding operation always changes "level N // and all finer levels" so we should call POSTREGRID on all finer levels @@ -984,6 +993,7 @@ namespace Carpet { if (have_done_anything) assert (have_done_late_global_mode); } END_META_MODE; + Requirements::RegridFree(); } // if did_regrid RegridFree (cctkGH, prolongate_initial_data); @@ -1040,11 +1050,17 @@ namespace Carpet { bool const did_regrid = Regrid (cctkGH, true, prolongate_initial_data); if (did_regrid) { + Requirements::Regrid(reflevels); for (int rl=0; rl<reflevels; ++rl) { if (not enable_no_storage) { Recompose (cctkGH, rl, prolongate_initial_data); + Requirements::Recompose(rl, + prolongate_initial_data ? + Requirements::valid::interior : + Requirements::valid::nowhere); } } // for rl + Requirements::RegridFree(); } // if did_regrid RegridFree (cctkGH, prolongate_initial_data); @@ -1107,6 +1123,7 @@ namespace Carpet { assert (not did_remove_level or did_regrid); if (did_regrid) { + Requirements::Regrid(reflevels); bool did_any_recompose = false; BEGIN_META_MODE (cctkGH) { @@ -1119,6 +1136,12 @@ namespace Carpet { bool did_recompose = Recompose (cctkGH, rl, prolongate_initial_data); did_any_recompose = did_any_recompose or did_recompose; + Requirements::Recompose(rl, + not did_recompose ? + Requirements::valid::everywhere : + prolongate_initial_data ? + Requirements::valid::interior : + Requirements::valid::nowhere); // Carpet assumes that a regridding operation always changes // "level N and all finer levels" so we should call @@ -1185,6 +1208,7 @@ namespace Carpet { if (have_done_anything) assert (have_done_late_global_mode); } END_META_MODE; + Requirements::RegridFree(); } // if did_regrid RegridFree (cctkGH, prolongate_initial_data); |