For solving system of ODEs numerically, one needs to figure out which solver to pick based on the 'stiffness' of the system. Arthur Muttuck's excellent lectures on ODE system are here:
https://www.youtube.com/watch?v=LbKKzMag5Rc. I recently heard in a talk that the speaker saw oscillatory behavior in his model and thought he discovered something exciting. Only to discover after couple of months that what he saw were due to inefficiency of the default solver of MATLAB which his student could not reproduce in scipy (which is basically odepack).
Stiff system requires much smaller step-size and therefore requires much longer time. ODE systems are not 'stiff' everywhere; and one can probably use much larger step-size in solution domain where stiffness is relatively small. The method LSODA does exactly that.
It quantifies stiffness automatically and switch the appropriate type of solver. It always assume that system is stiff. LSODA saves quite a lot of time.
We have been using bost GSL and Boost implementation of ODE solvers in MOOSE simulator. BOOST usually performs 2x better than GSL solvers. Recently I tried integrating the LSODA solver into our numerical engine. This library came out of this effort.
- Dilawar