aboutsummaryrefslogtreecommitdiff
path: root/Tools/CodeGen/KrancThorn.m
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/CodeGen/KrancThorn.m')
-rw-r--r--Tools/CodeGen/KrancThorn.m21
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]];