15 #include "../config/config.hpp"
71 virtual void Step(
Vector &x,
double &t,
double &dt) = 0;
89 virtual void Run(
Vector &x,
double &t,
double &dt,
double tf)
91 while (t < tf) {
Step(x, t, dt); }
107 virtual void Step(
Vector &x,
double &t,
double &dt);
127 virtual void Step(
Vector &x,
double &t,
double &dt);
140 virtual void Step(
Vector &x,
double &t,
double &dt);
153 virtual void Step(
Vector &x,
double &t,
double &dt);
170 const double *a, *b, *c;
179 virtual void Step(
Vector &x,
double &t,
double &dt);
190 static const double a[28], b[8], c[7];
202 static const double a[66], b[12], c[11];
218 virtual void Step(
Vector &x,
double &t,
double &dt);
231 virtual void Step(
Vector &x,
double &t,
double &dt);
252 virtual void Step(
Vector &x,
double &t,
double &dt);
266 virtual void Step(
Vector &x,
double &t,
double &dt);
280 virtual void Step(
Vector &x,
double &t,
double &dt);
302 virtual void Step(
Vector &x,
double &t,
double &dt);
332 while (t < tf) {
Step(q, p, t, dt); }
virtual void Init(TimeDependentOperator &_f)
Associate a TimeDependentOperator with the ODE solver.
void PrintProperties(std::ostream &out=mfem::out)
virtual void Init(Operator &P, TimeDependentOperator &F)
void SetRhoInf(double rho_inf)
void Step(Vector &q, Vector &p, double &t, double &dt)
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]...
virtual void Init(TimeDependentOperator &f)
Associate a TimeDependentOperator with the ODE solver.
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.
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.
TimeDependentOperator * F_
MemoryType
Memory types supported by MFEM.
Third-order, strong stability preserving (SSP) Runge-Kutta method.
RK2Solver(const double _a=2./3.)
Implicit midpoint method. A-stable, not L-stable.
Host memory; using new[] and delete[].
void Step(Vector &q, Vector &p, double &t, double &dt)
void Step(Vector &q, Vector &p, double &t, double &dt)
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 Step(Vector &q, Vector &p, double &t, double &dt)=0
GeneralizedAlphaSolver(double rho=1.0)
virtual void Run(Vector &q, Vector &p, double &t, double &dt, double tf)
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.
OutStream out(std::cout)
Global stream used by the library for standard output. Initially it uses the same std::streambuf as s...
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.