Multistep schemes
The multistep classes compute the solution at the new step from the solutions at integrator_multistep_object (the multistep Runge-Kutta SSP class extends integrator_multistage_multistep_object) and store the previous steps in their members previous(1:steps), with times t(1:steps) and time steps Dt(1:steps). The first integrate(U, Dt, t) shifts them by itself if autoupdate is .true. (the default); t is the time of the last stored step. See the quick start for a complete start-up loop.
Below,
Adams-Bashforth
Class adams_bashforth (integrator_adams_bashforth), explicit, schemes adams_bashforth_1 ... adams_bashforth_16, of order
adams_bashforth_1 is the forward Euler scheme. The first coefficients are:
| Scheme | ||||
|---|---|---|---|---|
adams_bashforth_1 | ||||
adams_bashforth_2 | ||||
adams_bashforth_3 | ||||
adams_bashforth_4 |
Adams-Moulton
Class adams_moulton (integrator_adams_moulton), implicit, schemes adams_moulton_0 ... adams_moulton_15, of order
The implicit equation is solved by fixed point iterations, their number given by the iterations argument (default 1): each iteration evaluates the residual at the last iterate of U passed to integrate. adams_moulton_0 is the implicit backward Euler scheme, 1st order,
| Scheme | ||||
|---|---|---|---|---|
adams_moulton_0 | ||||
adams_moulton_1 | ||||
adams_moulton_2 | ||||
adams_moulton_3 |
Fixed point iterations converge only if
Adams-Bashforth-Moulton
Class adams_bashforth_moulton (integrator_adams_bashforth_moulton), predictor-corrector, schemes adams_bashforth_moulton_1 ... adams_bashforth_moulton_16. The scheme of number
adams_bashforth_moulton_1 is AB(1)-AM(0), forward Euler predictor and backward Euler corrector, 1st order. The iterations argument (default 1) sets the corrector iterations.
Backward Differentiation Formula
Class back_df (integrator_back_df), implicit, schemes back_df_1 ... back_df_6, of order
solved by fixed point iterations (iterations, default 1). back_df_1 is the backward Euler scheme.
| Steps | |||||||
|---|---|---|---|---|---|---|---|
| 1 | |||||||
| 2 | |||||||
| 3 | |||||||
| 4 | |||||||
| 5 | |||||||
| 6 |
The BDF schemes are designed for stiff problems, but their stability advantage requires a Newton-like solver of the implicit equation: with fixed point iterations the step is limited as for the Adams-Moulton schemes.
Leapfrog
Class leapfrog (integrator_leapfrog), explicit, 2 steps [4]:
The scheme leapfrog is 2nd order accurate, but it is unstable on dissipative problems (its spurious computational mode is amplified): use it for oscillatory, non dissipative problems.
The scheme leapfrog_raw applies the Robert-Asselin-Williams (RAW) filter [5, 6, 20, 21] after each step:
with nu and alpha arguments. For
Order of accuracy
With a fixed filter coefficient leapfrog_raw is formally 1st order accurate, as the tests suite measures. The "3rd order accuracy" of Williams (2011) refers to the accuracy of the amplitude of the oscillations, not to the order of the global error.
Linear multistep SSP
Class lmm_ssp (integrator_lmm_ssp), explicit, Strong Stability Preserving [16]:
| Scheme | Order | Non-zero coefficients |
|---|---|---|
lmm_ssp_steps_3_order_2 | 2 | |
lmm_ssp_steps_4_order_3 | 3 | |
lmm_ssp_steps_5_order_3 | 3 |
Linear multistep SSP with variable step size
Class lmm_ssp_vss (integrator_lmm_ssp_vss), explicit, SSP, the time step can change from step to step [17]. With
the 2nd order formula is
and the 3rd order one is
| Scheme | Order |
|---|---|
lmm_ssp_vss_steps_2_order_2 | 2 |
lmm_ssp_vss_steps_3_order_2 | 2 |
lmm_ssp_vss_steps_3_order_3 | 3 |
lmm_ssp_vss_steps_4_order_3 | 3 |
lmm_ssp_vss_steps_5_order_3 | 3 |
Multistep Runge-Kutta SSP
Class ms_runge_kutta_ssp (integrator_ms_runge_kutta_ssp), explicit, multistep-multistage, SSP [18]. With
| Scheme | Steps | Stages | Order |
|---|---|---|---|
ms_runge_kutta_ssp_steps_2_stages_2_order_3 | 2 | 2 | 3 |
ms_runge_kutta_ssp_steps_3_stages_2_order_3 | 3 | 2 | 3 |
ms_runge_kutta_ssp_steps_4_stages_5_order_8 | 4 | 5 | 8 |
The coefficients are in the source, foodie_integrator_ms_runge_kutta_ssp.F90. The 8th order of the last scheme is verified by the polynomial exactness test and observed on the Riccati problem, but it is beyond the orders the convergence test can assert in double precision (see Testing).
The references are numbered as in the bibliography of the catalogue.