Fully-discrete systems#
Header: <pressio/ode_steppers_implicit.hpp>
Public namespace: pressio::ode
Scope#
An “implicit stepper” in pressio is an abstraction that represents “how” to take a step when applying an implicit scheme to initial value problems expressable in the following fully discrete form
Here, \(y_{n}\) is the state at the n-th step, \(t\) is independent variable, and \(R\) is the residual.
Recall the definition of implicit methods
Implicit methods update the state by solving a (potentially nonlinear) system of equations involving the current, the predicted state and possibly previous states.
API#
namespace pressio{ namespace ode{
Parameters and templates#
TotalNumberOfDesiredStates
: defines how many totaly states you need/want. For example, say that your arbitrary scheme needs \(y_n+1, y_n, y_n-1\). In such case, you use:TotalNumberOfDesiredStates = 3
. If you need three auxiliary states (beside) the main state to update, then use:TotalNumberOfDesiredStates = 4
.system
: problem instance to evaluate the discrete residual and jacobian
Constraints#
Concepts are documented here.
Note: constraints are enforced via proper C++20 concepts when PRESSIO_ENABLE_CXX20
is enabled,
otherwise via SFINAE and static asserts.
TotalNumberOfDesiredStates
: currently must be set to one of {2, 3}
Preconditions#
system
must bind to an lvalue object whose lifetime is longer that that of the instantiated stepper, i.e., it is destructed after the stepper goes out of scope
Examples#
TBD