|
SpECTRE
2021.08.02
|
#include <DormandPrince5.hpp>
Public Types | |
| using | options = tmpl::list<> |
Public Member Functions | |
| DormandPrince5 (const DormandPrince5 &) noexcept=default | |
| DormandPrince5 & | operator= (const DormandPrince5 &) noexcept=default |
| DormandPrince5 (DormandPrince5 &&) noexcept=default | |
| DormandPrince5 & | operator= (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 ErrVars , typename DerivVars > | |
| bool | update_u (gsl::not_null< Vars * > u, gsl::not_null< ErrVars * > u_error, gsl::not_null< History< Vars, DerivVars > * > history, const TimeDelta &time_step) const noexcept |
| template<typename Vars , typename DerivVars > | |
| bool | dense_update_u (gsl::not_null< Vars * > u, const History< Vars, DerivVars > &history, double time) const noexcept |
| size_t | order () const noexcept override |
| size_t | error_estimate_order () const noexcept override |
| uint64_t | number_of_substeps () const noexcept override |
| uint64_t | number_of_substeps_for_error () const noexcept override |
| size_t | number_of_past_steps () const noexcept override |
| double | stable_step () const noexcept override |
| TimeStepId | next_time_id (const TimeStepId ¤t_id, const TimeDelta &time_step) const noexcept override |
| TimeStepId | next_time_id_for_error (const TimeStepId ¤t_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 ErrVars , typename DerivVars > | |
| bool | update_u (const gsl::not_null< Vars * > u, const gsl::not_null< ErrVars * > u_error, const gsl::not_null< History< Vars, DerivVars > * > history, const TimeDelta &time_step) const noexcept |
| template<typename Vars , typename DerivVars > | |
| bool | dense_update_u (const gsl::not_null< Vars * > u, const History< Vars, DerivVars > &history, const double time) const noexcept |
Static Public Attributes | |
| static constexpr Options::String | help |
The standard 5th-order Dormand-Prince time stepping method, given e.g. in Sec. 7.2 of [90].
\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 [90]. Note that \(c_1 = 0\).
|
staticconstexpr |