Explicit Runge-Kutta Methods

Standard Explicit Runge-Kutta Methods

OrdinaryDiffEq.Heun — Type

Heun: Explicit Runge-Kutta Method The second order Heun's method. Uses embedded Euler method for adaptivity.

source
OrdinaryDiffEq.Ralston — Type

Ralston: Explicit Runge-Kutta Method The optimized second order midpoint method. Uses embedded Euler method for adaptivity.

source
OrdinaryDiffEq.Midpoint — Type

Midpoint: Explicit Runge-Kutta Method The second order midpoint method. Uses embedded Euler method for adaptivity.

source
OrdinaryDiffEq.RK4 — Type

@article{shampine2005solving, title={Solving ODEs and DDEs with residual control}, author={Shampine, LF}, journal={Applied Numerical Mathematics}, volume={52}, number={1}, pages={113–127}, year={2005}, publisher={Elsevier} }

RK4: Explicit Runge-Kutta Method The canonical Runge-Kutta Order 4 method. Uses a defect control for adaptive stepping using maximum error over the whole interval.

source
Missing docstring.

Missing docstring for RKM. Check Documenter's build log for details.

OrdinaryDiffEq.MSRK5 — Type

MSRK5 : 5th order Explicit RK method.

  • Misha Stepanov - https://arxiv.org/pdf/2202.08443.pdf : Figure 3.
source
OrdinaryDiffEq.Anas5 — Type

Anas5: Explicit Runge-Kutta Method 4th order Runge-Kutta method designed for periodic problems. Requires a periodicity estimate which when accurate the method becomes 5th order (and is otherwise 4th order with less error for better estimates).

source
OrdinaryDiffEq.RKO65 — Type

Tsitouras, Ch. "Explicit Runge–Kutta methods for starting integration of Lane–Emden problem." Applied Mathematics and Computation 354 (2019): 353-364. doi: https://doi.org/10.1016/j.amc.2019.02.047

source
OrdinaryDiffEq.OwrenZen3 — Type

@article{owren1992derivation, title={Derivation of efficient, continuous, explicit Runge–Kutta methods}, author={Owren, Brynjulf and Zennaro, Marino}, journal={SIAM journal on scientific and statistical computing}, volume={13}, number={6}, pages={1488–1501}, year={1992}, publisher={SIAM} }

OwrenZen3: Explicit Runge-Kutta Method Owren-Zennaro optimized interpolation 3/2 method (free 3th order interpolant).

source
OrdinaryDiffEq.OwrenZen4 — Type

@article{owren1992derivation, title={Derivation of efficient, continuous, explicit Runge–Kutta methods}, author={Owren, Brynjulf and Zennaro, Marino}, journal={SIAM journal on scientific and statistical computing}, volume={13}, number={6}, pages={1488–1501}, year={1992}, publisher={SIAM} }

OwrenZen4: Explicit Runge-Kutta Method Owren-Zennaro optimized interpolation 4/3 method (free 4th order interpolant).

source
OrdinaryDiffEq.OwrenZen5 — Type

@article{owren1992derivation, title={Derivation of efficient, continuous, explicit Runge–Kutta methods}, author={Owren, Brynjulf and Zennaro, Marino}, journal={SIAM journal on scientific and statistical computing}, volume={13}, number={6}, pages={1488–1501}, year={1992}, publisher={SIAM} }

OwrenZen5: Explicit Runge-Kutta Method Owren-Zennaro optimized interpolation 5/4 method (free 5th order interpolant).

source
OrdinaryDiffEq.BS3 — Type
BS3(; stage_limiter! = OrdinaryDiffEq.trivial_limiter!,
      step_limiter! = OrdinaryDiffEq.trivial_limiter!,
      thread = OrdinaryDiffEq.False())

A third-order, four-stage explicit FSAL Runge-Kutta method with embedded error estimator of Bogacki and Shampine.

Like SSPRK methods, this method also takes optional arguments stage_limiter! and step_limiter!, where stage_limiter! and step_limiter! are functions of the form limiter!(u, integrator, p, t).

The argument thread determines whether internal broadcasting on appropriate CPU arrays should be serial (thread = OrdinaryDiffEq.False(), default) or use multiple threads (thread = OrdinaryDiffEq.True()) when Julia is started with multiple threads.

References

