aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorschnetter <schnetter@578cdeb0-5ea1-4b81-8215-5a3b8777ee0b>2005-12-11 18:49:18 +0000
committerschnetter <schnetter@578cdeb0-5ea1-4b81-8215-5a3b8777ee0b>2005-12-11 18:49:18 +0000
commitd2581020e698490172cee2cdea2e2deb43bf9251 (patch)
treeab108f3656d349d0682026abbbd16ca4a6d3532b /src
parent7914bcb41d96ee8ab0213c91ebb763a6f3562fb0 (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/GenericRK.c25
-rw-r--r--src/InitialCopy.c40
-rw-r--r--src/RK2.c36
-rw-r--r--src/RK3.c42
-rw-r--r--src/RK45.c50
5 files changed, 99 insertions, 94 deletions
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++)
{