aboutsummaryrefslogtreecommitdiff
path: root/src/SetTime.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/SetTime.c')
-rw-r--r--src/SetTime.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/SetTime.c b/src/SetTime.c
index c04cc0b..32e893c 100644
--- a/src/SetTime.c
+++ b/src/SetTime.c
@@ -298,6 +298,63 @@ void MoL_ResetTime(CCTK_ARGUMENTS)
+ ((alpha_array87[substep] - 1)
* (* Original_Delta_Time) / cctkGH->cctk_timefac));
}
+ else if (CCTK_EQUALS(ODE_Method,"RK2-MR-2:1"))
+ {
+ const int substep = MoL_Intermediate_Steps - (* MoL_Intermediate_Step);
+
+ CCTK_REAL dt = (*Original_Delta_Time)/cctkGH->cctk_timefac;
+ switch (substep)
+ {
+ case 1:
+ case 2:
+ dt *= 0.5;
+ break;
+ default:
+ dt = 0;
+ }
+ cctkGH->cctk_time = (*Original_Time) - dt;
+ }
+ else if (CCTK_EQUALS(ODE_Method,"RK4-MR-2:1"))
+ {
+ const int substep = MoL_Intermediate_Steps - (* MoL_Intermediate_Step);
+
+ CCTK_REAL dt = (*Original_Delta_Time)/cctkGH->cctk_timefac;
+ switch (substep)
+ {
+ case 1:
+ case 2:
+ dt *= 3.0/4.0;
+ break;
+ case 3:
+ case 4:
+ case 5:
+ dt *= 1.0/2.0;
+ break;
+ case 6:
+ case 7:
+ dt *= 1.0/4.0;
+ break;
+ default:
+ dt = 0;
+ }
+ cctkGH->cctk_time = (*Original_Time) - dt;
+ }
+ else if (CCTK_EQUALS(ODE_Method,"RK4-RK2"))
+ {
+ const int substep = MoL_Intermediate_Steps - (* MoL_Intermediate_Step);
+
+ CCTK_REAL dt = (*Original_Delta_Time)/cctkGH->cctk_timefac;
+ switch (substep)
+ {
+ case 1:
+ case 2:
+ dt *= 0.5;
+ break;
+ default:
+ dt = 0;
+ }
+ cctkGH->cctk_time = (*Original_Time) - dt;
+ }
#ifdef MOLDEBUG
printf("MoL has once more reset t (%d): %f.\n",
*MoL_Intermediate_Step, cctkGH->cctk_time);