aboutsummaryrefslogtreecommitdiff
path: root/Tools/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/CodeGen')
-rw-r--r--Tools/CodeGen/KrancTensor.m34
1 files changed, 33 insertions, 1 deletions
diff --git a/Tools/CodeGen/KrancTensor.m b/Tools/CodeGen/KrancTensor.m
index d0157c9..13c40bf 100644
--- a/Tools/CodeGen/KrancTensor.m
+++ b/Tools/CodeGen/KrancTensor.m
@@ -26,9 +26,12 @@
$KrancTensorPackage = "TensorToolsKranc`";
-BeginPackage["KrancTensor`", {"Errors`", "KrancThorn`", "MapLookup`", "KrancGroups`", "Kranc`", $KrancTensorPackage, "ConservationCalculation`", "TensorTools`"}];
+BeginPackage["KrancTensor`", {"Errors`", "KrancThorn`", "MapLookup`", "KrancGroups`",
+ "Kranc`", $KrancTensorPackage, "ConservationCalculation`",
+ "TensorTools`", "KrancGroups`", "Differencing`"}];
CreateKrancThornTT::usage = "Construct a Kranc thorn using tensor expressions.";
+CreateKrancThornTT2::usage = "Construct a Kranc thorn using tensor expressions.";
(* FIXME: Move CreateGroupFromTensor here *)
@@ -102,5 +105,34 @@ makeGroupExplicit[g_] :=
newGroup = SetGroupVariables[g, newVariables];
newGroup];
+Options[CreateKrancThornTT2] = ThornOptions;
+
+DefFn[CreateKrancThornTT2[thornName_String, opts:OptionsPattern[]] :=
+ Module[
+ {groups, pderivs, opts2, fdOrder = Global`fdOrder, PDstandard = Global`PDstandard},
+ groups = Map[CreateGroupFromTensor, OptionValue[Variables]];
+
+ pderivs =
+ Join[OptionValue[PartialDerivatives],
+ {
+ PDstandard[i_] ->
+ StandardCenteredDifferenceOperator[1,fdOrder/2,i],
+ PDstandard[i_, i_] ->
+ StandardCenteredDifferenceOperator[2,fdOrder/2,i],
+ PDstandard[i_, j_] ->
+ StandardCenteredDifferenceOperator[1,fdOrder/2,i] StandardCenteredDifferenceOperator[1,fdOrder/2,j]
+ }];
+
+ opts2 = mapReplaceAdd[{opts}, PartialDerivatives, pderivs];
+
+ opts2 = mapReplaceAdd[opts2, IntParameters, Join[lookup[opts2,IntParameters,{}],
+ {{Name -> fdOrder, Default -> 2, AllowedValues -> {2, 4}}}]];
+
+ opts2 = opts2 /. PD -> PDstandard;
+
+ CreateKrancThornTT[groups,OptionValue[ParentDirectory],thornName,
+ DeclaredGroups -> Map[groupName, groups],
+ Sequence@@opts2]]];
+
End[];
EndPackage[];