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:
- Installation and Setup — Install Rodin and set up your development environment
- First Steps with Rodin — Learn the basic Rodin classes (Mesh, P1, TrialFunction, TestFunction) and write your first program
- Your First Problem: Solving the Poisson Equation — Solve a complete PDE (the Poisson equation) step by step
- Understanding Core Concepts — Deeper dive into meshes, finite element spaces, operators, and variational formulations
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
- Connectivity — Topological incidence relations between polytopes of different dimensions
The finite element method
Mathematical foundations and their realization in Rodin:
- Ciarlet's definition of a finite element — Ciarlet's formal definition of a finite element: the triple
- Finite element spaces — Available finite element spaces (P0, P0g, P1, H1), vector-valued and complex-valued variants, and the GridFunction class
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:
- MPI: Distributed Computing — Distributed mesh partitioning, sharding, and reconciliation with Context::
MPI, Mesh<Context:: MPI>, and Sharder - PETSc: Parallel Solvers and Distributed Linear Algebra — PETSc-backed variational forms, distributed linear algebra, KSP/SNES solvers, and multi-field problems
Getting Help
- Check the GitHub repository for the latest code and issues
- Browse the examples and tutorials for common use cases
- Consult the notation reference for mathematical symbols used in the documentation