Skip to content
Ξ£.π•Š.
Go back

NumPDE

A C++ repository of ~100 algorithms for the simulation and optimization of partial differential equations, used in ETH Zurich's CSE curriculum.

C++Numerical MethodsPDEFinite ElementsTeaching

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.