We have worked for one year on a new version of odeint – a highly flexible library for solving ordinary differential equations. It was hidden in some branch of the boost sandbox. Today, we put this version into the github:
It is not compatible with the old version such that we call the library odeint v2. Some nice and new features are:
- Algebras and operations which can be adapted for nearly all container types. For example, a specialized algebra for thrust exists, such that you can use the power of modern graphics cards and CUDA for solving ODEs.
- A generic implementation of the Runge-Kutta solvers. Any Butcher tableau can now be used without any performance loss.
- Methods with dense output for example the Dopri5 solver.
- Methods for stiff ODEs.
Here is an article about template-meta-programming and numerical algorithms. It illustrates how one can construct an numerical algorithm during compile-time. The example for this technique is the family of explicit Runge-Kutta solvers for ordinary differential equation.
Sorry, it is only in German.
A few days ago, I played around with proto, a C++ library the for construction and evaluation of expression trees. I wanted to write a small application allowing me to write classical vector operations in a neat way like b+2*c+d*e. With proto this is possible with only a few lines of code. Surprisingly, it turned out that the run-time performance for large expressions was about 10 to 20 percent better than a naive implementation. Continue reading