diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2009-09-15 06:55:37 -0700 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2009-09-15 06:55:37 -0700 |
commit | e27d340ad64bd380e95bde29472e423718aca06d (patch) | |
tree | 9375a84915f83704011a6a5b48e855cef4acffb1 /m | |
parent | a52abf35db4c68c5e28e8ce9b00b394c4ea382ee (diff) |
Rename FOWaveToy to WaveToyFO
Diffstat (limited to 'm')
-rw-r--r-- | m/WaveToyFO.m | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/m/WaveToyFO.m b/m/WaveToyFO.m new file mode 100644 index 0000000..55f951f --- /dev/null +++ b/m/WaveToyFO.m @@ -0,0 +1,139 @@ +$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] +*) +}; + +FD = PDstandardNth; +ResetJacobians; +DefineJacobian[PD, FD, KD, Zero3]; + +(* timelevels *) +evolutionTimelevels = 2; + +KD = KroneckerDelta; + +(******************************************************************************) +(* Tensors *) +(******************************************************************************) + +(* Register the tensor quantities with the TensorTools package *) +Map [DefineTensor, {u, rho, v, w}]; + +(******************************************************************************) +(* Groups *) +(******************************************************************************) + +evolvedGroups = + {SetGroupName [CreateGroupFromTensor [u ], "WT_u" ], + SetGroupName [CreateGroupFromTensor [v[la]], "WT_v" ], + SetGroupName [CreateGroupFromTensor [rho ], "WT_rho"]}; +evaluatedGroups = + {SetGroupName [CreateGroupFromTensor [w[ua]], "WT_w"]}; + +declaredGroups = Join [evolvedGroups, evaluatedGroups]; +declaredGroupNames = Map [First, declaredGroups]; + +groups = declaredGroups; + +(******************************************************************************) +(* Initial data *) +(******************************************************************************) + +initialCalc = +{ + Name -> "WTFO_Gaussian", + Schedule -> {"AT initial"}, + (* Where -> Boundary, *) + (* Where -> Interior, *) + Equations -> + { + u -> 0, + v[la] -> 0, + rho -> 0 + } +}; + +(******************************************************************************) +(* Evolution equations *) +(******************************************************************************) + +evolCalc = +{ + Name -> "WTFO_RHS", + Schedule -> {"IN MoL_CalcRHS", "AT analysis"}, + Where -> Interior, + Equations -> + { + dot[u] -> rho, + dot[rho] -> KD[ua,ub] PD[v[la],lb], + dot[v[la]] -> PD[rho,la] + } +}; + +(******************************************************************************) +(* Constraint equations *) +(******************************************************************************) + +constraintsCalc = +{ + Name -> "WTFO_constraints", + Schedule -> {"AT analysis"}, + Where -> Interior, + Equations -> + { + w[ua] -> Eps[ua,ub,uc] PD[v[lb],lc] + } +}; + +(******************************************************************************) +(* Construct the thorns *) +(******************************************************************************) + +calculations = +{ + initialCalc, + evolCalc, + constraintsCalc +}; + +CreateKrancThornTT [groups, ".", "ML_WaveToyFO", + Calculations -> calculations, + DeclaredGroups -> declaredGroupNames, + PartialDerivatives -> derivatives, + UseLoopControl -> True, + EvolutionTimelevels -> evolutionTimelevels +]; |