@article{bogacki19893, title={A 3 (2) pair of Runge-Kutta formulas}, author={Bogacki, Przemyslaw and Shampine, Lawrence F}, journal={Applied Mathematics Letters}, volume={2}, number={4}, pages={321–325}, year={1989}, publisher={Elsevier} }

source
OrdinaryDiffEq.DP5 — Type

@article{dormand1980family, title={A family of embedded Runge-Kutta formulae}, author={Dormand, John R and Prince, Peter J}, journal={Journal of computational and applied mathematics}, volume={6}, number={1}, pages={19–26}, year={1980}, publisher={Elsevier} }

DP5: Explicit Runge-Kutta Method Dormand-Prince's 5/4 Runge-Kutta method. (free 4th order interpolant).

source
OrdinaryDiffEq.Tsit5 — Type
Tsit5(; stage_limiter! = OrdinaryDiffEq.trivial_limiter!,
        step_limiter! = OrdinaryDiffEq.trivial_limiter!,
        thread = OrdinaryDiffEq.False())

A fourth-order, five-stage explicit Runge-Kutta method with embedded error estimator of Tsitouras. Free 4th order interpolant.

Like SSPRK methods, this method also takes optional arguments stage_limiter! and step_limiter!, where stage_limiter! and step_limiter! are functions of the form limiter!(u, integrator, p, t).

The argument thread determines whether internal broadcasting on appropriate CPU arrays should be serial (thread = OrdinaryDiffEq.False(), default) or use multiple threads (thread = OrdinaryDiffEq.True()) when Julia is started with multiple threads.

References

@article{tsitouras2011runge, title={Runge–Kutta pairs of order 5 (4) satisfying only the first column simplifying assumption}, author={Tsitouras, Ch}, journal={Computers \& Mathematics with Applications}, volume={62}, number={2}, pages={770–775}, year={2011}, publisher={Elsevier} }

source
OrdinaryDiffEq.DP8 — Type

E. Hairer, S.P. Norsett, G. Wanner, (1993) Solving Ordinary Differential Equations I. Nonstiff Problems. 2nd Edition. Springer Series in Computational Mathematics, Springer-Verlag.

DP8: Explicit Runge-Kutta Method Hairer's 8/5/3 adaption of the Dormand-Prince Runge-Kutta method. (7th order interpolant).

source
OrdinaryDiffEq.TanYam7 — Type

Tanaka M., Muramatsu S., Yamashita S., (1992), On the Optimization of Some Nine-Stage Seventh-order Runge-Kutta Method, Information Processing Society of Japan, 33 (12), pp. 1512-1526.

TanYam7: Explicit Runge-Kutta Method Tanaka-Yamashita 7 Runge-Kutta method.

source
OrdinaryDiffEq.Feagin10 — Type

@article{feagin2012high, title={High-order explicit Runge-Kutta methods using m-symmetry}, author={Feagin, Terry}, year={2012}, publisher={Neural, Parallel \& Scientific Computations} }

Feagin10: Explicit Runge-Kutta Method Feagin's 10th-order Runge-Kutta method.

source
OrdinaryDiffEq.Feagin12 — Type

@article{feagin2012high, title={High-order explicit Runge-Kutta methods using m-symmetry}, author={Feagin, Terry}, year={2012}, publisher={Neural, Parallel \& Scientific Computations} }

Feagin12: Explicit Runge-Kutta Method Feagin's 12th-order Runge-Kutta method.

source
OrdinaryDiffEq.Feagin14 — Type

Feagin, T., “An Explicit Runge-Kutta Method of Order Fourteen,” Numerical Algorithms, 2009

Feagin14: Explicit Runge-Kutta Method Feagin's 14th-order Runge-Kutta method.

source
OrdinaryDiffEq.FRK65 — Type

FRK65: Explicit Runge-Kutta Zero Dissipation Runge-Kutta of 6th order. Takes an optional argument w to for the periodicity phase, in which case this method results in zero numerical dissipation.

source
OrdinaryDiffEq.PFRK87 — Type

PFRK87: Explicit Runge-Kutta Phase-fitted Runge-Kutta Runge-Kutta of 8th order. Takes an optional argument w to for the periodicity phase, in which case this method results in zero numerical dissipation.

source

Lazy Interpolation Explicit Runge-Kutta Methods

OrdinaryDiffEq.BS5 — Type

