Credits

People and third-party software who make Rodin possible.

Third-party Software

Boost

Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications. The libraries are licensed under the Boost Software License, which is the same license Rodin utilizes.

Eigen

Eigen is a C++ template library for linear algebra. Eigen provides a wide range of mathematical operations, data structures, and algorithms for performing linear algebra operations efficiently and with a syntax that resembles mathematical notation. It is especially useful for tasks such as matrix and vector operations, solving linear systems, eigenvalue problems, and more. Eigen is Free Software. Starting from the 3.1.1 version, it is licensed under the MPL2, which is a simple weak copyleft license. Common questions about the MPL2 are answered in the official MPL2 FAQ.

MMG

MMG is an open source software for bidimensional and tridimensional surface and volume remeshing. It is licensed under the LGPL and is originally based on [3] .

HDF5

HDF5 provides structured binary storage for Rodin mesh and field output, including the data referenced by XDMF visualization files.

termcolor

termcolor supplies terminal colors for contextual diagnostics in the Alert module.

PETSc

PETSc supplies the optional distributed algebra, linear and nonlinear solvers, and preconditioners used by Rodin's PETSc backend.

SuiteSparse

SuiteSparse supplies the optional UMFPACK, CHOLMOD, SPQR, and ParU sparse solver backends. Individual components have their own license terms.

MUMPS

MUMPS provides the optional multifrontal sparse direct solver backend.

Scotch

Scotch provides graph partitioning for mesh decomposition through the Scotch module.

METIS

METIS provides graph partitioning and fill-reducing orderings used by supported sparse solver dependencies.

MPI implementations

MPICH and Open MPI provide implementations of the Message Passing Interface used in Rodin's distributed builds and continuous integration. Rodin uses MPI through its distributed mesh, finite element, and solver paths.

OpenMP

OpenMP provides the compiler and runtime interface used by optional shared-memory parallel code paths.

pybind11

pybind11 connects C++ interfaces to Python in Rodin's optional Python bindings.

Development and documentation tools

GoogleTest

GoogleTest supplies the C++ testing framework used by Rodin's unit and regression tests.

Google Benchmark

Google Benchmark supplies the benchmark framework used to measure Rodin's numerical kernels and assembly operations.

Doxygen

Doxygen extracts API declarations and documentation from Rodin's C++ sources and documentation pages.

m.css

m.css renders the extracted documentation and supplies the site theme and documentation components.

Jinja

Jinja renders the HTML templates used by m.css and Rodin's documentation pages.

Pygments

Pygments provides syntax highlighting for code examples throughout the documentation.

LaTeX and dvisvgm

LaTeX typesets mathematical expressions, and dvisvgm converts the results into SVG images for the documentation.

References

See the full reference list to the scientific papers which have been used or provide sources of inspiration for the library.