NumPDE
A C++ repository of ~100 algorithms for the simulation and optimization of partial differential equations, used in ETH Zurich's CSE curriculum.
Overview
NumPDE is a comprehensive collection of numerical algorithms developed for the course Numerical Methods for Partial Differential Equations at ETH Zurichβs Computational Science and Engineering (CSE) department. The repository serves as both a teaching tool and a reference implementation for modern PDE discretization techniques.
Key Features
Broad Coverage of Physical Phenomena
The repository includes ~100 algorithms spanning a wide range of applications:
- Elliptic problems: Elastic membranes, electrostatics, diffusion
- Evolution problems: Heat equation, wave propagation
- Convection-diffusion: Upwinding, streamline diffusion, semi-Lagrangian methods
- Conservation laws: Traffic flow, shock waves, Riemann problems
- Fluid dynamics: Stokes equations, saddle-point problems
- Electromagnetism: Maxwellβs equations, Whitney forms
Numerical Methods
Implementations cover the core techniques taught in graduate-level numerical analysis:
- Finite Element Methods (FEM): Lagrangian and parametric elements, Galerkin discretization
- Finite Volume Methods (FVM): Conservative schemes, numerical fluxes, MUSCL
- Finite Difference Methods (FDM): Classical discretizations
- Timestepping: Runge-Kutta methods, implicit schemes for stiff problems
- Error analysis: A priori estimates, convergence verification
Educational Design
Each algorithm is structured for clarity and pedagogical value, with emphasis on:
- Clean, readable C++ implementations using LehrFEM++
- Modular design for easy modification and experimentation
- Accompanying lecture notes and practice problems
Resources
Background
This project was co-developed during my time as a PhD student and scientific assistant at ETH Zurich (2018-2022), in collaboration with Prof. Ralf Hiptmair and fellow teaching assistants. It remains the standard framework for the Numerical Methods for PDEs course, which I now teach as a lecturer starting in 2026.