Class template Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>

Inherits from Dune::GDT::TimeStepperInterface.

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
class Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method> : 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,

Method Dune::GDT::ExplicitRungeKuttaTimeStepper::step

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
RangeFieldType Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::step(const RangeFieldType dt, const RangeFieldType max_dt) final override

No documentation provided.

Method Dune::GDT::ExplicitRungeKuttaTimeStepper::find_suitable_dt

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
const std::pair<bool, RangeFieldType> Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::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.

Constructor Dune::GDT::ExplicitRungeKuttaTimeStepper::ExplicitRungeKuttaTimeStepper

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::ExplicitRungeKuttaTimeStepper(const OperatorType &op, DiscreteFunctionType &initial_values, const RangeFieldType r = 1., const double t_0 = 0., const MatrixType &A = ButcherArrayProviderType::A(), const VectorType &b = ButcherArrayProviderType::b(), const VectorType &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)

Constructor Dune::GDT::ExplicitRungeKuttaTimeStepper::ExplicitRungeKuttaTimeStepper

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

Constructor ignoring the tol argument for compatibility with AdaptiveRungeKuttaTimeStepper

Field Dune::GDT::ExplicitRungeKuttaTimeStepper::op_

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
const OperatorType &Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::op_

No documentation provided.

Field Dune::GDT::ExplicitRungeKuttaTimeStepper::r_

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
const RangeFieldType Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::r_

No documentation provided.

Field Dune::GDT::ExplicitRungeKuttaTimeStepper::u_i_

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
std::unique_ptr<DiscreteFunctionType> Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::u_i_

No documentation provided.

Field Dune::GDT::ExplicitRungeKuttaTimeStepper::A_

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
const MatrixType Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::A_

No documentation provided.

Field Dune::GDT::ExplicitRungeKuttaTimeStepper::b_

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
const VectorType Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::b_

No documentation provided.

Field Dune::GDT::ExplicitRungeKuttaTimeStepper::c_

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
const VectorType Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::c_

No documentation provided.

Field Dune::GDT::ExplicitRungeKuttaTimeStepper::stages_k_

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
std::vector<std::unique_ptr<DiscreteFunctionType>> Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::stages_k_

No documentation provided.

Field Dune::GDT::ExplicitRungeKuttaTimeStepper::num_stages_

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
const size_t Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::num_stages_

No documentation provided.

Type alias Dune::GDT::ExplicitRungeKuttaTimeStepper::BaseType

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

No documentation provided.

Type alias Dune::GDT::ExplicitRungeKuttaTimeStepper::ButcherArrayProviderType

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
using Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::ButcherArrayProviderType = typename internal::ButcherArrayProvider<typename BaseType::RangeFieldType, method>

No documentation provided.

Type alias Dune::GDT::ExplicitRungeKuttaTimeStepper::OperatorType

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
using Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::OperatorType = OperatorImp

No documentation provided.

Type alias Dune::GDT::ExplicitRungeKuttaTimeStepper::MatrixType

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
using Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::MatrixType = Dune::DynamicMatrix<RangeFieldType>

No documentation provided.

Type alias Dune::GDT::ExplicitRungeKuttaTimeStepper::VectorType

template<class OperatorImp, class DiscreteFunctionImp, TimeStepperMethods method = TimeStepperMethods::explicit_euler>
using Dune::GDT::ExplicitRungeKuttaTimeStepper<OperatorImp, DiscreteFunctionImp, method>::VectorType = Dune::DynamicVector<RangeFieldType>

No documentation provided.