|
SpECTRE
v2026.04.01
|
#include <ImexRungeKutta.hpp>
Classes | |
| struct | ImplicitButcherTableau |
| Implicit part of the Butcher tableau. Most parts of the tableau must be the same as the explicit part, and so are omitted. More... | |
Public Member Functions | |
| virtual size_t | implicit_stage_order () const =0 |
| virtual const ImplicitButcherTableau & | implicit_butcher_tableau () const =0 |
| Public Member Functions inherited from TimeSteppers::RungeKutta | |
| uint64_t | number_of_substeps () const override |
| Number of substeps in this TimeStepper. | |
| uint64_t | number_of_substeps_for_error () const override |
| Number of substeps in this TimeStepper when providing an error measure for adaptive time-stepping. | |
| size_t | number_of_past_steps () const override |
| Number of past time steps needed for multi-step method. | |
| bool | monotonic () const override |
| Whether computational and temporal orderings of operations match. | |
| TimeStepId | next_time_id (const TimeStepId ¤t_id, const TimeDelta &time_step) const override |
| The TimeStepId after the current substep. | |
| TimeStepId | next_time_id_for_error (const TimeStepId ¤t_id, const TimeDelta &time_step) const override |
| The TimeStepId after the current substep when providing an error measure for adaptive time-stepping. | |
| virtual const ButcherTableau & | butcher_tableau () const =0 |
| Public Member Functions inherited from TimeStepper | |
| WRAPPED_PUPable_abstract (TimeStepper) | |
| template<typename Vars> | |
| void | update_u (const gsl::not_null< Vars * > u, const TimeSteppers::History< Vars > &history, const TimeDelta &time_step) const |
Set u to the value at the end of the current substep. | |
| template<typename Vars> | |
| std::optional< StepperErrorEstimate > | update_u (const gsl::not_null< Vars * > u, const TimeSteppers::History< Vars > &history, const TimeDelta &time_step, const StepperErrorTolerances &tolerances) const |
Set u to the value at the end of the current substep; report the error measure when available. | |
| template<typename Vars> | |
| void | clean_history (const gsl::not_null< TimeSteppers::History< Vars > * > history) const |
| Remove old entries from the history. | |
| template<typename Vars> | |
| bool | dense_update_u (const gsl::not_null< Vars * > u, const TimeSteppers::History< Vars > &history, const double time) const |
| Compute the solution value at a time between steps. To evaluate at a time within a given step, call this method at the start of the step containing the time. The function returns true on success, otherwise the call should be retried after the next substep. | |
| virtual variants::TaggedVariant< TimeSteppers::Tags::FixedOrder, TimeSteppers::Tags::VariableOrder > | order () const =0 |
| The convergence order of the stepper. | |
| virtual double | stable_step () const =0 |
| Rough estimate of the maximum step size this method can take stably as a multiple of the step for Euler's method. | |
| template<typename Vars> | |
| bool | can_change_step_size (const TimeStepId &time_id, const TimeSteppers::History< Vars > &history) const |
| Whether a change in the step size is allowed before taking a step. Step sizes can never be changed on a substep. | |
| Public Member Functions inherited from ImexTimeStepper | |
| WRAPPED_PUPable_abstract (ImexTimeStepper) | |
| virtual size_t | imex_order () const =0 |
| Convergence order of the integrator when used in IMEX mode. | |
| template<typename Vars> | |
| void | add_inhomogeneous_implicit_terms (const gsl::not_null< Vars * > u, const TimeSteppers::History< Vars > &implicit_history, const TimeDelta &time_step) const |
| Add the change for the current implicit substep, \(Y_{n,\text{inhomogeneous}}\), to u, given a past history of the implicit derivatives. | |
| template<typename Vars> | |
| double | implicit_weight (const TimeSteppers::History< Vars > &implicit_history, const TimeDelta &time_step) const |
| The coefficient \(w_n\) of the implicit derivative for the current substep. For a Runge-Kutta method, this is the coefficient on the diagonal of the Butcher tableau. | |
Additional Inherited Members | |
| Public Types inherited from TimeStepper | |
| using | provided_time_stepper_interfaces = tmpl::list<TimeStepper> |
| Public Types inherited from ImexTimeStepper | |
| using | provided_time_stepper_interfaces |
| Static Public Attributes inherited from TimeStepper | |
| static constexpr bool | local_time_stepping = false |
| static constexpr bool | imex = false |
| Static Public Attributes inherited from ImexTimeStepper | |
| static constexpr bool | imex = true |
Intermediate base class implementing a generic IMEX Runge-Kutta scheme.
Implements most of the virtual methods of ImexTimeStepper for a generic Runge-Kutta method. Derived classes must implement the requirements of the RungeKutta base class, as well as imex_order(), implicit_stage_order(), and implicit_butcher_tableau().
|
pure virtual |
Smallest order of the intermediate result at any substep. For the methods supported by this class, this cannot exceed 2.
Implemented in TimeSteppers::Heun2, TimeSteppers::Rk3Kennedy, TimeSteppers::Rk3Pareschi, and TimeSteppers::Rk4Kennedy.