aboutsummaryrefslogtreecommitdiff
path: root/m/WaveToyMP.m
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2010-01-09 12:25:37 -0600
committerErik Schnetter <schnetter@cct.lsu.edu>2010-01-09 12:25:37 -0600
commite58418f219164cd87eaf03076a2671f0a1ea2dd4 (patch)
treeac9b65d1b95ebaded0bdba88810663812c1c6d88 /m/WaveToyMP.m
parent5efd84e6066707cffd0b277802213a19cb806ff4 (diff)
Regenerate code
Diffstat (limited to 'm/WaveToyMP.m')
-rw-r--r--m/WaveToyMP.m271
1 files changed, 271 insertions, 0 deletions
diff --git a/m/WaveToyMP.m b/m/WaveToyMP.m
new file mode 100644
index 0000000..88e91c4
--- /dev/null
+++ b/m/WaveToyMP.m
@@ -0,0 +1,271 @@
+$Path = Join[$Path, {"~/Calpha/kranc/Tools/CodeGen",
+ "~/Calpha/kranc/Tools/MathematicaMisc"}];
+
+Get["KrancThorn`"];
+
+SetEnhancedTimes[False];
+SetSourceLanguage["C"];
+
+(******************************************************************************)
+(* Derivatives *)
+(******************************************************************************)
+
+derivOrder = 4;
+
+derivatives =
+{
+ PDstandardNth[i_] -> StandardCenteredDifferenceOperator[1,derivOrder/2,i],
+ PDstandardNth[i_, i_] -> StandardCenteredDifferenceOperator[2,derivOrder/2,i],
+ PDstandardNth[i_, j_] -> StandardCenteredDifferenceOperator[1,derivOrder/2,i]
+ StandardCenteredDifferenceOperator[1,derivOrder/2,j],
+ PDstandardNth[i_, i_, i_] ->
+ StandardCenteredDifferenceOperator[3,derivOrder/2,i],
+ PDstandardNth[i_, i_, j_] ->
+ StandardCenteredDifferenceOperator[2,derivOrder/2,i]
+ StandardCenteredDifferenceOperator[1,derivOrder/2,j],
+ PDstandardNth[i_, j_, i_] ->
+ StandardCenteredDifferenceOperator[2,derivOrder/2,i]
+ StandardCenteredDifferenceOperator[1,derivOrder/2,j],
+ PDstandardNth[j_, i_, i_] ->
+ StandardCenteredDifferenceOperator[2,derivOrder/2,i]
+ StandardCenteredDifferenceOperator[1,derivOrder/2,j],
+ PDstandardNth[i_, j_, k_] ->
+ StandardCenteredDifferenceOperator[1,derivOrder/2,i]
+ StandardCenteredDifferenceOperator[1,derivOrder/2,j]
+ StandardCenteredDifferenceOperator[1,derivOrder/2,k]
+};
+
+(* local derivatives *)
+PDloc = PDstandardNth;
+
+(* global derivatives *)
+PDglob[var_,lx_] := Jinv[u1,lx] PDloc[var,l1];
+PDglob[var_,lx_,ly_] :=
+ dJinv[u1,lx,ly] PDloc[var,l1] + Jinv[u1,lx] Jinv[u2,ly] PDloc[var,l1,l2];
+
+UseGlobalDerivs = False;
+PD := If [UseGlobalDerivs, PDglob, PDloc];
+
+(* timelevels *)
+evolutionTimelevels = 2;
+
+KD = KroneckerDelta;
+
+(******************************************************************************)
+(* Tensors *)
+(******************************************************************************)
+
+(* Register the tensor quantities with the TensorTools package *)
+Map [DefineTensor, {u, rho, v, w, J, Jinv, dJ, dJinv}];
+
+AssertSymmetricIncreasing [dJ[uA,lb,lc], lb,lc];
+AssertSymmetricIncreasing [dJinv[ua,lx,ly], lx,ly];
+
+(******************************************************************************)
+(* Groups *)
+(******************************************************************************)
+
+evolvedGroups =
+ {SetGroupName [CreateGroupFromTensor [u ], "WT_u" ],
+ SetGroupName [CreateGroupFromTensor [rho], "WT_rho"]};
+evaluatedGroups = {};
+
+declaredGroups = Join [evolvedGroups, evaluatedGroups];
+declaredGroupNames = Map [First, declaredGroups];
+
+evolvedGroupsFO =
+ {SetGroupName [CreateGroupFromTensor [u ], "WT_u" ],
+ SetGroupName [CreateGroupFromTensor [v[la]], "WT_v" ],
+ SetGroupName [CreateGroupFromTensor [rho ], "WT_rho"]};
+evaluatedGroupsFO =
+ {SetGroupName [CreateGroupFromTensor [w[ua]], "WT_w"]};
+
+declaredGroupsFO = Join [evolvedGroupsFO, evaluatedGroupsFO];
+declaredGroupNamesFO = Map [First, declaredGroupsFO];
+
+
+
+extraGroups =
+ {{"MultiPatch::transformation",
+ {dxda,dxdb,dxdc, dyda,dydb,dydc, dzda,dzdb,dzdc}},
+ {"MultiPatch::transformation_inv",
+ {dadx,dady,dadz, dbdx,dbdy,dbdz, dcdx,dcdy,dcdz}},
+ {"MultiPatch::transformation_derivs",
+ {ddxdada,ddxdadb,ddxdadc,ddxdbdb,ddxdbdc,ddxdcdc,
+ ddydada,ddydadb,ddydadc,ddydbdb,ddydbdc,ddydcdc,
+ ddzdada,ddzdadb,ddzdadc,ddzdbdb,ddzdbdc,ddzdcdc}},
+ {"MultiPatch::transformation_inv_derivs",
+ {ddadxdx,ddadxdy,ddadxdz,ddadydy,ddadzdz,ddadydz,
+ ddbdxdx,ddbdxdy,ddbdxdz,ddbdydy,ddbdzdz,ddbdydz,
+ ddcdxdx,ddcdxdy,ddcdxdz,ddcdydy,ddcdzdz,ddcdydz}}};
+
+
+
+groups = Join [declaredGroups, extraGroups];
+groupsFO = Join [declaredGroupsFO, extraGroups];
+
+(******************************************************************************)
+(* Initial data *)
+(******************************************************************************)
+
+initialCalc =
+{
+ Name -> "WT_Gaussian",
+ Schedule -> {"AT initial"},
+ (* Where -> Boundary, *)
+ (* Where -> Interior, *)
+ Equations ->
+ {
+ u -> 0,
+ rho -> 0
+ }
+};
+
+initialCalcFO =
+{
+ Name -> "WTFO_Gaussian",
+ Schedule -> {"AT initial"},
+ (* Where -> Boundary, *)
+ (* Where -> Interior, *)
+ Equations ->
+ {
+ u -> 0,
+ v[la] -> 0,
+ rho -> 0
+ }
+};
+
+(******************************************************************************)
+(* Evolution equations *)
+(******************************************************************************)
+
+evolCalc =
+{
+ Name -> "WT_RHS",
+ Schedule -> {"IN MoL_CalcRHS", "AT analysis"},
+ Where -> Interior,
+ Shorthands -> {Jinv[ua,lx], dJinv[ua,lx,ly]},
+ Equations ->
+ {
+ Jinv11 -> dadx,
+ Jinv12 -> dady,
+ Jinv13 -> dadz,
+ Jinv21 -> dbdx,
+ Jinv22 -> dbdy,
+ Jinv23 -> dbdz,
+ Jinv31 -> dcdx,
+ Jinv32 -> dcdy,
+ Jinv33 -> dcdz,
+ dJinv111 -> ddadxdx,
+ dJinv112 -> ddadxdy,
+ dJinv113 -> ddadxdz,
+ dJinv122 -> ddadydy,
+ dJinv123 -> ddadydz,
+ dJinv133 -> ddadzdz,
+ dJinv211 -> ddadxdx,
+ dJinv212 -> ddadxdy,
+ dJinv213 -> ddadxdz,
+ dJinv222 -> ddadydy,
+ dJinv223 -> ddadydz,
+ dJinv233 -> ddadzdz,
+ dJinv311 -> ddadxdx,
+ dJinv312 -> ddadxdy,
+ dJinv313 -> ddadxdz,
+ dJinv322 -> ddadydy,
+ dJinv323 -> ddadydz,
+ dJinv333 -> ddadzdz,
+ dot[u] -> rho,
+ dot[rho] -> KD[ua,ub] PD[u,la,lb]
+ }
+};
+
+evolCalcFO =
+{
+ Name -> "WTFO_RHS",
+ Schedule -> {"IN MoL_CalcRHS", "AT analysis"},
+ Where -> Interior,
+ Shorthands -> {Jinv[ua,lx]},
+ Equations ->
+ {
+ Jinv11 -> dadx,
+ Jinv12 -> dady,
+ Jinv13 -> dadz,
+ Jinv21 -> dbdx,
+ Jinv22 -> dbdy,
+ Jinv23 -> dbdz,
+ Jinv31 -> dcdx,
+ Jinv32 -> dcdy,
+ Jinv33 -> dcdz,
+ dot[u] -> rho,
+ dot[rho] -> KD[ua,ub] PD[v[la],lb],
+ dot[v[la]] -> PD[rho,la]
+ }
+};
+
+(******************************************************************************)
+(* Constraint equations *)
+(******************************************************************************)
+
+constraintsCalcFO =
+{
+ Name -> "WTFO_constraints",
+ Schedule -> {"AT analysis"},
+ Where -> Interior,
+ Shorthands -> {Jinv[ua,lx]},
+ Equations ->
+ {
+ Jinv11 -> dadx,
+ Jinv12 -> dady,
+ Jinv13 -> dadz,
+ Jinv21 -> dbdx,
+ Jinv22 -> dbdy,
+ Jinv23 -> dbdz,
+ Jinv31 -> dcdx,
+ Jinv32 -> dcdy,
+ Jinv33 -> dcdz,
+ w[ua] -> Eps[ua,ub,uc] PD[v[lb],lc]
+ }
+};
+
+(******************************************************************************)
+(* Implementations *)
+(******************************************************************************)
+
+inheritedImplementations = {"MultiPatch"};
+
+(******************************************************************************)
+(* Construct the thorns *)
+(******************************************************************************)
+
+calculations =
+{
+ initialCalc,
+ evolCalc
+};
+
+CreateKrancThornTT [groups, ".", "ML_WaveToy",
+ Calculations -> calculations,
+ DeclaredGroups -> declaredGroupNames,
+ PartialDerivatives -> derivatives,
+ UseLoopControl -> True,
+ EvolutionTimelevels -> evolutionTimelevels,
+ InheritedImplementations -> inheritedImplementations
+];
+
+
+
+calculationsFO =
+{
+ initialCalcFO,
+ evolCalcFO,
+ constraintsCalcFO
+};
+
+CreateKrancThornTT [groupsFO, ".", "ML_FOWaveToy",
+ Calculations -> calculationsFO,
+ DeclaredGroups -> declaredGroupNamesFO,
+ PartialDerivatives -> derivatives,
+ UseLoopControl -> True,
+ EvolutionTimelevels -> evolutionTimelevels,
+ InheritedImplementations -> inheritedImplementations
+];