SkillAgentSearch skills...

Rklib

Fixed and variable-step Runge-Kutta solvers in Modern Fortran

Install / Use

/learn @jacobwilliams/Rklib

README

rklib

rklib: A modern Fortran library of fixed and variable-step Runge-Kutta solvers.

Language GitHub release CI Status codecov last-commit

Description

The focus of this library is single-step, explicit Runge-Kutta solvers for 1st order differential equations.

Novel features:

  • The library includes a wide range of both fixed and variable-step Runge-Kutta methods, from very low to very high order.
  • It is object-oriented and written in modern Fortran.
  • It allows for defining a variable-step size integrator with a custom-tuned step size selection method. See stepsize_class in the code.
  • The real kind is selectable via a compiler directive (REAL32, REAL64, or REAL128).
  • Integration to an event is also supported. The root-finding method is also selectable (via the roots-fortran library).

Available Runge-Kutta methods:

  • Number of fixed-step methods: 28
  • Number of variable-step methods: 48
  • Total number of methods: 76

Fixed-step methods:

Name | Description| Properties | Order | Stages | Registers | CFL | Reference --- | --- | --- | --- | --- | --- | --- | --- euler | Euler | | 1 | 1 | 1 | 1.0 | Euler (1768) midpoint | Midpoint | | 2 | 2 | 2 | | ? heun | Heun | | 2 | 2 | 2 | | ? rkssp22 | 2-stage, 2nd order TVD Runge-Kutta Shu-Osher | SSP | 2 | 2 | 1 | 1.0 | Shu & Oscher (1988) rk3 | 3th order Runge-Kutta | | 3 | 3 | 3 | | ? rkssp33 | 3-stage, 3rd order TVD Runge-Kutta Shu-Osher | SSP | 3 | 3 | 1 | 1.0 | Shu & Oscher (1988) rkssp53 | 5-stage, 3rd order SSP Runge-Kutta Spiteri-Ruuth | SSP | 3 | 5 | 2 | 2.65 | Ruuth (2006) rk4 | Classic 4th order Runge-Kutta | | 4 | 4 | 4 | | Kutta (1901) rks4 | 4th order Runge-Kutta Shanks | | 4 | 4 | 4 | | Shanks (1965) rkr4 | 4th order Runge-Kutta Ralston | | 4 | 4 | 4 | | Ralston (1962) rkls44 | 4-stage, 4th order low storage non-TVD Runge-Kutta Jiang-Shu | LS | 4 | 4 | 2 | | Jiang and Shu (1988) rkls54 | 5-stage, 4th order low storage Runge-Kutta Carpenter-Kennedy | LS | 4 | 5 | 2 | 0.32 | Carpenter & Kennedy (1994) rkssp54 | 5-stage, 4th order SSP Runge-Kutta Spiteri-Ruuth | SSP | 4 | 5 | 4 | 1.51 | Ruuth (2006) rks5 | 5th order Runge-Kutta Shanks | | 5 | 5 | 5 | | Shanks (1965) rk5 | 5th order Runge-Kutta | | 5 | 6 | 6 | | ? rkc5 | 5th order Runge-Kutta Cassity | | 5 | 6 | 6 | | Cassity (1966) rkl5 | 5th order Runge-Kutta Lawson | | 5 | 6 | 6 | | Lawson (1966) rklk5a | 5th order Runge-Kutta Luther-Konen 1 | | 5 | 6 | 6 | | Luther & Konen (1965) rklk5b | 5th order Runge-Kutta Luther-Konen 2 | | 5 | 6 | 6 | | Luther & Konen (1965) rkb6 | 6th order Runge-Kutta Butcher | | 6 | 7 | 7 | | Butcher (1963) rk7 | 7th order Runge-Kutta Shanks | | 7 | 9 | 9 | | Shanks (1965) rk8_10 | 10-stage, 8th order Runge-Kutta Shanks | | 8 | 10 | 10 | | Shanks (1965) rkcv8 | 11-stage, 8th order Runge-Kutta Cooper-Verner | | 8 | 11 | 11 | | Cooper & Verner (1972) rk8_12 | 12-stage, 8th order Runge-Kutta Shanks | | 8 | 12 | 12 | | Shanks (1965) rks10 | 10th order Runge-Kutta Stepanov | | 10 | 15 | 15 | | Stepanov (2025) rkz10 | 10th order Runge-Kutta Zhang | | 10 | 16 | 16 | | Zhang (2019) rko10 | 10th order Runge-Kutta Ono | | 10 | 17 | 17 | | Ono (2003) rkh10 | 10th order Runge-Kutta Hairer | | 10 | 17 | 17 | | Hairer (1978)

