aboutsummaryrefslogtreecommitdiff
path: root/schedule.ccl
diff options
context:
space:
mode:
Diffstat (limited to 'schedule.ccl')
-rw-r--r--schedule.ccl89
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. ###