aboutsummaryrefslogtreecommitdiff
path: root/src/ChangeType.c
diff options
context:
space:
mode:
authorhawke <hawke@578cdeb0-5ea1-4b81-8215-5a3b8777ee0b>2003-07-22 07:07:14 +0000
committerhawke <hawke@578cdeb0-5ea1-4b81-8215-5a3b8777ee0b>2003-07-22 07:07:14 +0000
commite3096d84ffb4b909977066f158db78eb45f4a80b (patch)
tree9e41096faa3de1f2af27660866aa5e4eea4cffed /src/ChangeType.c
parent06f6fb8bd438528724715988336a8b8ef86192ce (diff)
Add two methods:
RK3. The optimized version of the TVD RK3 solver. Requires no scratch space so is about as efficient as ICN, but third order. Generic method from a parameter table. By specifying the number of intermediate steps and the alpha and beta arrays, create your own method at parameter time. Not well (or at all) documented because it doesn't seem to work correctly at the moment. Some tidying of extraneous code as well. git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/MoL/trunk@29 578cdeb0-5ea1-4b81-8215-5a3b8777ee0b
Diffstat (limited to 'src/ChangeType.c')
-rw-r--r--src/ChangeType.c223
1 files changed, 41 insertions, 182 deletions
diff --git a/src/ChangeType.c b/src/ChangeType.c
index 9361f3a..2f1d926 100644
--- a/src/ChangeType.c
+++ b/src/ChangeType.c
@@ -5,7 +5,7 @@
@desc
The external functions called (via function aliasing) by physics
thorns to tell MoL that they want these GFs to be treated as a
- different type to the original declaration
+ different type to the original declaration.
@enddesc
@version $Header$
@@*/
@@ -48,33 +48,6 @@ CCTK_INT MoL_ChangeToSaveAndRestore(CCTK_INT SandRIndex);
CCTK_INT MoL_ChangeToNone(CCTK_INT RemoveIndex);
-CCTK_INT MoL_ChangeToEvolvedComplex(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex);
-
-CCTK_INT MoL_ChangeToConstrainedComplex(CCTK_INT ConstrainedIndex);
-
-CCTK_INT MoL_ChangeToSaveAndRestoreComplex(CCTK_INT SandRIndex);
-
-CCTK_INT MoL_ChangeToNoneComplex(CCTK_INT RemoveIndex);
-
-
-CCTK_INT MoL_ChangeToEvolvedArray(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex);
-
-CCTK_INT MoL_ChangeToConstrainedArray(CCTK_INT ConstrainedIndex);
-
-CCTK_INT MoL_ChangeToSaveAndRestoreArray(CCTK_INT SandRIndex);
-
-CCTK_INT MoL_ChangeToNoneArray(CCTK_INT RemoveIndex);
-
-
-CCTK_INT MoL_ChangeToEvolvedComplexArray(CCTK_INT EvolvedIndex,
- CCTK_INT RHSIndex);
-
-CCTK_INT MoL_ChangeToConstrainedComplexArray(CCTK_INT ConstrainedIndex);
-
-CCTK_INT MoL_ChangeToSaveAndRestoreComplexArray(CCTK_INT SandRIndex);
-
-CCTK_INT MoL_ChangeToNoneComplexArray(CCTK_INT RemoveIndex);
-
/********************************************************************
********************* Local Data *****************************
********************************************************************/
@@ -145,7 +118,7 @@ CCTK_INT MoL_ChangeToEvolved(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex)
case MOL_UNKNOWN_VARTYPE:
{
- timelevs = CCTK_NumTimeLevelsFromVarI(EvolvedIndex);
+ timelevs = CCTK_MaxTimeLevelsVI(EvolvedIndex);
if (timelevs < 1)
{
CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to evolved.", EvolvedIndex);
@@ -156,7 +129,7 @@ CCTK_INT MoL_ChangeToEvolved(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex)
CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to evolved.", EvolvedIndex);
CCTK_WARN(0, "The index passed only has a single timelevel.");
}
- timelevs = CCTK_NumTimeLevelsFromVarI(RHSIndex);
+ timelevs = CCTK_MaxTimeLevelsVI(RHSIndex);
if (timelevs < 1) {
CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to evolved (RHS GF).", RHSIndex);
CCTK_WARN(0, "The index passed does not correspond to a GF.");
@@ -182,7 +155,7 @@ CCTK_INT MoL_ChangeToEvolved(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex)
case MOL_CONSTRAINED_VARTYPE:
{
- timelevs = CCTK_NumTimeLevelsFromVarI(RHSIndex);
+ timelevs = CCTK_MaxTimeLevelsVI(RHSIndex);
if (timelevs < 1) {
CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to evolved type from constrained.", RHSIndex);
CCTK_WARN(0, "The RHS index passed does not correspond to a GF.");
@@ -206,7 +179,7 @@ CCTK_INT MoL_ChangeToEvolved(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex)
case MOL_SANDR_VARTYPE:
{
- timelevs = CCTK_NumTimeLevelsFromVarI(RHSIndex);
+ timelevs = CCTK_MaxTimeLevelsVI(RHSIndex);
if (timelevs < 1) {
CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to evolved type from save and restore.", RHSIndex);
CCTK_WARN(0, "The RHS index passed does not correspond to a GF.");
@@ -263,6 +236,18 @@ CCTK_INT MoL_ChangeToConstrained(CCTK_INT ConstrainedIndex)
vartype = 0;
usedindex = -1;
+
+ timelevs = CCTK_MaxTimeLevelsVI(ConstrainedIndex);
+ if (timelevs < 1)
+ {
+ CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to evolved.", ConstrainedIndex);
+ CCTK_WARN(0, "The index passed does not correspond to a GF.");
+ }
+ else if (timelevs == 1)
+ {
+ CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to evolved.", ConstrainedIndex);
+ CCTK_WARN(0, "The index passed only has a single timelevel.");
+ }
for (index = 0; (index < MoLNumEvolvedVariables)&&(!vartype); index++)
{
@@ -300,17 +285,6 @@ CCTK_INT MoL_ChangeToConstrained(CCTK_INT ConstrainedIndex)
case MOL_UNKNOWN_VARTYPE:
{
- timelevs = CCTK_NumTimeLevelsFromVarI(ConstrainedIndex);
- if (timelevs < 1)
- {
- CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to evolved.", ConstrainedIndex);
- CCTK_WARN(0, "The index passed does not correspond to a GF.");
- }
- else if (timelevs == 1)
- {
- CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to evolved.", ConstrainedIndex);
- CCTK_WARN(0, "The index passed only has a single timelevel.");
- }
ConstrainedVariableIndex[MoLNumConstrainedVariables] = ConstrainedIndex;
MoLNumConstrainedVariables++;
break;
@@ -319,6 +293,14 @@ CCTK_INT MoL_ChangeToConstrained(CCTK_INT ConstrainedIndex)
case MOL_EVOLVED_VARTYPE:
{
+ for (index = usedindex; index < MoLNumEvolvedVariables - 1; index++)
+ {
+ EvolvedVariableIndex[index] = EvolvedVariableIndex[index+1];
+ RHSVariableIndex[index] = RHSVariableIndex[index+1];
+ }
+ MoLNumEvolvedVariables--;
+ ConstrainedVariableIndex[index] = ConstrainedIndex;
+ MoLNumConstrainedVariables++;
break;
}
@@ -378,6 +360,13 @@ CCTK_INT MoL_ChangeToSaveAndRestore(CCTK_INT SandRIndex)
vartype = 0;
usedindex = -1;
+
+ timelevs = CCTK_MaxTimeLevelsVI(SandRIndex);
+ if (timelevs < 1)
+ {
+ CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to save and restore.", SandRIndex);
+ CCTK_WARN(0, "The index passed does not correspond to a GF.");
+ }
for (index = 0; (index < MoLNumEvolvedVariables)&&(!vartype); index++)
{
@@ -415,12 +404,6 @@ CCTK_INT MoL_ChangeToSaveAndRestore(CCTK_INT SandRIndex)
case MOL_UNKNOWN_VARTYPE:
{
- timelevs = CCTK_NumTimeLevelsFromVarI(SandRIndex);
- if (timelevs < 1)
- {
- CCTK_VWarn(1,__LINE__,__FILE__,"MoL","Warning whilst trying to change variable index %i to save and restore.", SandRIndex);
- CCTK_WARN(0, "The index passed does not correspond to a GF.");
- }
SandRVariableIndex[MoLNumSandRVariables] = SandRIndex;
MoLNumSandRVariables++;
break;
@@ -429,7 +412,14 @@ CCTK_INT MoL_ChangeToSaveAndRestore(CCTK_INT SandRIndex)
case MOL_EVOLVED_VARTYPE:
{
-
+ for (index = usedindex; index < MoLNumEvolvedVariables - 1; index++)
+ {
+ EvolvedVariableIndex[index] = EvolvedVariableIndex[index+1];
+ RHSVariableIndex[index] = RHSVariableIndex[index+1];
+ }
+ MoLNumEvolvedVariables--;
+ SandRVariableIndex[MoLNumSandRVariables] = SandRIndex;
+ MoLNumSandRVariables++;
break;
}
@@ -441,7 +431,7 @@ CCTK_INT MoL_ChangeToSaveAndRestore(CCTK_INT SandRIndex)
ConstrainedVariableIndex[index] = ConstrainedVariableIndex[index+1];
}
MoLNumConstrainedVariables--;
- SandRVariableIndex[index] = SandRIndex;
+ SandRVariableIndex[MoLNumSandRVariables] = SandRIndex;
MoLNumSandRVariables++;
break;
}
@@ -574,137 +564,6 @@ CCTK_INT MoL_ChangeToNone(CCTK_INT RemoveIndex)
}
-/*
- Currently no-op test functions.
-*/
-
-
-CCTK_INT MoL_ChangeToEvolvedComplex(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex)
-{
- CCTK_INT dummy;
- dummy = EvolvedIndex;
- dummy = RHSIndex;
- return 0;
-}
-
-CCTK_INT MoL_ChangeToConstrainedComplex(CCTK_INT ConstrainedIndex)
-{
- CCTK_INT dummy;
- dummy = ConstrainedIndex;
- return 0;
-}
-
-CCTK_INT MoL_ChangeToSaveAndRestoreComplex(CCTK_INT SandRIndex)
-{
- CCTK_INT dummy;
- dummy = SandRIndex;
- return 0;
-}
-
-CCTK_INT MoL_ChangeToNoneComplex(CCTK_INT RemoveIndex)
-{
- CCTK_INT dummy;
- dummy = RemoveIndex;
- return 0;
-}
-
-
-CCTK_INT MoL_ChangeToEvolvedArray(CCTK_INT EvolvedIndex, CCTK_INT RHSIndex)
-{
- CCTK_INT dummy;
- dummy = EvolvedIndex;
- dummy = RHSIndex;
- return 0;
-}
-
-CCTK_INT MoL_ChangeToConstrainedArray(CCTK_INT ConstrainedIndex)
-{
- CCTK_INT dummy;
- dummy = ConstrainedIndex;
- return 0;
-}
-
-CCTK_INT MoL_ChangeToSaveAndRestoreArray(CCTK_INT SandRIndex)
-{
- CCTK_INT dummy;
- dummy = SandRIndex;
- return 0;
-}
-
-CCTK_INT MoL_ChangeToNoneArray(CCTK_INT RemoveIndex)
-{
- CCTK_INT dummy;
- dummy = RemoveIndex;
- return 0;
-}
-
-
-CCTK_INT MoL_ChangeToEvolvedComplexArray(CCTK_INT EvolvedIndex,
- CCTK_INT RHSIndex)
-{
- CCTK_INT dummy;
- dummy = EvolvedIndex;
- dummy = RHSIndex;
- return 0;
-}
-
-CCTK_INT MoL_ChangeToConstrainedComplexArray(CCTK_INT ConstrainedIndex)
-{
- CCTK_INT dummy;
- dummy = ConstrainedIndex;
- return 0;
-}
-
-CCTK_INT MoL_ChangeToSaveAndRestoreComplexArray(CCTK_INT SandRIndex)
-{
- CCTK_INT dummy;
- dummy = SandRIndex;
- return 0;
-}
-
-CCTK_INT MoL_ChangeToNoneComplexArray(CCTK_INT RemoveIndex)
-{
- CCTK_INT dummy;
- dummy = RemoveIndex;
- return 0;
-}
-
-/*
- Fortran wrappers for the above functions.
- Should be replaced by using function aliasing eventually.
- */
-
-/*
-void CCTK_FCALL CCTK_FNAME(MoL_ChangeToEvolved)(int *ierr,
- CCTK_INT *EvolvedIndex,
- CCTK_INT *RHSIndex)
-{
- *ierr = MoL_ChangeToEvolved(*EvolvedIndex, *RHSIndex);
- return;
-}
-
-void CCTK_FCALL CCTK_FNAME(MoL_ChangeToConstrained)(int *ierr,
- CCTK_INT *ConstrainedIndex)
-{
- *ierr = MoL_ChangeToConstrained(*ConstrainedIndex);
- return;
-}
-
-void CCTK_FCALL CCTK_FNAME(MoL_ChangeToSaveAndRestore)(int *ierr,
- CCTK_INT *EvolvedIndex)
-{
- *ierr = MoL_ChangeToSaveAndRestore(*EvolvedIndex);
- return;
-}
-
-void CCTK_FCALL CCTK_FNAME(MoL_ChangeToNone)(int *ierr,
- CCTK_INT *EvolvedIndex)
-{
- *ierr = MoL_ChangeToNone(*EvolvedIndex);
- return;
-}
-*/
-
/********************************************************************
********************* Local Routines *************************
********************************************************************/