aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhawke <hawke@578cdeb0-5ea1-4b81-8215-5a3b8777ee0b>2005-03-30 09:21:47 +0000
committerhawke <hawke@578cdeb0-5ea1-4b81-8215-5a3b8777ee0b>2005-03-30 09:21:47 +0000
commited844dcd706fc7548f4eddaa2e6d220780e82618 (patch)
tree005dfb417442b516a97cc88233cb4ad3f7e46aa5 /src
parent0f7acdc3a84eca01812cdf0e97a35b9b16c28845 (diff)
Correct a bug in the registration routines; if a variable was
registered as SandR and then as evolved it was not correctly removed from the SandR list, leading to incorrect evolution. Thanks to J Thornburg for finding this one. git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/MoL/trunk@86 578cdeb0-5ea1-4b81-8215-5a3b8777ee0b
Diffstat (limited to 'src')
-rw-r--r--src/Registration.c87
1 files changed, 62 insertions, 25 deletions
diff --git a/src/Registration.c b/src/Registration.c
index b5ee0df..da553ec 100644
--- a/src/Registration.c
+++ b/src/Registration.c
@@ -924,14 +924,19 @@ CCTK_INT MoL_RegisterEvolvedReal(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex)
}
- varused = 0;
+ varused = -1;
- for (index = 0; (index < MoLNumConstrainedVariables)&&(!varused); index++)
+ for (index = 0; (index < MoLNumConstrainedVariables)&&(!(varused+1));
+ index++)
{
- varused = (EvolvedIndex == ConstrainedVariableIndex[index]);
+ if (EvolvedIndex == ConstrainedVariableIndex[index])
+ {
+ varused = index;
+ }
+
}
- if (varused)
+ if ((varused+1))
{
for (index = varused; index < MoLNumConstrainedVariables-1; index++)
{
@@ -940,18 +945,35 @@ CCTK_INT MoL_RegisterEvolvedReal(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex)
MoLNumConstrainedVariables--;
}
- varused = 0;
+ varused = -1;
- for (index = 0; (index < MoLNumSandRVariables)&&(!varused); index++)
+ for (index = 0; (index < MoLNumSandRVariables)&&(!(varused+1)); index++)
{
- varused = (EvolvedIndex == SandRVariableIndex[index]);
+ if (EvolvedIndex == SandRVariableIndex[index])
+ {
+ varused = index;
+ }
+
+#ifdef MOLDEBUG
+ printf("Checking SandR var %d. Index %d (evolvedindex %d).\n",
+ index, SandRVariableIndex[index], EvolvedIndex);
+#endif
+
}
- if (varused)
+ if ((varused+1))
{
for (index = varused; index < MoLNumSandRVariables-1; index++)
{
SandRVariableIndex[index] = SandRVariableIndex[index+1];
+
+#ifdef MOLDEBUG
+ printf("The registered evolved variable was SandR."
+ " Now index %d is %d (%s).\n",
+ index, SandRVariableIndex[index],
+ CCTK_VarName(SandRVariableIndex[index]));
+#endif
+
}
MoLNumSandRVariables--;
}
@@ -1042,16 +1064,21 @@ CCTK_INT MoL_RegisterConstrainedReal(CCTK_INT ConstrainedIndex)
}
- varused = 0;
+ varused = -1;
- for (evolved = 0; (evolved < MoLNumSandRVariables)&&(!varused); evolved++)
+ for (evolved = 0; (evolved < MoLNumSandRVariables)&&(!(varused+1));
+ evolved++)
{
- varused = (SandRVariableIndex[evolved] == ConstrainedIndex);
+ if (SandRVariableIndex[evolved] == ConstrainedIndex)
+ {
+ varused = evolved;
+ }
+
}
- if (varused)
+ if ((varused+1))
{
- for (index = evolved; index < MoLNumSandRVariables-1; index++)
+ for (index = varused; index < MoLNumSandRVariables-1; index++)
{
SandRVariableIndex[index] = SandRVariableIndex[index+1];
}
@@ -1397,16 +1424,19 @@ CCTK_INT MoL_RegisterEvolvedComplex(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex)
}
- varused = 0;
+ varused = -1;
for (index = 0; (index <
- MoLNumConstrainedComplexVariables)&&(!varused);
+ MoLNumConstrainedComplexVariables)&&(!(varused+1));
index++)
{
- varused = (EvolvedIndex == ConstrainedComplexVariableIndex[index]);
+ if (EvolvedIndex == ConstrainedComplexVariableIndex[index])
+ {
+ varused = index;
+ }
}
- if (varused)
+ if ((varused+1))
{
for (index = varused; index < MoLNumConstrainedComplexVariables-1; index++)
{
@@ -1416,14 +1446,18 @@ CCTK_INT MoL_RegisterEvolvedComplex(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex)
MoLNumConstrainedComplexVariables--;
}
- varused = 0;
+ varused = -1;
- for (index = 0; (index < MoLNumSandRComplexVariables)&&(!varused); index++)
+ for (index = 0; (index < MoLNumSandRComplexVariables)&&(!(varused+1));
+ index++)
{
- varused = (EvolvedIndex == SandRComplexVariableIndex[index]);
+ if (EvolvedIndex == SandRComplexVariableIndex[index])
+ {
+ varused = index;
+ }
}
- if (varused)
+ if ((varused+1))
{
for (index = varused; index < MoLNumSandRComplexVariables-1; index++)
{
@@ -1512,16 +1546,19 @@ CCTK_INT MoL_RegisterConstrainedComplex(CCTK_INT ConstrainedIndex)
}
- varused = 0;
+ varused = -1;
for (evolved = 0; (evolved <
- MoLNumSandRComplexVariables)&&(!varused);
+ MoLNumSandRComplexVariables)&&(!(varused+1));
evolved++)
{
- varused = (SandRComplexVariableIndex[evolved] == ConstrainedIndex);
+ if (SandRComplexVariableIndex[evolved] == ConstrainedIndex)
+ {
+ varused = evolved;
+ }
}
- if (varused)
+ if ((varused+1))
{
for (index = evolved; index < MoLNumSandRComplexVariables-1; index++)
{