aboutsummaryrefslogtreecommitdiff
path: root/m/WaveToy.m
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2007-11-30 20:34:36 -0600
committerErik Schnetter <schnetter@cct.lsu.edu>2007-11-30 20:34:36 -0600
commitade7255aa26dbf98ad1e528d55d10d16de3b359f (patch)
tree437aa64296b9ccae5004561156e8f89a5826bb46 /m/WaveToy.m
parent448082538b5e2a5154f7543bcb157bc57d439dac (diff)
Add first-order WaveToy. Use makefile to run Kranc
Diffstat (limited to 'm/WaveToy.m')
-rw-r--r--m/WaveToy.m148
1 files changed, 145 insertions, 3 deletions
diff --git a/m/WaveToy.m b/m/WaveToy.m
index fbaa027..003d99c 100644
--- a/m/WaveToy.m
+++ b/m/WaveToy.m
@@ -21,6 +21,15 @@ derivatives =
};
PD = PDstandardNth;
+CD = PD;
+
+(* global derivatives *)
+gPD[var_,lx_] := Jinv[u1,lx] PD[var,l1];
+gPD[var_,lx_,ly_] :=
+ dJinv[u1,lx,ly] PD[var,l1] + Jinv[u1,lx] Jinv[u2,ly] PD[var,l1,l2];
+
+(* gCD[var_,lx_] = Jinv[uz,lx] CD[var,lz]; *)
+(* gCD[var_,lx_,ly_] = Jinv[uy,lx] Jinv[uz,ly] CD[var,ly,lz]; *)
KD = KroneckerDelta;
@@ -29,7 +38,10 @@ KD = KroneckerDelta;
(******************************************************************************)
(* Register the tensor quantities with the TensorTools package *)
-Map [DefineTensor, {u, rho}];
+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 *)
@@ -43,9 +55,36 @@ 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];
+
+
+groups = Join [declaredGroups, extraGroups];
+groupsFO = Join [declaredGroupsFO, extraGroups];
(******************************************************************************)
(* Initial data *)
@@ -64,6 +103,20 @@ initialCalc =
}
}
+initialCalcFO =
+{
+ Name -> "WTFO_Gaussian",
+ Schedule -> {"AT initial"},
+ (* Where -> Boundary, *)
+ (* Where -> Interior, *)
+ Equations ->
+ {
+ u -> 0,
+ v[la] -> 0,
+ rho -> 0
+ }
+}
+
(******************************************************************************)
(* Evolution equations *)
(******************************************************************************)
@@ -73,10 +126,86 @@ 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] gPD[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[u,la,lb]
+ dot[rho] -> KD[ua,ub] gPD[v[la],lb],
+ dot[v[la]] -> gPD[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] gPD[v[lb],lc]
}
}
@@ -95,3 +224,16 @@ CreateKrancThornTT [groups, ".", "ML_WaveToy",
DeclaredGroups -> declaredGroupNames,
PartialDerivatives -> derivatives
];
+
+calculationsFO =
+{
+ initialCalcFO,
+ evolCalcFO,
+ constraintsCalcFO
+};
+
+CreateKrancThornTT [groupsFO, ".", "MLFO_WaveToy",
+ Calculations -> calculationsFO,
+ DeclaredGroups -> declaredGroupNamesFO,
+ PartialDerivatives -> derivatives
+];