aboutsummaryrefslogtreecommitdiff
path: root/Examples
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2011-11-01 21:56:41 -0500
committerIan Hinder <ian.hinder@aei.mpg.de>2011-11-01 23:00:22 -0500
commit20711f4eb4a1baef055ad43b84e5fb462237d5fe (patch)
treee8991e553c0cd64c3b8dfaaceb7d382ea3e40a3a /Examples
parent8c8df5bf89c35e4117c4678b77a87fecc5266195 (diff)
Add ability to evolve ODEs in calculations
Diffstat (limited to 'Examples')
-rw-r--r--Examples/SimpleWaveODE.m45
-rw-r--r--Examples/simplewaveode_sine.par67
2 files changed, 112 insertions, 0 deletions
diff --git a/Examples/SimpleWaveODE.m b/Examples/SimpleWaveODE.m
new file mode 100644
index 0000000..d45b0f8
--- /dev/null
+++ b/Examples/SimpleWaveODE.m
@@ -0,0 +1,45 @@
+<< "KrancThorn.m";
+
+groups = {{"ode_group", {a, b}}, {"evolved_group", {phi, pi}}};
+
+derivatives =
+{
+ PDstandard2nd[i_] -> StandardCenteredDifferenceOperator[1,1,i],
+ PDstandard2nd[i_, i_] -> StandardCenteredDifferenceOperator[2,1,i]
+};
+
+PD = PDstandard2nd;
+
+initialSineCalc =
+{
+ Name -> "initial_sine",
+ Schedule -> {"AT INITIAL"},
+ Equations ->
+ {
+ phi -> Sin[2 Pi (x - t)],
+ pi -> -2 Pi Cos[2 Pi (x - t)],
+ a -> 0, b -> 1
+ }
+};
+
+evolveCalc =
+{
+ Name -> "calc_rhs",
+ Schedule -> {"in MoL_CalcRHS"},
+ Equations ->
+ {
+ dot[phi] -> pi,
+ dot[pi] -> a Euc[ui,uj] PD[phi,li,lj],
+ dot[a] -> b,
+ dot[b] -> -a
+ }
+};
+
+CreateKrancThornTT[groups, ".",
+ "SimpleWaveODE",
+ Calculations -> {initialSineCalc, evolveCalc},
+ PartialDerivatives -> derivatives,
+ DeclaredGroups -> {"evolved_group"},
+ ODEGroups -> {"ode_group"}
+];
+
diff --git a/Examples/simplewaveode_sine.par b/Examples/simplewaveode_sine.par
new file mode 100644
index 0000000..cb2254c
--- /dev/null
+++ b/Examples/simplewaveode_sine.par
@@ -0,0 +1,67 @@
+
+Cactus::cctk_final_time = 1
+Cactus::terminate = "time"
+
+ActiveThorns = "IOUtil Carpet CarpetLib CarpetSlab CoordBase CoordBase SymBase CartGrid3D Slab CarpetIOBasic CarpetIOASCII Time MoL Periodic Boundary GenericFD CarpetReduce LoopControl"
+ActiveThorns = "SimpleWaveODE"
+
+CoordBase::domainsize = minmax
+
+CoordBase::boundary_size_x_lower = 1
+CoordBase::boundary_size_y_lower = 1
+CoordBase::boundary_size_z_lower = 1
+CoordBase::boundary_shiftout_x_lower = 1
+CoordBase::boundary_shiftout_y_lower = 1
+CoordBase::boundary_shiftout_z_lower = 1
+
+CoordBase::boundary_size_x_upper = 1
+CoordBase::boundary_size_y_upper = 1
+CoordBase::boundary_size_z_upper = 1
+CoordBase::boundary_shiftout_x_upper = 0
+CoordBase::boundary_shiftout_y_upper = 0
+CoordBase::boundary_shiftout_z_upper = 0
+
+CartGrid3D::type = "coordbase"
+CartGrid3D::domain = "full"
+CartGrid3D::avoid_origin = "no"
+
+CoordBase::xmin = 0
+CoordBase::ymin = 0
+CoordBase::zmin = 0
+CoordBase::xmax = 1
+CoordBase::ymax = 1
+CoordBase::zmax = 1
+CoordBase::dx = 0.05
+CoordBase::dy = 0.05
+CoordBase::dz = 0.05
+
+driver::ghost_size = 1
+Carpet::domain_from_coordbase = "yes"
+Carpet::poison_new_timelevels = "yes"
+Carpet::check_for_poison = "no"
+Carpet::poison_value = 113
+
+Carpet::max_refinement_levels = 1
+Carpet::prolongation_order_space = 3
+Carpet::prolongation_order_time = 2
+Carpet::init_each_timelevel = no
+Carpet::print_timestats_every = 0
+
+Periodic::periodic = yes
+
+Time::dtfac = 0.5
+
+MethodOfLines::ode_method = "RK3"
+MethodOfLines::MoL_NaN_Check = "no"
+MethodOfLines::initial_data_is_crap = "yes"
+MethodOfLines::MoL_Intermediate_Steps = 3
+MethodOfLines::MoL_Num_Scratch_Levels = 0
+
+IO::out_dir = $parfile
+
+CarpetIOBasic::outInfo_every = 1
+CarpetIOBasic::outInfo_vars = "SimpleWaveODE::phi SimpleWaveODE::a SimpleWaveODE::b"
+
+IOASCII::out1D_every = 1
+IOASCII::out1D_vars = "SimpleWaveODE::phi SimpleWaveODE::pi"
+SimpleWaveODE::evolved_group_bound = "none"