Variable-step methods:

Name | Description| Properties | Order | Stages | Registers | CFL | Reference --- | --- | --- | --- | --- | --- | --- | --- rkbs32 | Bogacki & Shampine 3(2) | FSAL | 3 | 4 | 4 | | Bogacki & Shampine (1989) rkssp43 | 4-stage, 3rd order SSP | SSP, LS | 3 | 4 | 2 | 2.0 | Kraaijevanger (1991), Conde et al. (2018) rkf45 | Fehlberg 4(5) | | 4 | 6 | 6 | | Fehlberg (1969) rkck54 | Cash & Karp 5(4) | | 5 | 6 | 6 | | Cash & Karp (1990) rkdp54 | Dormand-Prince 5(4) | FSAL | 5 | 7 | 7 | | Dormand & Prince (1980) rkt54 | Tsitouras 5(4) | FSAL | 5 | 7 | 7 | | Tsitouras (2011) rks54 | Stepanov 5(4) | FSAL | 5 | 7 | 7 | | Stepanov (2022) rkpp54 | Papakostas-PapaGeorgiou 5(4) | FSAL | 5 | 7 | 7 | | Papakostas & Papageorgiou (1996) rkpp54b | Papakostas-PapaGeorgiou 5(4) b | FSAL | 5 | 7 | 7 | | Papakostas & Papageorgiou (1996) rkbs54 | Bogacki & Shampine 5(4) | | 5 | 8 | 8 | | Bogacki & Shampine (1996) rkss54 | Sharp & Smart 5(4) | | 5 | 7 | 7 | | Sharp & Smart (1993) rkdp65 | Dormand-Prince 6(5) | | 6 | 8 | 8 | | Dormand & Prince (1981) rkc65 | Calvo 6(5) | | 6 | 9 | 9 | | Calvo (1990) rktp64 | Tsitouras & Papakostas NEW6(4) | | 6 | 7 | 7 | | Tsitouras & Papakostas (1999) rkv65e | Verner efficient (9,6(5)) | FSAL | 6 | 9 | 9 | | Verner (1994) rkv65r | Verner robust (9,6(5)) | FSAL | 6 | 9 | 9 | | Verner (1994) rkv65 | Verner 6(5) | | 6 | 8 | 8 | | Verner (2006) dverk65 | Verner 6(5) "DVERK" | | 6 | 8 | 8 | | Verner (?) rktf65 | Tsitouras & Famelis 6(5) | FSAL | 6 | 9 | 9 | | Tsitouras & Famelis (2006) rktp75 | Tsitouras & Papakostas NEW7(5) | | 7 | 9 | 9 | | Tsitouras & Papakostas (1999) rktmy7 | 7th order Tanaka-Muramatsu-Yamashita | | 7 | 10 | 10 | | Tanaka, Muramatsu & Yamashita (1992) rktmy7s | 7th order Stable Tanaka-Muramatsu-Yamashita | | 7 | 10 | 10 | | Tanaka, Muramatsu & Yamashita (1992) rkv76e | Verner efficient (10:7(6)) | | 7 | 10 | 10 | | Verner (1978) rkv76r | Verner robust (10:7(6)) | | 7 | 10 | 10 | | Verner (1978) rkss76 | Sharp & Smart 7(6) | | 7 | 11 | 11 | | Sharp & Smart (1993) rkf78 | Fehlberg 7(8) | | 7 | 13 | 13 | | Fehlberg (1968) rkv78 | Verner 7(8) | | 7 | 13 | 13 | | Verner (1978) dverk78 | Verner "Maple" 7(8) | | 7 | 13 | 13 | | [Verner (?)](http://www.peterstone.name/Maplepgs/Maple/nmthds/RKco

Related Skills

View on GitHub
GitHub Stars92
CategoryDevelopment
Updated2mo ago
Forks4

Languages

Fortran

Security Score

100/100

Audited on Jan 14, 2026

No findings