|
| SecondOrderODE (int n, State &&state, const EquationSolver &solver, const BoundaryConditionManager &bcs) |
| Constructor defining the size and specific system of ordinary differential equations to be solved. More...
|
|
void | Mult (const mfem::Vector &u, const mfem::Vector &du_dt, mfem::Vector &d2u_dt2) const override |
| Solves the equation d2u_dt2 = f(u, du_dt, t) More...
|
|
void | ImplicitSolve (const double c0, const double c1, const mfem::Vector &u, const mfem::Vector &du_dt, mfem::Vector &d2u_dt2) override |
| Solves the equation d2u_dt2 = f(u + c0 * d2u_dt2, du_dt + c1 * d2u_dt2, t) More...
|
|
void | ImplicitSolve (const double dt, const mfem::Vector &u, mfem::Vector &du_dt) override |
|
void | SetEnforcementMethod (const DirichletEnforcementMethod method) |
| Configures the Dirichlet enforcement method to use. More...
|
|
void | SetTimestepper (const serac::TimestepMethod timestepper) |
| Set the time integration method. More...
|
|
void | Step (mfem::Vector &x, mfem::Vector &dxdt, double &time, double &dt) |
| Performs a time step. More...
|
|
const State & | GetState () |
| Get a reference to the current state.
|
|
TimestepMethod | GetTimestepper () |
| Query the timestep method for the ode solver. More...
|
|
SecondOrderODE is a class wrapping mfem::SecondOrderTimeDependentOperator so that the user can use std::function to define the implementations of mfem::SecondOrderTimeDependentOperator::Mult and mfem::SecondOrderTimeDependentOperator::ImplicitSolve.
The main benefit of this approach is that lambda capture lists allow for a flexible inline representation of the overloaded functions, without having to manually define a separate functor class.
Definition at line 34 of file odes.hpp.
Constructor defining the size and specific system of ordinary differential equations to be solved.
- Parameters
-
[in] | n | The number of components in each vector of the ODE |
[in] | state | The collection of references to input/output variables from the physics module |
[in] | solver | The solver that operates on the residual |
[in] | bcs | The set of Dirichlet conditions to enforce |
Implements mfem::SecondOrderTimeDependentOperator::Mult and mfem::SecondOrderTimeDependentOperator::ImplicitSolve (described in more detail here: https://mfem.github.io/doxygen/html/classmfem_1_1SecondOrderTimeDependentOperator.html)
where
mfem::SecondOrderTimeDependentOperator::Mult corresponds to the case where fac0, fac1 are both zero mfem::SecondOrderTimeDependentOperator::ImplicitSolve corresponds to the case where either of fac0, fac1 are nonzero
Definition at line 11 of file odes.cpp.
constexpr double serac::mfem_ext::SecondOrderODE::epsilon = 0.0001 |
|
staticconstexpr |
a small number used to compute finite difference approximations to time derivatives of boundary conditions.
Note: this is intended to be temporary Ideally, epsilon should be "small" relative to the characteristic time of the ODE, but we can't ensure that at present (we don't have a critical timestep estimate)
Definition at line 45 of file odes.hpp.