From 885dc69dae4d2181d9337b1a3803ca8cc52e0842 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Mon, 2 Jan 2012 11:55:57 -0500 Subject: Allow choosing number of timelevels for non-evolved variables --- Tools/CodeGen/Param.m | 14 +++++++++++++- Tools/CodeGen/Schedule.m | 12 ++++++++---- 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], -- cgit v1.2.3