Class template Dune::GDT::ExplicitRungeKuttaTimeStepper

Inherits from Dune::GDT::TimeStepperInterface.

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
class Dune::GDT::ExplicitRungeKuttaTimeStepper : public TimeStepperInterface<DiscreteFunctionImp>

Time stepper using Runge Kutta methods

Timestepper using explicit Runge Kutta methods to solve equations of the form u_t = r * L(u, t) where u is a discrete function, L an operator acting on u and r a scalar factor (e.g. -1). The specific Runge Kutta method can be chosen as the third template argument. If your desired Runge Kutta method is not contained in ExplicitRungeKuttaMethods, choose ExplicitRungeKuttaMethods::other and supply a DynamicMatrix < RangeFieldType > A and vectors (DynamicVector < RangeFieldType >) b and c in the constructor. Here, A, b and c form the butcher tableau (see https://en.wikipedia.org/wiki/List_of_Runge%E2%80%93Kutta_methods, A is composed of the coefficients a_{ij}, b of b_j and c of c_j). The default is a forward euler method.

Notation: For an s-stage method, mathbf {u}^{n+1} = mathbf {u}^n + dt sum_ {i=0}^{s-1} b_i mathbf {k}_i mathbf {k}_i = L( mathbf {u}i, t^n + dt c_i) mathbf {u}i = mathbf {u}^n + dt sum {j=0}^{i-1} a{ij} mathbf {k}_j,

RangeFieldType Dune::GDT::ExplicitRungeKuttaTimeStepper::step(const RangeFieldType dt, const RangeFieldType max_dt) final override

No documentation provided.

const std::pair<bool, RangeFieldType> Dune::GDT::ExplicitRungeKuttaTimeStepper::find_suitable_dt(const RangeFieldType initial_dt, const RangeFieldType dt_refinement_factor = 2, const RangeFieldType treshold = 0.90000000000000002 * std::numeric_limits<RangeFieldType>::max(), const size_t max_steps_per_dt = 20, const size_t max_refinements = 20)

No documentation provided.

template<>
Dune::GDT::ExplicitRungeKuttaTimeStepper::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>(const OperatorType &op, DiscreteFunctionType &initial_values, const RangeFieldType r = 1., const double t_0 = 0., const int &A = ButcherArrayProviderType::A(), const int &b = ButcherArrayProviderType::b(), const int &c = ButcherArrayProviderType::c())

Constructor for RungeKutta time stepper

:param op: Operator L :param initial_values: Discrete function containing initial values for u at time t_0. :param r: Scalar factor (see above, default is 1) :param t_0: Initial time (default is 0) :param A: Coefficient matrix (only provide if you use ExplicitRungeKuttaMethods::other) :param b: Coefficient vector (only provide if you use ExplicitRungeKuttaMethods::other) :param c: Coefficients for time steps (only provide if you use ExplicitRungeKuttaMethods::other)

template<>
Dune::GDT::ExplicitRungeKuttaTimeStepper::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>(const OperatorType &op, DiscreteFunctionType &initial_values, const RangeFieldType r, const double t_0, const RangeFieldType)

Constructor ignoring the tol argument for compatibility with AdaptiveRungeKuttaTimeStepper

const OperatorType &Dune::GDT::ExplicitRungeKuttaTimeStepper::op_

No documentation provided.

const RangeFieldType Dune::GDT::ExplicitRungeKuttaTimeStepper::r_

No documentation provided.

int Dune::GDT::ExplicitRungeKuttaTimeStepper::u_i_

No documentation provided.

const int Dune::GDT::ExplicitRungeKuttaTimeStepper::A_

No documentation provided.

const int Dune::GDT::ExplicitRungeKuttaTimeStepper::b_

No documentation provided.

const int Dune::GDT::ExplicitRungeKuttaTimeStepper::c_

No documentation provided.

int Dune::GDT::ExplicitRungeKuttaTimeStepper::stages_k_

No documentation provided.

const size_t Dune::GDT::ExplicitRungeKuttaTimeStepper::num_stages_

No documentation provided.

type Dune::GDT::ExplicitRungeKuttaTimeStepper::BaseType

No documentation provided.

type Dune::GDT::ExplicitRungeKuttaTimeStepper::ButcherArrayProviderType

No documentation provided.

type Dune::GDT::ExplicitRungeKuttaTimeStepper::OperatorType

No documentation provided.