TimeStepperBoostABM_impl< VectorType, SparseMatrixType, dim > Class Template Reference#
|
DiFfRG
Discretization Framework for functional Renormalization Group flows
|
Explicit 8-step Adams-Bashforth-Moulton method, with optional step-size control. More...
#include <boost_abm.hh>
Public Types | |
| using | NumberType = typename Base::NumberType |
| using | InverseSparseMatrixType = typename get_type::InverseSparseMatrixType<SparseMatrixType> |
| using | BlockVectorType = typename Base::BlockVectorType |
Public Member Functions | |
| TimeStepperBoostABM_impl (const ConfigTree &config, AbstractAssembler< VectorType, SparseMatrixType, dim > &assembler, OutputSession_impl< dim, VectorType > &data_out) | |
| Construct without mesh adaptation; see AbstractTimestepper. | |
| TimeStepperBoostABM_impl (const ConfigTree &config, AbstractAssembler< VectorType, SparseMatrixType, dim > &assembler, OutputSession_impl< dim, VectorType > &data_out, AbstractAdaptor< VectorType > &adaptor) | |
| Construct with a mesh adaptor; see AbstractTimestepper. | |
| virtual void | run_segment (AbstractFlowingVariables< NumberType, VectorType > &initial_condition, const double t_start, const double t_stop) override |
Detailed Description
class DiFfRG::TimeStepperBoostABM_impl< VectorType, SparseMatrixType, dim >
Explicit 8-step Adams-Bashforth-Moulton method, with optional step-size control.
Integrates \(\dot u = -M^{-1} R(u, v)\) and \(\dot v = -D(v, u)\) (see abstract_timestepper.hh) with an Adams-Bashforth predictor and one Adams-Moulton corrector, both of order 8, which costs two evaluations of the right-hand side per step. The first 7 steps, before enough history exists, are Cash-Karp 5(4) Runge-Kutta steps.
The base step is the largest \(\Delta t \le\) /timestepping/explicit/dt that divides the interval into equal steps. With /timestepping/explicit/error_control (default true) the local error is estimated from the difference between predictor and corrector; a step that fails the test \(|e_i| \le \mathrm{abs\_tol} + \mathrm{rel\_tol}\, |y_i|\) is retaken at half the step size; at explicit/minimal_dt it is accepted anyway. After 16 steps in a row with an error below a quarter of the tolerance the step size doubles, up to the base step. Without error control every step is the base step.
Handles FE problems with or without variables and pure-variables systems (dim == 0). Output frames are linearly interpolated between steps. Serial only; no mesh adaptation (constructing with an adaptor other than NoAdaptivity throws).
Member Typedef Documentation
◆ BlockVectorType
| using BlockVectorType = typename Base::BlockVectorType |
◆ InverseSparseMatrixType
| using InverseSparseMatrixType = typename get_type::InverseSparseMatrixType<SparseMatrixType> |
◆ NumberType
| using NumberType = typename Base::NumberType |
Constructor & Destructor Documentation
◆ TimeStepperBoostABM_impl() [1/2]
|
inline |
Construct without mesh adaptation; see AbstractTimestepper.
◆ TimeStepperBoostABM_impl() [2/2]
|
inline |
Construct with a mesh adaptor; see AbstractTimestepper.
Member Function Documentation
◆ run_segment()
|
overridevirtual |
The documentation for this class was generated from the following file:
- /home/runner/work/DiFfRG/DiFfRG/DiFfRG/include/DiFfRG/timestepping/boost_abm.hh
Generated by