From d2581020e698490172cee2cdea2e2deb43bf9251 Mon Sep 17 00:00:00 2001 From: schnetter Date: Sun, 11 Dec 2005 18:49:18 +0000 Subject: Add const and restrict qualifiers to the pointers. Simplify some complex arithmetic. Initialise the error variable in the RK45 integrator only after the last iteration. git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/MoL/trunk@104 578cdeb0-5ea1-4b81-8215-5a3b8777ee0b --- src/GenericRK.c | 25 +++++++++++++------------ src/InitialCopy.c | 40 ++++++++++++++++++++-------------------- src/RK2.c | 36 ++++++++++++++++++------------------ src/RK3.c | 42 ++++++++++++++++++++---------------------- src/RK45.c | 50 ++++++++++++++++++++++++++++---------------------- 5 files changed, 99 insertions(+), 94 deletions(-) (limited to 'src') diff --git a/src/GenericRK.c b/src/GenericRK.c index 7d278b5..196c83e 100644 --- a/src/GenericRK.c +++ b/src/GenericRK.c @@ -80,18 +80,19 @@ void MoL_GenericRKAdd(CCTK_ARGUMENTS) #ifdef MOLDOESCOMPLEX CCTK_COMPLEX Complex_alpha, Complex_beta, Complex_Delta_Time; - CCTK_COMPLEX *UpdateComplexVar; - CCTK_COMPLEX *RHSComplexVar; - CCTK_COMPLEX *ScratchComplexVar; + CCTK_COMPLEX * restrict UpdateComplexVar; + CCTK_COMPLEX const * restrict RHSComplexVar; + CCTK_COMPLEX * restrict ScratchComplexVar; #endif + static CCTK_INT scratchspace_firstindex = -99; CCTK_INT index, var, scratchstep, alphaindex, scratchindex; CCTK_INT totalsize; CCTK_REAL alpha, beta; - CCTK_REAL *UpdateVar; - CCTK_REAL *RHSVar; - CCTK_REAL *ScratchVar; + CCTK_REAL * restrict UpdateVar; + CCTK_REAL const * restrict RHSVar; + CCTK_REAL * restrict ScratchVar; CCTK_INT arrayscratchlocation; @@ -120,8 +121,8 @@ void MoL_GenericRKAdd(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]); /* #define MOLDEBUG 1 */ #ifdef MOLDEBUG printf("In generic RK. Variable %d (%s). RHS %d (%s). beta %g.\n", @@ -267,8 +268,8 @@ void MoL_GenericRKAdd(CCTK_ARGUMENTS) UpdateComplexVar = (CCTK_COMPLEX *)CCTK_VarDataPtrI(cctkGH, 0, EvolvedComplexVariableIndex[var]); - RHSComplexVar = (CCTK_COMPLEX *)CCTK_VarDataPtrI(cctkGH, 0, - RHSVariableIndex[var]); + RHSComplexVar = (CCTK_COMPLEX const *)CCTK_VarDataPtrI(cctkGH, 0, + RHSVariableIndex[var]); for (index = 0; index < totalsize; index++) { @@ -345,8 +346,8 @@ void MoL_GenericRKAdd(CCTK_ARGUMENTS) UpdateVar = (CCTK_REAL *)CCTK_VarDataPtrI(cctkGH, 0, EvolvedArrayVariableIndex[var]); - RHSVar = (CCTK_REAL *)CCTK_VarDataPtrI(cctkGH, 0, - RHSArrayVariableIndex[var]); + RHSVar = (CCTK_REAL const *)CCTK_VarDataPtrI(cctkGH, 0, + RHSArrayVariableIndex[var]); groupindex = CCTK_GroupIndexFromVarI(EvolvedArrayVariableIndex[var]); ierr = CCTK_GroupDynamicData(cctkGH, groupindex, diff --git a/src/InitialCopy.c b/src/InitialCopy.c index 06a89da..f326ead 100644 --- a/src/InitialCopy.c +++ b/src/InitialCopy.c @@ -84,18 +84,18 @@ void MoL_InitialCopy(CCTK_ARGUMENTS) CCTK_INT var; CCTK_INT totalsize; - CCTK_REAL *CurrentVar; - CCTK_REAL *PreviousVar; - CCTK_REAL *ScratchVar; + CCTK_REAL * restrict CurrentVar; + CCTK_REAL const * restrict PreviousVar; + CCTK_REAL * restrict ScratchVar; CCTK_INT StorageOn; /* FIXME */ #ifdef MOLDOESCOMPLEX - CCTK_COMPLEX *CurrentComplexVar; - CCTK_COMPLEX *PreviousComplexVar; - CCTK_COMPLEX *ScratchComplexVar; + CCTK_COMPLEX * restrict CurrentComplexVar; + CCTK_COMPLEX const * restrict PreviousComplexVar; + CCTK_COMPLEX * restrict ScratchComplexVar; #endif @@ -128,7 +128,7 @@ void MoL_InitialCopy(CCTK_ARGUMENTS) CCTK_WARN(0, "The grid function does not have storage assigned."); } - PreviousVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 1, + PreviousVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 1, EvolvedVariableIndex[var]); CurrentVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedVariableIndex[var]); @@ -146,7 +146,7 @@ void MoL_InitialCopy(CCTK_ARGUMENTS) for (var = 0; var < MoLNumEvolvedArrayVariables; var++) { - PreviousVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 1, + PreviousVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 1, EvolvedArrayVariableIndex[var]); CurrentVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedArrayVariableIndex[var]); @@ -203,7 +203,7 @@ void MoL_InitialCopy(CCTK_ARGUMENTS) CCTK_WARN(0, "The grid function does not have storage assigned."); } - PreviousComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 1, + PreviousComplexVar = (CCTK_COMPLEX const*)CCTK_VarDataPtrI(cctkGH, 1, EvolvedComplexVariableIndex[var]); CurrentComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedComplexVariableIndex[var]); @@ -244,7 +244,7 @@ void MoL_InitialCopy(CCTK_ARGUMENTS) CCTK_WARN(0, "The grid function does not have storage assigned."); } - PreviousVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 1, + PreviousVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 1, SandRVariableIndex[var]); CurrentVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, SandRVariableIndex[var]); @@ -301,7 +301,7 @@ void MoL_InitialCopy(CCTK_ARGUMENTS) CCTK_WARN(0, "The grid function does not have storage assigned."); } - PreviousComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 1, + PreviousComplexVar = (CCTK_COMPLEX const*)CCTK_VarDataPtrI(cctkGH, 1, SandRComplexVariableIndex[var]); CurrentComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, SandRComplexVariableIndex[var]); @@ -359,7 +359,7 @@ void MoL_InitialCopy(CCTK_ARGUMENTS) if (StorageOn > 1) { - PreviousVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 1, + PreviousVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 1, ConstrainedVariableIndex[var]); CurrentVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, ConstrainedVariableIndex[var]); @@ -411,7 +411,7 @@ void MoL_InitialCopy(CCTK_ARGUMENTS) if (StorageOn > 1) { - PreviousComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 1, + PreviousComplexVar = (CCTK_COMPLEX const*)CCTK_VarDataPtrI(cctkGH, 1, ConstrainedComplexVariableIndex[var]); CurrentComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, ConstrainedComplexVariableIndex[var]); @@ -465,14 +465,14 @@ void MoL_InitRHS(CCTK_ARGUMENTS) /* CCTK_INT i,j,k; */ CCTK_INT totalsize; - CCTK_REAL *RHSVar; + CCTK_REAL * restrict RHSVar; CCTK_INT StorageOn; /* FIXME */ #ifdef MOLDOESCOMPLEX - CCTK_COMPLEX *RHSComplexVar; + CCTK_COMPLEX * restsrict RHSComplexVar; #endif @@ -631,8 +631,8 @@ void MoL_FillAllLevels(CCTK_ARGUMENTS) CCTK_INT var, level; CCTK_INT totalsize, arraydim; - CCTK_REAL *CurrentVar; - CCTK_REAL *PreviousVar; + CCTK_REAL const * restrict CurrentVar; + CCTK_REAL * restrict PreviousVar; totalsize = 1; for (arraydim = 0; arraydim < cctk_dim; arraydim++) @@ -642,7 +642,7 @@ void MoL_FillAllLevels(CCTK_ARGUMENTS) for (var = 0; var < MoLNumEvolvedVariables; var++) { - CurrentVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, + CurrentVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedVariableIndex[var]); for (level = 1; level < CCTK_ActiveTimeLevelsVI(cctkGH, @@ -661,7 +661,7 @@ void MoL_FillAllLevels(CCTK_ARGUMENTS) for (var = 0; var < MoLNumConstrainedVariables; var++) { - CurrentVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, + CurrentVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, ConstrainedVariableIndex[var]); for (level = 1; level < CCTK_ActiveTimeLevelsVI(cctkGH, ConstrainedVariableIndex[var]); level++) @@ -678,7 +678,7 @@ void MoL_FillAllLevels(CCTK_ARGUMENTS) for (var = 0; var < MoLNumSandRVariables; var++) { - CurrentVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, + CurrentVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, SandRVariableIndex[var]); for (level = 1; level < CCTK_ActiveTimeLevelsVI(cctkGH, SandRVariableIndex[var]); diff --git a/src/RK2.c b/src/RK2.c index d722623..1301e26 100644 --- a/src/RK2.c +++ b/src/RK2.c @@ -74,17 +74,17 @@ void MoL_RK2Add(CCTK_ARGUMENTS) CCTK_INT index, var; CCTK_INT totalsize; - CCTK_REAL *OldVar; - CCTK_REAL *UpdateVar; - CCTK_REAL *RHSVar; + CCTK_REAL const * restrict OldVar; + CCTK_REAL * restrict UpdateVar; + CCTK_REAL const * restrict RHSVar; /* FIXME */ #ifdef MOLDOESCOMPLEX - CCTK_COMPLEX *OldComplexVar; - CCTK_COMPLEX *UpdateComplexVar; - CCTK_COMPLEX *RHSComplexVar; + CCTK_COMPLEX const * restrict OldComplexVar; + CCTK_COMPLEX * restrict UpdateComplexVar; + CCTK_COMPLEX const * restrict RHSComplexVar; CCTK_COMPLEX Complex_Delta_Time = CCTK_Cmplx(CCTK_DELTA_TIME, 0); CCTK_COMPLEX Complex_Half = CCTK_Cmplx(0.5, 0); @@ -115,7 +115,7 @@ void MoL_RK2Add(CCTK_ARGUMENTS) { UpdateVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedVariableIndex[var]); - RHSVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, + RHSVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, RHSVariableIndex[var]); for (index = 0; index < totalsize; index++) @@ -128,7 +128,7 @@ void MoL_RK2Add(CCTK_ARGUMENTS) { UpdateVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedArrayVariableIndex[var]); - RHSVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, + RHSVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, RHSArrayVariableIndex[var]); groupindex = CCTK_GroupIndexFromVarI(EvolvedArrayVariableIndex[var]); ierr = CCTK_GroupDynamicData(cctkGH, groupindex, @@ -160,7 +160,7 @@ void MoL_RK2Add(CCTK_ARGUMENTS) { UpdateComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedComplexVariableIndex[var]); - RHSComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, + RHSComplexVar = (CCTK_COMPLEX const*)CCTK_VarDataPtrI(cctkGH, 0, RHSComplexVariableIndex[var]); for (index = 0; index < totalsize; index++) @@ -179,11 +179,11 @@ void MoL_RK2Add(CCTK_ARGUMENTS) { for (var = 0; var < MoLNumEvolvedVariables; var++) { - OldVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 1, + 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, + RHSVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, RHSVariableIndex[var]); for (index = 0; index < totalsize; index++) @@ -195,12 +195,12 @@ void MoL_RK2Add(CCTK_ARGUMENTS) for (var = 0; var < MoLNumEvolvedArrayVariables; var++) { - OldVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 1, - EvolvedVariableIndex[var]); + OldVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 1, + EvolvedArrayVariableIndex[var]); UpdateVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, - EvolvedVariableIndex[var]); - RHSVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, - RHSVariableIndex[var]); + EvolvedArrayVariableIndex[var]); + RHSVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, + RHSArrayVariableIndex[var]); groupindex = CCTK_GroupIndexFromVarI(EvolvedArrayVariableIndex[var]); ierr = CCTK_GroupDynamicData(cctkGH, groupindex, @@ -231,11 +231,11 @@ void MoL_RK2Add(CCTK_ARGUMENTS) for (var = 0; var < MoLNumEvolvedComplexVariables; var++) { - OldComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 1, + OldComplexVar = (CCTK_COMPLEX const*)CCTK_VarDataPtrI(cctkGH, 1, EvolvedComplexVariableIndex[var]); UpdateComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedComplexVariableIndex[var]); - RHSComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, + RHSComplexVar = (CCTK_COMPLEX const*)CCTK_VarDataPtrI(cctkGH, 0, RHSComplexVariableIndex[var]); for (index = 0; index < totalsize; index++) diff --git a/src/RK3.c b/src/RK3.c index b8a8b03..68329a2 100644 --- a/src/RK3.c +++ b/src/RK3.c @@ -73,23 +73,21 @@ void MoL_RK3Add(CCTK_ARGUMENTS) CCTK_INT index, var; CCTK_INT totalsize; - CCTK_REAL *OldVar; - CCTK_REAL *UpdateVar; - CCTK_REAL *RHSVar; + CCTK_REAL const * restrict OldVar; + CCTK_REAL * restrict UpdateVar; + CCTK_REAL const * restrict RHSVar; /* FIXME */ #ifdef MOLDOESCOMPLEX - CCTK_COMPLEX *OldComplexVar; - CCTK_COMPLEX *UpdateComplexVar; - CCTK_COMPLEX *RHSComplexVar; + CCTK_COMPLEX const * restrict OldComplexVar; + CCTK_COMPLEX * restrict UpdateComplexVar; + CCTK_COMPLEX const * restrict RHSComplexVar; CCTK_COMPLEX Complex_Delta_Time = CCTK_Cmplx(CCTK_DELTA_TIME, 0); CCTK_COMPLEX Complex_Half = CCTK_Cmplx(0.5, 0); - CCTK_COMPLEX Complex_Third = CCTK_CmplxDiv(CCTK_Cmplx(1.0, 0), - CCTK_Cmplx(3.0,0)); - CCTK_COMPLEX Complex_TwoThird = CCTK_CmplxDiv(CCTK_Cmplx(2.0, 0), - CCTK_Cmplx(3.0,0)); + CCTK_COMPLEX Complex_Third = CCTK_Cmplx(1.0/3.0, 0); + CCTK_COMPLEX Complex_TwoThird = CCTK_Cmplx(2.0/3.0, 0); CCTK_COMPLEX Complex_Quarter = CCTK_Cmplx(0.25, 0); CCTK_COMPLEX Complex_ThreeQuarter = CCTK_Cmplx(0.75, 0); @@ -185,11 +183,11 @@ void MoL_RK3Add(CCTK_ARGUMENTS) { for (var = 0; var < MoLNumEvolvedVariables; var++) { - OldVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 1, + 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, + RHSVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, RHSVariableIndex[var]); for (index = 0; index < totalsize; index++) @@ -202,11 +200,11 @@ void MoL_RK3Add(CCTK_ARGUMENTS) for (var = 0; var < MoLNumEvolvedArrayVariables; var++) { - OldVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 1, + OldVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 1, EvolvedArrayVariableIndex[var]); UpdateVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedArrayVariableIndex[var]); - RHSVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, + RHSVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, RHSArrayVariableIndex[var]); groupindex = CCTK_GroupIndexFromVarI(EvolvedArrayVariableIndex[var]); ierr = CCTK_GroupDynamicData(cctkGH, groupindex, @@ -237,11 +235,11 @@ void MoL_RK3Add(CCTK_ARGUMENTS) for (var = 0; var < MoLNumEvolvedComplexVariables; var++) { - OldComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 1, + OldComplexVar = (CCTK_COMPLEX const*)CCTK_VarDataPtrI(cctkGH, 1, EvolvedComplexVariableIndex[var]); UpdateComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedComplexVariableIndex[var]); - RHSComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, + RHSComplexVar = (CCTK_COMPLEX const*)CCTK_VarDataPtrI(cctkGH, 0, RHSComplexVariableIndex[var]); for (index = 0; index < totalsize; index++) @@ -266,11 +264,11 @@ void MoL_RK3Add(CCTK_ARGUMENTS) for (var = 0; var < MoLNumEvolvedVariables; var++) { - OldVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 1, + 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, + RHSVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, RHSVariableIndex[var]); for (index = 0; index < totalsize; index++) @@ -282,11 +280,11 @@ void MoL_RK3Add(CCTK_ARGUMENTS) for (var = 0; var < MoLNumEvolvedArrayVariables; var++) { - OldVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 1, + OldVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 1, EvolvedArrayVariableIndex[var]); UpdateVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedArrayVariableIndex[var]); - RHSVar = (CCTK_REAL*)CCTK_VarDataPtrI(cctkGH, 0, + RHSVar = (CCTK_REAL const*)CCTK_VarDataPtrI(cctkGH, 0, RHSArrayVariableIndex[var]); groupindex = CCTK_GroupIndexFromVarI(EvolvedArrayVariableIndex[var]); @@ -318,11 +316,11 @@ void MoL_RK3Add(CCTK_ARGUMENTS) for (var = 0; var < MoLNumEvolvedComplexVariables; var++) { - OldComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 1, + OldComplexVar = (CCTK_COMPLEX const*)CCTK_VarDataPtrI(cctkGH, 1, EvolvedComplexVariableIndex[var]); UpdateComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, EvolvedComplexVariableIndex[var]); - RHSComplexVar = (CCTK_COMPLEX*)CCTK_VarDataPtrI(cctkGH, 0, + RHSComplexVar = (CCTK_COMPLEX const*)CCTK_VarDataPtrI(cctkGH, 0, RHSComplexVariableIndex[var]); for (index = 0; index < totalsize; index++) diff --git a/src/RK45.c b/src/RK45.c index b2f6c88..f92159a 100644 --- a/src/RK45.c +++ b/src/RK45.c @@ -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++) { -- cgit v1.2.3