You define an ode using via the interface {@link ODE}.Currently we have provide implementations for 3 adaptive ode solvers: {@link RungeKuttaFehlberg},{@link BulirschStoer}, and {@link Extrap}. {@link Extrap} is the most sufisticated and allways worked best for us. For situations where performance rules over accuracy we implemented also a simple {@link RungeKutta} method.Have a look at {@link ExampleODE} to learn more about how you define ode's and solve them using this package.