diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2007-11-30 20:34:36 -0600 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2007-11-30 20:34:36 -0600 |
commit | ade7255aa26dbf98ad1e528d55d10d16de3b359f (patch) | |
tree | 437aa64296b9ccae5004561156e8f89a5826bb46 /m/WaveToy.m | |
parent | 448082538b5e2a5154f7543bcb157bc57d439dac (diff) |
Add first-order WaveToy. Use makefile to run Kranc
Diffstat (limited to 'm/WaveToy.m')
-rw-r--r-- | m/WaveToy.m | 148 |
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 +]; |