/RungeKuttaToolKit.jl

Tools for constructing and analyzing Runge–Kutta methods

Primary LanguageJuliaMIT LicenseMIT

RungeKuttaToolKit.jl

Copyright © 2019-2024 by David K. Zhang. Released under the MIT License.

RungeKuttaToolKit.jl is a Julia package that provides tools for constructing and analyzing Runge–Kutta methods. It includes optimized, SIMD-accelerated code for enumerating rooted trees, building instruction tables, and computing Butcher weights $\Phi_t(A)$ and their derivatives.

The algorithms that underlie RungeKuttaToolKit.jl are described in this paper, which is freely available in read-only form.

RungeKuttaToolKit.jl is closely related to its sister repository, RKTK.

  • RungeKuttaToolKit.jl (this repository) implements the core mathematical operations of the algebraic theory of Runge–Kutta methods, such as computing Butcher weights $\Phi_t(A)$ and evaluating the gradient of the sum-of-squares residual function. RungeKuttaToolKit.jl is intended to be useful to all researchers studying Runge–Kutta methods and is registered in the Julia General package registry, so it can be installed into any Julia environment with the command ]add RungeKuttaToolKit.

  • RKTK contains parallel search and nonlinear optimization scripts that specifically target the discovery of new Runge–Kutta methods. In contrast to the pure mathematical operations in RungeKuttaToolKit.jl, the programs in RKTK establish a number of RKTK-specific conventions regarding optimization hyperparameters and file structure. Consequently, RKTK is not a registered Julia package.

Both RungeKuttaToolKit.jl and RKTK are designed with reproducibility as an explicit goal. The RKTKSearch.jl program has been tested to produce bit-for-bit identical results across multiple architectures (i686, x86-64, ARMv8) and multiple CPU generations (Haswell, Skylake, Rocket Lake, Zen 5).