From 20711f4eb4a1baef055ad43b84e5fb462237d5fe Mon Sep 17 00:00:00 2001 From: Hal Finkel Date: Tue, 1 Nov 2011 21:56:41 -0500 Subject: Add ability to evolve ODEs in calculations --- Examples/SimpleWaveODE.m | 45 +++++++++++++++++++++++++++ Examples/simplewaveode_sine.par | 67 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 Examples/SimpleWaveODE.m create mode 100644 Examples/simplewaveode_sine.par (limited to 'Examples') 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" -- cgit v1.2.3