Geomi
|
Geomi is a C++
library to perform numerical integration of dynamical systems while preserving the underlying geometrical structures. Geomi implements a number of different integrators in several independent modules. It is header only and heavily relies on templates. Internal representation of mathematical objects make use of the Eigen C++ library, and non-linear systems solvers are based on the NOX package from the Trilinos project.
The main modules are:
RKMK
: Runge-Kutta Munthe-Kaas methodsVariational
: implements variational and Lie-variational methods for Lagrangian systems.The design concepts of Geomi are the following:
C++
and template classes is aimed towards efficiency and speed. Although some of the integrators could be faster if implemented for specific dynamical systems, we think that despite the tradeoff in flexibility over performance this implementation still compares pretty well (still has to be proven though...)In order for Geomi to compile and run, some dependencies have to be installed. Hints about the process are given for debian-based systems.
NOX is a package from the Trilinos project. To install Trilinos on debian, run
# apt-get install trilinos-all-dev trilinos-doc
or
$ cd ~ $ git clone https://github.com/trilinos/Trilinos $ cd Trilinos $ mkdir build/ ; cd build/ $ cp GEOMI_SRC_DIR/misc/do-configure . $ ./do-configure $ make # make install
Eigen is a C++ library for linear algebra. Information about its installation can be found on the official website. For debian users, there is a package available
# apt-get install libeigen3-dev libeigen3-doc
or, for the up-to-date version, the official GitHub
$ cd ~ $ git clone https://github.com/eigenteam/eigen-git-mirror $ cmake eigen-git-mirror # make install
If includes directives do not work when you compile, you probably need to create a link (you need to adapt depending on the actual installation directory)
# ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen
If you want to be able to compile the documentation, you need to install Doxygen
# apt-get install doxygen*
For the Variational
module, an example is given for the two-bodies problem, and another one for the rigid body problem illustrating the Lie variational integrators. Regarding the RKMK
module, a solution for the rigid body problem is given here.
An introduction on how to use the library can be found on this page.
Online documentation can be found here. It can also be build from the source by running $ make doxygen