odeint – Solving ordinary differential equations in C++
Ordinary differential equations (ODEs) play a major role in many scientific and engineering disciplines. Examples range from classical Newtonian mechanics, chemical reaction equations, rate equations in population dynamics or quantum systems to neuronal system, to name only a few. Furthermore, they occur naturally as discretizations of partial differential equations (PDEs). In this presentation odeint (odeint.com) is introduced – a C++ library dedicated to find numerical solutions of ODEs. It aims to become an official boost library. odeint is implemented in a highly generic way and provides extensive interoperability at top performance. It introduces several C++concepts for ODE solvers and implements many of the standard methods, like the classical Runge-Kutta schemes, methods with step size control and dense output, implicit methods and symplectic solvers. One main focus of odeint is container independence such that the user is not restricted to a specific type like std::vector. Therefore, it is possible to solve ODEs defined on networks or lattices. Furthermore, one can use multi-precision or interval arithmetics. Due to it’s generic design odeint can be easily parallized and runs on CUDA GPUs. Despite that, it provides a convenient interface that allows for a simple and easy usage. In this talk the main features of odeint are presented as well as its basic software design.