diff options
Diffstat (limited to 'Tools/CodeGen/KrancThorn.m')
-rw-r--r-- | Tools/CodeGen/KrancThorn.m | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/Tools/CodeGen/KrancThorn.m b/Tools/CodeGen/KrancThorn.m index 2cd4ed2..ee656e1 100644 --- a/Tools/CodeGen/KrancThorn.m +++ b/Tools/CodeGen/KrancThorn.m @@ -29,7 +29,7 @@ BeginPackage["KrancThorn`", {"CodeGen`", "Thorn`", "MapLookup`", "KrancGroups`", "Differencing`", "CalculationFunction`", "Errors`", "Helpers`", "CactusBoundary`", "KrancTensor`", "Param`", "Schedule`", "Interface`", "Kranc`", "Jacobian`", - "ConservationCalculation`", "CaKernel`", "Calculation`"}]; + "ConservationCalculation`", "CaKernel`", "Calculation`", "ParamCheck`"}]; CreateKrancThorn::usage = "Construct a Kranc thorn"; @@ -189,9 +189,14 @@ CreateKrancThorn[groupsOrig_, parentDirectory_, thornName_, opts:OptionsPattern[ (* Add in calculations to solve any conservation laws that have been provided *) - calcs = Join[calcs, - consCalcs = Flatten[Map[ProcessConservationCalculation[#,thornName] &, - consCalcsIn],1]]; + + consCalcs = Flatten[Map[ProcessConservationCalculation[#,thornName] &, + consCalcsIn],1]; + + consCalcs = Map[Join[#, {PartialDerivatives -> partialDerivs, + Implementation -> implementation}] &, consCalcs]; + + calcs = Join[calcs,consCalcs]; (* Print["consCalcs = ", consCalcs]; *) consGroups = Union@Flatten[ @@ -331,7 +336,7 @@ CreateKrancThorn[groupsOrig_, parentDirectory_, thornName_, opts:OptionsPattern[ (* Makefile *) InfoMessage[Terse, "Creating make file"]; make = CreateMakefile[Join[{"Startup.cc", "RegisterSymmetries.cc"}, - {"RegisterMoL.cc"}, + {"RegisterMoL.cc"}, If[Length[OptionValue[ParameterConditions]] > 0, {"ParamCheck.cc"}, {}], incFilenames, Map[lookup[#, Filename] &, boundarySources]]]; @@ -350,7 +355,11 @@ CreateKrancThorn[groupsOrig_, parentDirectory_, thornName_, opts:OptionsPattern[ {Filename -> "RegisterSymmetries.cc", Contents -> symregister}, {Filename -> "Differencing.h", Contents -> diffHeader}}, MapThread[{Filename -> #1, Contents -> #2} &, - {calcFilenames, calcSources}], boundarySources]}; + {calcFilenames, calcSources}], boundarySources, + If[Length[OptionValue[ParameterConditions]] > 0, + {{Filename -> "ParamCheck.cc", + Contents -> ParameterCheckSource[thornName, OptionValue[ParameterConditions]]}}, + {}]]}; InfoMessage[Terse, "Creating thorn"]; CreateThorn[thornspec]]; |