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:

  • Variational formulations in Rodin — Defining problems using bilinear forms, linear forms, and boundary conditions
  • Weak Formulations — Deriving weak formulations from strong-form PDEs (Poisson, elasticity)
  • Boundary Conditions — Dirichlet, Neumann, periodic, and mixed boundary conditions
  • Solvers — Direct solvers (SparseLU, UMFPack, CHOLMOD), iterative solvers (CG, GMRES, BiCGSTAB), and the Newton solver

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