@article{bogacki1996efficient, title={An efficient runge-kutta (4, 5) pair}, author={Bogacki, P and Shampine, Lawrence F}, journal={Computers \& Mathematics with Applications}, volume={32}, number={6}, pages={15–28}, year={1996}, publisher={Elsevier} }

BS5: Explicit Runge-Kutta Method Bogacki-Shampine 5/4 Runge-Kutta method. (lazy 5th order interpolant).

source
OrdinaryDiffEq.Vern6 — Type

@article{verner2010numerically, title={Numerically optimal Runge–Kutta pairs with interpolants}, author={Verner, James H}, journal={Numerical Algorithms}, volume={53}, number={2-3}, pages={383–396}, year={2010}, publisher={Springer} }

Vern6: Explicit Runge-Kutta Method Verner's "Most Efficient" 6/5 Runge-Kutta method. (lazy 6th order interpolant).

source
OrdinaryDiffEq.Vern7 — Type

@article{verner2010numerically, title={Numerically optimal Runge–Kutta pairs with interpolants}, author={Verner, James H}, journal={Numerical Algorithms}, volume={53}, number={2-3}, pages={383–396}, year={2010}, publisher={Springer} }

Vern7: Explicit Runge-Kutta Method Verner's "Most Efficient" 7/6 Runge-Kutta method. (lazy 7th order interpolant).

source
OrdinaryDiffEq.Vern8 — Type

@article{verner2010numerically, title={Numerically optimal Runge–Kutta pairs with interpolants}, author={Verner, James H}, journal={Numerical Algorithms}, volume={53}, number={2-3}, pages={383–396}, year={2010}, publisher={Springer} }

Vern8: Explicit Runge-Kutta Method Verner's "Most Efficient" 8/7 Runge-Kutta method. (lazy 8th order interpolant)

source
OrdinaryDiffEq.Vern9 — Type

@article{verner2010numerically, title={Numerically optimal Runge–Kutta pairs with interpolants}, author={Verner, James H}, journal={Numerical Algorithms}, volume={53}, number={2-3}, pages={383–396}, year={2010}, publisher={Springer} }

Vern9: Explicit Runge-Kutta Method Verner's "Most Efficient" 9/8 Runge-Kutta method. (lazy 9th order interpolant)

source

Fixed Timestep Only Explicit Runge-Kutta Methods

OrdinaryDiffEq.RK46NL — Type

Julien Berland, Christophe Bogey, Christophe Bailly. Low-Dissipation and Low-Dispersion Fourth-Order Runge-Kutta Algorithm. Computers & Fluids, 35(10), pp 1459-1463, 2006. doi: https://doi.org/10.1016/j.compfluid.2005.04.003

RK46NL: 6-stage, fourth order low-stage, low-dissipation, low-dispersion scheme. Fixed timestep only.

source
OrdinaryDiffEq.ORK256 — Type
ORK256(; stage_limiter! = OrdinaryDiffEq.trivial_limiter!,
         step_limiter! = OrdinaryDiffEq.trivial_limiter!,
         thread = OrdinaryDiffEq.False(),
         williamson_condition = true)

A second-order, five-stage explicit Runge-Kutta method for wave propogation equations. Fixed timestep only.

Like SSPRK methods, this method also takes optional arguments stage_limiter! and step_limiter!, where stage_limiter! and step_limiter! are functions of the form limiter!(u, integrator, p, t).

The argument thread determines whether internal broadcasting on appropriate CPU arrays should be serial (thread = OrdinaryDiffEq.False(), default) or use multiple threads (thread = OrdinaryDiffEq.True()) when Julia is started with multiple threads.

References

  • Matteo Bernardini, Sergio Pirozzoli. A General Strategy for the Optimization of Runge-Kutta Schemes for Wave Propagation Phenomena. Journal of Computational Physics, 228(11), pp 4182-4199, 2009. doi: https://doi.org/10.1016/j.jcp.2009.02.032
source

Parallel Explicit Runge-Kutta Methods

OrdinaryDiffEq.KuttaPRK2p5 — Type

KuttaPRK2p5: Parallel Explicit Runge-Kutta Method A 5 parallel, 2 processor explicit Runge-Kutta method of 5th order.

These methods utilize multithreading on the f calls to parallelize the problem. This requires that simultaneous calls to f are thread-safe.

source