diff options
Diffstat (limited to 'schedule.ccl')
-rw-r--r-- | schedule.ccl | 89 |
1 files changed, 72 insertions, 17 deletions
diff --git a/schedule.ccl b/schedule.ccl index 43dc1f9..4e0ae19 100644 --- a/schedule.ccl +++ b/schedule.ccl @@ -130,6 +130,22 @@ if (initial_data_is_crap) } "A bad routine. Fills all previous timelevels with data copied from the current." } +########################################## +### Initialise the step size control ### +########################################## + +schedule MoL_StartLoop AT Evol BEFORE MoL_Evolution +{ + LANG: C + OPTIONS: LEVEL +} "Initialise the step size control" + +schedule MoL_StartLoop AT Initial +{ + LANG: C + OPTIONS: LEVEL +} "Initialise the step size control" + ###################################################### ### The evolution step. This is almost a self ### ### contained EVOL step with PRE and POST steps ### @@ -149,7 +165,7 @@ if (MoL_Num_Scratch_Levels) { if (MoL_Max_Evolved_Array_Size) { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: ScratchSpace STORAGE: SandRScratchSpace @@ -163,7 +179,7 @@ if (MoL_Num_Scratch_Levels) } else { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: ScratchSpace STORAGE: SandRScratchSpace @@ -178,7 +194,7 @@ if (MoL_Num_Scratch_Levels) { if (MoL_Max_Evolved_Array_Size) { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: ScratchSpace STORAGE: ArrayScratchSpace @@ -191,7 +207,7 @@ if (MoL_Num_Scratch_Levels) } else { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: ScratchSpace # STORAGE: ComplexScratchSpace @@ -208,7 +224,7 @@ if (MoL_Num_Scratch_Levels) { if (MoL_Max_Evolved_Array_Size) { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: SandRScratchSpace STORAGE: ArrayScratchSpace @@ -221,7 +237,7 @@ if (MoL_Num_Scratch_Levels) } else { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: SandRScratchSpace # STORAGE: ComplexScratchSpace @@ -235,7 +251,7 @@ if (MoL_Num_Scratch_Levels) { if (MoL_Max_Evolved_Array_Size) { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: ArrayScratchSpace STORAGE: ArraySandRScratchSpace @@ -247,7 +263,7 @@ if (MoL_Num_Scratch_Levels) } else { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { # STORAGE: ComplexScratchSpace # STORAGE: ComplexSandRScratchSpace @@ -266,7 +282,7 @@ else { if (MoL_Max_Evolved_Array_Size) { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: SandRScratchSpace STORAGE: ArraySandRScratchSpace @@ -278,7 +294,7 @@ else } else { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: SandRScratchSpace # STORAGE: ComplexScratchSpace @@ -292,7 +308,7 @@ else { if (MoL_Max_Evolved_Array_Size) { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: ArraySandRScratchSpace # STORAGE: ComplexScratchSpace @@ -303,7 +319,7 @@ else } else { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { # STORAGE: ComplexScratchSpace # STORAGE: ComplexSandRScratchSpace @@ -319,7 +335,7 @@ else { if (MoL_Max_Evolved_Array_Size) { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: SandRScratchSpace STORAGE: ArraySandRScratchSpace @@ -331,7 +347,7 @@ else } else { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: SandRScratchSpace # STORAGE: ComplexScratchSpace @@ -345,7 +361,7 @@ else { if (MoL_Max_Evolved_Array_Size) { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { STORAGE: ArraySandRScratchSpace # STORAGE: ComplexScratchSpace @@ -356,7 +372,7 @@ else } else { - schedule GROUP MoL_Evolution AT Evol + schedule GROUP MoL_Evolution AT Evol WHILE MoL::MoL_Stepsize_Bad { # STORAGE: ComplexScratchSpace # STORAGE: ComplexSandRScratchSpace @@ -515,7 +531,7 @@ else if (CCTK_Equals(ODE_Method,"RK3")) } else if (CCTK_Equals(ODE_Method,"RK45")) { - STORAGE: ErrorEstimate + STORAGE: ErrorEstimate ErrorScalars schedule MoL_RK45Add AS MoL_Add IN MoL_Step AFTER MoL_CalcRHS BEFORE MoL_PostStep { @@ -595,6 +611,45 @@ schedule MoL_RestoreSandR IN MoL_Evolution AFTER MoL_PostStep LANG: C } "Restoring the Save and Restore variables to the original state" +################################################### +### Loop until the step size was small enough ### +################################################### + +if (adaptive_stepsize) +{ + # Adaptive step size control + schedule MoL_InitAdaptiveError IN MoL_Evolution AFTER MoL_PostStep + { + LANG: C + OPTIONS: LEVEL + } "Control the step size: initialize error check variables" + + schedule MoL_FindAdaptiveError IN MoL_Evolution AFTER MoL_InitAdaptiveError + { + LANG: C + } "Control the step size: compute error check variables" + + schedule MoL_ReduceAdaptiveError IN MoL_Evolution AFTER MoL_FindAdaptiveError + { + LANG: C + OPTIONS: LEVEL + } "Control the step size: reduce error check variables" + + schedule MoL_SetEstimatedDt AT POSTSTEP + { + LANG: C + OPTIONS: LEVEL + } "Control the step size: set the new timestep" +} +else +{ + schedule MoL_FinishLoop IN MoL_Evolution AFTER MoL_PostStep + { + LANG: C + OPTIONS: LEVEL + } "Control the step size" +} + ################################################################ ### At the end (but before driver terminate to avoid those ### ### irritating segfaults) free the index arrays. ### |