Runge-Kutta schemes
The multistage classes advance the solution from integrator_multistage_object: their integrate(U, Dt, t, new_Dt) takes the time step Dt, given by the caller, and the time t
Forward Euler
Class euler_explicit, scheme euler_explicit, 1st order:
SSP Runge-Kutta
Class runge_kutta_ssp (integrator_runge_kutta_ssp). The schemes have the Total Variation Diminishing (TVD) or Strong Stability Preserving (SSP) property and are written in the Butcher form [19]:
where
| Scheme | Order | Notes |
|---|---|---|
runge_kutta_ssp_stages_1_order_1 | 1 | forward Euler |
runge_kutta_ssp_stages_2_order_2 | 2 | optimal SSP(2,2) [1] |
runge_kutta_ssp_stages_3_order_3 | 3 | optimal SSP(3,3) [1] |
runge_kutta_ssp_stages_5_order_4 | 4 | optimal SSP(5,4) [1] |
The tableaus (
SSP(5,4):
| 0 | ||||
| 0.39175222686925 | 0.39175222686925 | |||
| 0.58607968906690 | 0.21766909635783 | 0.36841059270907 | ||
| 0.47454236316248 | 0.08269208668309 | 0.13995850210743 | 0.25189177437196 | |
| 0.93501063109579 | 0.06796628357405 | 0.11503469845367 | 0.20703489877294 | 0.54497475029514 |
These are the rounded values of the module documentation; the source uses more digits, refined to satisfy the order conditions in double precision (verified by scripts/audit_rk_tableaus.py).
Low storage Runge-Kutta
Class runge_kutta_ls (integrator_runge_kutta_ls). Following Williamson [2], the schemes use only two registers
with
| Scheme | Order | Reference |
|---|---|---|
runge_kutta_ls_stages_1_order_1 | 1 | forward Euler (not a real low storage scheme, provided for completeness) |
runge_kutta_ls_stages_5_order_4 | 4 | LSRK(5,4)2N, solution 3 of Carpenter and Kennedy [3] |
runge_kutta_ls_stages_6_order_4 | 4 | RK(6,4) of Allampalli et al. [9] |
runge_kutta_ls_stages_7_order_4 | 4 | RK(7,4) of Allampalli et al. [9] |
runge_kutta_ls_stages_12_order_4 | 4 | RK(12,4) of Niegemann et al. [10] |
runge_kutta_ls_stages_13_order_4 | 4 | RK(13,4) of Niegemann et al. [10] |
runge_kutta_ls_stages_14_order_4 | 4 | RK(14,4) of Niegemann et al. [10] |
The coefficients of the 5 stages scheme are rational:
| Stage | |||
|---|---|---|---|
| 1 | 0 | 1432997174477/9575080441755 | 0 |
| 2 | -567301805773/1357537059087 | 5161836677717/13612068292357 | 1432997174477/9575080441755 |
| 3 | -2404267990393/2016746695238 | 1720146321549/2090206949498 | 2526269341429/6820363962896 |
| 4 | -3550918686646/2091501179385 | 3134564353537/4481467310338 | 2006345519317/3224310063776 |
| 5 | -1275806237668/842570457699 | 2277821191437/14882151754819 | 2802321613138/2924317926251 |
The 6 and 7 stages coefficients published with 12 decimals violate the 4th order conditions by about foodie_integrator_runge_kutta_low_storage.F90 and in the API.
Embedded Runge-Kutta (adaptive)
Class runge_kutta_emd (integrator_runge_kutta_emd). An embedded pair computes, with the same stages
The difference between the two, measured by the .lterror. operator of the integrand, estimates the local error and drives the step size control (see Adaptive time step). In all the FOODIE pairs the solution is advanced with the higher order formula (local extrapolation):
| Scheme | Advances with | Error estimator | Reference |
|---|---|---|---|
runge_kutta_emd_stages_2_order_2 | 2nd order | 1st order | Heun-Euler |
runge_kutta_emd_stages_6_order_5 | 5th order | 4th order | Cash-Karp [13] |
runge_kutta_emd_stages_7_order_4 | 5th order | 4th order | Dormand-Prince [11] |
runge_kutta_emd_stages_9_order_6 | 6th order | 5th order | Calvo et al. [14] |
runge_kutta_emd_stages_17_order_10 | 10th order | 8th order | Feagin [15] |
The names of the schemes give the number of stages and one order of the pair: for Dormand-Prince it is the lower one, the scheme being 5th order accurate.
Heun-Euler:
Cash-Karp:
Dormand-Prince:
The Calvo (9 stages) and Feagin (17 stages) tableaus are too large to be reported here: they are in the documentation of foodie_integrator_runge_kutta_embedded.F90 and in the API.
Linear SSP Runge-Kutta
Class runge_kutta_lssp (integrator_runge_kutta_lssp), from Gottlieb, Ketcheson and Shu [16]: SSP schemes with any number of stages stages argument. With runge_kutta_lssp_stages_s_order_s_1 (runge_kutta_lssp_stages_s_order_s (
The coefficients
order_s_1:, ; for : , then for , then ; order_s:; for : , then for , then .
Order of accuracy
The schemes are
The references are numbered as in the bibliography of the catalogue.