Rodin

Modern C++20 finite element method and shape optimization framework.

What is Rodin?

Rodin is a lightweight and modular finite element framework which provides many of the associated functionalities that are needed when implementing shape and topology optimization algorithms. These functionalities range from refining and remeshing the underlying shape, to providing elegant mechanisms to specify and solve variational problems.

It is named after the French sculptor Auguste Rodin, considered the founder of modern sculpture.

Download and build

git clone --recursive https://github.com/carlos-brito-pacheco/rodin
cd rodin
mkdir build && cd build
cmake ..
make -j4

How does Rodin work?

To provide many of the functionalities, Rodin utilizes many low-level libraries such as:

Aside from wrapping most of these tools into uniform and well documented interfaces, Rodin also builds upon many of the already existing functionality to provide common features without the need to reimplement these yourself.

Philosophy behind Rodin

From its inception, Rodin was built with a "batteries included, but screws not glued in" philosophy. We think that code should be well documented, readable, and stick very close to the mathematical notation it represents.

Development Status

The library is currently in very active and early development! Currently, some interfaces are likely to change. However, a lot of the functionality is already implemented with various extension points. Furthermore, there is a lot of code lacking documentation. Hence, contributors are always welcome! Currently it is mantained (and primarily used) by Carlos Brito.