Geomi
Geomi: Geometric Integration

Presentation

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:

The design concepts of Geomi are the following:

Installation

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

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 3

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

Doxygen

If you want to be able to compile the documentation, you need to install Doxygen

# apt-get install doxygen*

Examples

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.

Quick tutorial

An introduction on how to use the library can be found on this page.

Documentation

Online documentation can be found here. It can also be build from the source by running $ make doxygen