#ode #euler #numeric #ndarray #rungekutta

freude

An ODE library for ndarray providing some simple, fixed-step integrators

9 releases (breaking)

0.7.0 Jun 26, 2019
0.6.0 Mar 21, 2019
0.5.0 Jan 15, 2018
0.4.0 Jul 17, 2017
0.1.2 Feb 16, 2017

#429 in Science

MIT/Apache

18KB
444 lines

freude

The freude crate will provide steppers and integrators to solve ODEs (ordinary differential equations). It is inspired by boost::numeric::odeint.

Features

  • Explicit fixed-step ODE solvers:
    • Euler
    • Heun
    • Classical 4-th order Runge Kutta (RK4)

Todo:

  • Implicit methods
  • Adaptive steppers
    • DOPRI, RKF45
  • Symplectic solvers
  • Generalized Runge Kutta methods (maybe via Butcher tableaus?)

Recent changes

  • 0.7.0
    • Require Debug bounds on the steppers (breaking change)
  • 0.6.0
    • Update ergonomics
  • 0.5.0
    • Require ndarray 0.11, bump all related dependencies
  • 0.4.0-dev
    • Update benchmarks to work with v0.4.0
  • 0.4.0
    • Complete rework and simplification of the Ode and Stepper logic
      • Stepper no longer contains an Ode system but acts on Ode::State borrows
      • Removal of Integrator: absorbed into Stepper
      • Removal of Observer trait
    • Bump to ndarray 0.10
  • 0.3.1
    • Implement steppers to work on tuples as defined in the tuple crate;
    • Implement ODE trait for generic functions/closures on tuples.
  • 0.3.0
    • Update to ndarray 0.9
    • Unify Vec and ArrayBase stepper states through ndarray's Zip and IntoNdProducer traits
    • Provide several examples as benchmarks (Kuramoto and Chaotic Neural Network models)
  • 0.2.0
    • Complete rework of the ODE, stepper, and integrator logic;
    • System state is no longer considered an internal property of an ODE, but a parameter passed to the stepper.
  • 0.1.1
    • Implement Euler and Heun methods
  • 0.1.0
    • Initial release
    • Definition of explicit, fixed step integrators, steppers
    • Definition of ODEs
    • Implementation of Runge-Kutta-4 method

Trivia

The crate's name freude is inspired by Beethoven's Ode an die Freude (“Ode to Joy”), and can be pronounced either /ˈfʀɔɪ̯də/ or, alternatively, froy-D-E (as in O-D-E).

Dependencies

~2MB
~35K SLoC