aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2012-01-02 11:55:57 -0500
committerErik Schnetter <schnetter@gmail.com>2012-01-02 11:55:57 -0500
commit885dc69dae4d2181d9337b1a3803ca8cc52e0842 (patch)
treec75bffb6e3ce5b007e7f34ea2caf282202503f1a
parent6d4545d98b957c134658b5cfd6a0389d4430bd63 (diff)
Allow choosing number of timelevels for non-evolved variables
-rw-r--r--Tools/CodeGen/Param.m14
-rw-r--r--Tools/CodeGen/Schedule.m12
2 files changed, 21 insertions, 5 deletions
diff --git a/Tools/CodeGen/Param.m b/Tools/CodeGen/Param.m
index 8fb711c..023674e 100644
--- a/Tools/CodeGen/Param.m
+++ b/Tools/CodeGen/Param.m
@@ -208,6 +208,18 @@ CreateKrancParam[evolvedGroups_, nonevolvedGroups_,
Steerable -> Recover
};
+ otherTimelevelsParam =
+ {
+ Name -> "other_timelevels",
+ Type -> "CCTK_INT",
+ Default -> 1,
+ Description -> "Number of active timelevels for non-evolved grid functions",
+ Visibility -> "restricted",
+ AllowedValues -> {{Value -> ToString[0] <> ":" <> ToString[evolutionTimelevels],
+ Description -> ""}},
+ Steerable -> Recover
+ };
+
genericfdStruct =
{
Name -> "GenericFD",
@@ -249,7 +261,7 @@ CreateKrancParam[evolvedGroups_, nonevolvedGroups_,
implementations = Join[userImplementations, userImplementations2, {genericfdStruct, molImplementation}];
params = Join[{verboseStruct}, realStructs, intStructs, keywordStructs, {evolvedMoLParam,
- evolvedODEMoLParam, (*constrainedMoLParam,*) timelevelsParam, rhsTimelevelsParam},
+ evolvedODEMoLParam, (*constrainedMoLParam,*) timelevelsParam, rhsTimelevelsParam, otherTimelevelsParam},
calcEveryStructs, calcOffsetStructs,
CactusBoundary`GetParameters[evolvedGFs, evolvedGroups]];
diff --git a/Tools/CodeGen/Schedule.m b/Tools/CodeGen/Schedule.m
index f596ad1..c375fd6 100644
--- a/Tools/CodeGen/Schedule.m
+++ b/Tools/CodeGen/Schedule.m
@@ -28,10 +28,11 @@ Begin["`Private`"];
Scheduling
-------------------------------------------------------------------------- *)
-simpleGroupStruct[groupName_, timelevels_] :=
+simpleGroupStruct[groupName_, timelevels_, maxtimelevels_] :=
{
Group -> groupName,
- Timelevels -> timelevels
+ Timelevels -> timelevels,
+ MaxTimelevels -> "other_timelevels"
};
evolvedGroupStruct[groupName_, timelevels_, maxtimelevels_] :=
@@ -215,8 +216,11 @@ CreateKrancScheduleFile[calcs_, groups_, evolvedGroups_, rhsGroups_, nonevolvedG
globalStorageGroups =
Join[
- Map[simpleGroupStruct[#,
- NonevolvedTimelevels[groupFromName[#, groups]]] &,
+ Map[Module[{tl},
+ tl = NonevolvedTimelevels[groupFromName[#, groups]];
+ If[tl===1,
+ simpleGroupStruct[#, tl, evolutionTimelevels],
+ evolvedGroupStruct[#, evolutionTimelevels, evolutionTimelevels]]] &,
nonevolvedGroups],
Map[evolvedGroupStruct[#, evolutionTimelevels, evolutionTimelevels] &,
evolvedGroups],