diff options
Diffstat (limited to 'src/RK45.c')
-rw-r--r-- | src/RK45.c | 50 |
1 files changed, 28 insertions, 22 deletions
@@ -74,11 +74,11 @@ void MoL_RK45Add(CCTK_ARGUMENTS) CCTK_INT index, var, scratchstep, alphaindex, scratchindex; CCTK_INT totalsize; - CCTK_REAL *UpdateVar; - CCTK_REAL *RHSVar; - CCTK_REAL *ScratchVar; - CCTK_REAL *ErrorVar; - CCTK_REAL *OldVar; + CCTK_REAL * restrict UpdateVar; + CCTK_REAL const * restrict RHSVar; + CCTK_REAL * restrict ScratchVar; + CCTK_REAL * restrict ErrorVar; + CCTK_REAL const * restrict OldVar; CCTK_INT arrayscratchlocation; @@ -126,8 +126,8 @@ void MoL_RK45Add(CCTK_ARGUMENTS) UpdateVar = (CCTK_REAL *)CCTK_VarDataPtrI(cctkGH, 0, EvolvedVariableIndex[var]); - RHSVar = (CCTK_REAL *)CCTK_VarDataPtrI(cctkGH, 0, - RHSVariableIndex[var]); + RHSVar = (CCTK_REAL const *)CCTK_VarDataPtrI(cctkGH, 0, + RHSVariableIndex[var]); ScratchVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, CCTK_FirstVarIndex("MOL::SCRATCHSPACE") + var @@ -143,29 +143,28 @@ void MoL_RK45Add(CCTK_ARGUMENTS) for (var = 0; var < MoLNumEvolvedVariables; var++) { - OldVar = (CCTK_REAL *)CCTK_VarDataPtrI(cctkGH, 1, - EvolvedVariableIndex[var]); + OldVar = (CCTK_REAL const *)CCTK_VarDataPtrI(cctkGH, 1, + EvolvedVariableIndex[var]); UpdateVar = (CCTK_REAL *)CCTK_VarDataPtrI(cctkGH, 0, EvolvedVariableIndex[var]); - RHSVar = (CCTK_REAL *)CCTK_VarDataPtrI(cctkGH, 0, - CCTK_FirstVarIndex("MOL::SCRATCHSPACE") - + var - + MoL_Num_Evolved_Vars * - (MoL_Intermediate_Steps - - (*MoL_Intermediate_Step))); + RHSVar = (CCTK_REAL const *)CCTK_VarDataPtrI(cctkGH, 0, + CCTK_FirstVarIndex("MOL::SCRATCHSPACE") + + var + + MoL_Num_Evolved_Vars * + (MoL_Intermediate_Steps - + (*MoL_Intermediate_Step))); ErrorVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, CCTK_FirstVarIndex("MOL::ERRORESTIMATE") + var); - - for (index = 0; index < totalsize; index++) - { - UpdateVar[index] = OldVar[index]; - ErrorVar[index] = 0; - } - + if (*MoL_Intermediate_Step - 1) { + for (index = 0; index < totalsize; index++) + { + UpdateVar[index] = OldVar[index]; + } + for (scratchstep = 0; scratchstep < MoL_Intermediate_Steps - (*MoL_Intermediate_Step) + 1; scratchstep++) @@ -191,6 +190,13 @@ void MoL_RK45Add(CCTK_ARGUMENTS) } else { + + for (index = 0; index < totalsize; index++) + { + UpdateVar[index] = OldVar[index]; + ErrorVar[index] = 0; + } + for (scratchstep = 0; scratchstep < 6; scratchstep++) { |