Explicit Runge-Kutta Methods
Standard Explicit Runge-Kutta Methods
OrdinaryDiffEq.Heun
— TypeHeun: Explicit Runge-Kutta Method The second order Heun's method. Uses embedded Euler method for adaptivity.
OrdinaryDiffEq.Ralston
— TypeRalston: Explicit Runge-Kutta Method The optimized second order midpoint method. Uses embedded Euler method for adaptivity.
OrdinaryDiffEq.Midpoint
— TypeMidpoint: Explicit Runge-Kutta Method The second order midpoint method. Uses embedded Euler method for adaptivity.
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.
Missing docstring for RKM
. Check Documenter's build log for details.
OrdinaryDiffEq.MSRK5
— TypeMSRK5 : 5th order Explicit RK method.
- Misha Stepanov - https://arxiv.org/pdf/2202.08443.pdf : Figure 3.
OrdinaryDiffEq.Anas5
— TypeAnas5: 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).
OrdinaryDiffEq.RKO65
— TypeTsitouras, 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
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).
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).
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).
OrdinaryDiffEq.BS3
— TypeBS3(; 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} }
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).
OrdinaryDiffEq.Tsit5
— TypeTsit5(; 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} }
OrdinaryDiffEq.DP8
— TypeE. 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).
OrdinaryDiffEq.TanYam7
— TypeTanaka 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.
OrdinaryDiffEq.TsitPap8
— TypeTsitPap8: Explicit Runge-Kutta Method Tsitouras-Papakostas 8/7 Runge-Kutta method.
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.
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.
OrdinaryDiffEq.Feagin14
— TypeFeagin, T., “An Explicit Runge-Kutta Method of Order Fourteen,” Numerical Algorithms, 2009
Feagin14: Explicit Runge-Kutta Method Feagin's 14th-order Runge-Kutta method.
OrdinaryDiffEq.FRK65
— TypeFRK65: 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.
OrdinaryDiffEq.PFRK87
— TypePFRK87: 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.
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).
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).
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).
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)
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)
Fixed Timestep Only Explicit Runge-Kutta Methods
OrdinaryDiffEq.Euler
— TypeEuler - The canonical forward Euler method. Fixed timestep only.
OrdinaryDiffEq.RK46NL
— TypeJulien 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.
OrdinaryDiffEq.ORK256
— TypeORK256(; 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
Parallel Explicit Runge-Kutta Methods
OrdinaryDiffEq.KuttaPRK2p5
— TypeKuttaPRK2p5: 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.