Geometric numerical integration : structure-preserving algorithms for ordinary differential equations - Hairer, Ernst (Springer Series in Computational Mathematics,)