General concepts

Conceptual guides to understanding Rodin's design and features.

Getting started with Rodin

New to Rodin? Start here. These guides take you from installation to solving your first PDE:

Prerequisites

Before starting, you should have:

  • Basic knowledge of C++17/C++20 (templates, lambdas, auto)
  • Some familiarity with calculus and linear algebra
  • Familiarity with finite element methods is helpful but not required — the guides introduce the necessary theory
  • A Linux or macOS system with a C++20 compatible compiler (GCC 12+)

Geometry

The Geometry module handles meshes, polytopes, connectivity, and geometric transformations:

  • Meshes — Creating, loading, and querying meshes
  • Polytopes — Geometric elements (triangles, tetrahedra, etc.) and the reference element $ \hat{K} $
  • Connectivity — Topological incidence relations between polytopes of different dimensions

The finite element method

Mathematical foundations and their realization in Rodin:

Weak formulations and variational problems

From continuous PDEs to discrete linear systems:

Application modules

Higher-level functionality built on the variational core:

  • Shape and topology optimization — Shape derivatives, Hilbertian regularization (H1a), level-set evolution, redistancing, and the shape optimization loop
  • Solid mechanics — Finite-strain kinematics, hyperelastic constitutive laws, the internal virtual work residual/tangent pair, and active contraction

I/O in Rodin

Reading and writing meshes, grid functions, and simulation data:

  • I/O in Rodin — Supported formats (MFEM, MEDIT, HDF5, XDMF), ParaView visualization, and time-series output

Parallel and Distributed Computing

Using MPI and PETSc for large-scale problems:

Getting Help