Fixed-step RK formulas.
Euler (1st order) integration method.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(euler_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Midpoint (2nd order) integration method.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(midpoint_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Heun's (2nd order) integration method
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(heun_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
2-stage, 2nd order TVD Runge-Kutta method of Shu and Osher (1988). CFL=1.0.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkssp22_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
3rd order, 3 steps RK integration method
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rk3_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
3-stage, 3rd order TVD Runge-Kutta method of Shu and Osher (1988). CFL=1.0.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkssp33_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
5-stage, 3rd order SSP Runge-Kutta method of Spiteri and Ruuth (2005). CFL=2.65.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkssp53_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Take one Runge Kutta 4 integration step: t -> t+h (x -> xf)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rk4_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
4th order Runge Kutta Shanks (4 points)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rks4_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Ralston 4th order method with minimum truncation error.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkr4_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
4-stage, 4th order low storage non-TVD Runge-Kutta method of Jiang and Shu (1988).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkls44_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
5-stage, 4th order SSP Runge-Kutta method of Spiteri and Ruuth (2005). CFL=1.508.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkssp54_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
5-stage, 4th order low storage Runge-Kutta method of Carpenter and Kennedy (1994). CFL<=0.32
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkls54_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Runge Kutta Shanks (5th order)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rks5_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Runge's 5th order method.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rk5_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Cassity's Order 5 method
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkc5_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
5th order Lawson
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkl5_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Luther and Konen's 5th order method (1)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rklk5a_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Luther and Konen's 5th order method (2)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rklk5b_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Butcher's 6th order method. 7 function evaluations.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkb6_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Take one Runge Kutta 7 integration step: t -> t+h (x -> xf)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rk7_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Take one Runge Kutta 8 integration step: t -> t+h (x -> xf)
This is Formula (8-10) from Reference [1].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rk8_10_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
8th order Shanks, 12 function evaluations.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rk8_12_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Cooper-Verner 11 stage, 8th order Runge-Kutta method.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkcv8_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Zhang 10th order
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkz10_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Ono's 10th order method
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rko10_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Hairer 10th order method.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rkh10_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |
Stepanov 10th order (15 stage) method.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(rks10_class), | intent(inout) | :: | me | |||
| real(kind=wp), | intent(in) | :: | t |
initial time |
||
| real(kind=wp), | intent(in), | dimension(me%n) | :: | x |
initial state |
|
| real(kind=wp), | intent(in) | :: | h |
time step |
||
| real(kind=wp), | intent(out), | dimension(me%n) | :: | xf |
state at time |