15 #include "../config/config.hpp"
73 virtual void Step(
Vector &x,
double &t,
double &dt) = 0;
91 virtual void Run(
Vector &x,
double &t,
double &dt,
double tf)
93 while (t < tf) {
Step(x, t, dt); }
109 virtual void Step(
Vector &x,
double &t,
double &dt);
129 virtual void Step(
Vector &x,
double &t,
double &dt);
142 virtual void Step(
Vector &x,
double &t,
double &dt);
155 virtual void Step(
Vector &x,
double &t,
double &dt);
172 const double *a, *b, *c;
181 virtual void Step(
Vector &x,
double &t,
double &dt);
192 static const double a[28], b[8], c[7];
204 static const double a[66], b[12], c[11];
220 virtual void Step(
Vector &x,
double &t,
double &dt);
233 virtual void Step(
Vector &x,
double &t,
double &dt);
254 virtual void Step(
Vector &x,
double &t,
double &dt);
268 virtual void Step(
Vector &x,
double &t,
double &dt);
282 virtual void Step(
Vector &x,
double &t,
double &dt);
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.
virtual void Init(TimeDependentOperator &f)
Associate a TimeDependentOperator with the ODE solver.
virtual void Step(Vector &x, double &t, double &dt)
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
Base abstract class for time dependent operators.
virtual void Step(Vector &x, double &t, double &dt)=0
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
Abstract class for solving systems of ODEs: dx/dt = f(x,t)
virtual void Step(Vector &x, double &t, double &dt)
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
Backward Euler ODE solver. L-stable.
virtual void Step(Vector &x, double &t, double &dt)
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
virtual void Step(Vector &x, double &t, double &dt)
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.
virtual ~ExplicitRKSolver()
virtual void Step(Vector &x, double &t, double &dt)
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.
virtual void Step(Vector &x, double &t, double &dt)
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
ExplicitRKSolver(int _s, const double *_a, const double *_b, const double *_c)
virtual void Step(Vector &x, double &t, double &dt)
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.
The classical explicit forth-order Runge-Kutta method, RK4.
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.
Third-order, strong stability preserving (SSP) Runge-Kutta method.
RK2Solver(const double _a=2./3.)
Implicit midpoint method. A-stable, not L-stable.
virtual void Step(Vector &x, double &t, double &dt)
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.
virtual void Run(Vector &x, double &t, double &dt, double tf)
Perform time integration from time t [in] to time tf [in].
virtual void Step(Vector &x, double &t, double &dt)
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
TimeDependentOperator * f
Pointer to the associated TimeDependentOperator.
The classical forward Euler method.
virtual void Step(Vector &x, double &t, double &dt)
Perform a time step from time t [in] to time t [out] based on the requested step size dt [in]...
SDIRK23Solver(int gamma_opt=1)
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.