Public Types | Public Member Functions | Static Public Attributes | List of all members
TimeSteppers::DormandPrince5 Class Reference

#include <DormandPrince5.hpp>

Public Types

using options = tmpl::list<>
 

Public Member Functions

 DormandPrince5 (const DormandPrince5 &) noexcept=default
 
DormandPrince5operator= (const DormandPrince5 &) noexcept=default
 
 DormandPrince5 (DormandPrince5 &&) noexcept=default
 
DormandPrince5operator= (DormandPrince5 &&) noexcept=default
 
template<typename Vars , typename DerivVars >
void update_u (gsl::not_null< Vars *> u, gsl::not_null< History< Vars, DerivVars > *> history, const TimeDelta &time_step) const noexcept
 
template<typename Vars , typename DerivVars >
void dense_update_u (gsl::not_null< Vars *> u, const History< Vars, DerivVars > &history, double time) const noexcept
 
uint64_t number_of_substeps () const noexcept override
 
size_t number_of_past_steps () const noexcept override
 
double stable_step () const noexcept override
 
TimeStepId next_time_id (const TimeStepId &current_id, const TimeDelta &time_step) const noexcept override
 
template<typename Vars , typename DerivVars >
bool can_change_step_size (const TimeStepId &time_id, const TimeSteppers::History< Vars, DerivVars > &) const noexcept
 
 WRAPPED_PUPable_decl_template (DormandPrince5)
 
 DormandPrince5 (CkMigrateMessage *) noexcept
 
void pup (PUP::er &p) noexcept override
 
template<typename Vars , typename DerivVars >
void update_u (const gsl::not_null< Vars *> u, const gsl::not_null< History< Vars, DerivVars > *> history, const TimeDelta &time_step) const noexcept
 
template<typename Vars , typename DerivVars >
void dense_update_u (const gsl::not_null< Vars *> u, const History< Vars, DerivVars > &history, const double time) const noexcept
 

Static Public Attributes

static constexpr OptionString help
 

Detailed Description

The standard 5th-order Dormand-Prince time stepping method, given e.g. in Sec. 7.2 of [46].

\begin{eqnarray} \frac{du}{dt} & = & \mathcal{L}(t,u). \end{eqnarray}

Given a solution \(u(t^n)=u^n\), this stepper computes \(u(t^{n+1})=u^{n+1}\) using the following equations:

\begin{align} k^{(1)} & = dt \mathcal{L}(t^n, u^n),\\ k^{(i)} & = dt \mathcal{L}(t^n + c_i dt, u^n + \sum_{j=1}^{i-1} a_{ij} k^{(j)}), \mbox{ } 2 \leq i \leq 6,\\ u^{n+1} & = u^n + \sum_{i=1}^{6} b_i k^{(i)}. \end{align}

Here the coefficients \(a_{ij}\), \(b_i\), and \(c_i\) are given in e.g. Sec. 7.2 of [46]. Note that \(c_1 = 0\).

Member Data Documentation

◆ help

constexpr OptionString TimeSteppers::DormandPrince5::help
static
Initial value:
= {
"The standard Dormand-Prince 5th-order time stepper."}

The documentation for this class was generated from the following files: