Models
PDEForge ships 41 models. Each one has its own page below, with the equation it solves, the operator-learning task it defines, its parameters and their ranges, a runnable snippet, and a figure generated by the package itself.
Most models run on the base installation. Eight need FEniCSx, which is marked
in the tables and covered in FEniCSx setup;
airfoil_euler_2d is finite-volume and pure NumPy.
Published benchmark setups ship as presets rather than as separate models, so the coefficients, the domain and the input measure travel together. See the preset list.
Diffusion and transport
Linear and near-linear baselines. Everything here is cheap, and the answers are predictable enough to make these the models you debug a pipeline against.
| Model | Task | Backend |
|---|---|---|
heat_1d |
\(u(x,0) \mapsto u(x,T)\) | spectral |
heat_2d |
\(u(x,y,0) \mapsto u(x,y,T)\) | spectral |
heat_3d |
\(u(\mathbf{x},0) \mapsto u(\mathbf{x},T)\) on the cube | spectral |
advection_1d |
exact translation; the sanity anchor | spectral |
darcy_2d |
\(\kappa \mapsto u\), periodic | spectral |



Waves and dispersion
Non-dissipative dynamics, where nothing is smoothed away and a low-pass bias in an operator shows up immediately.
| Model | Task | Backend |
|---|---|---|
wave_1d |
\(u(x,0) \mapsto u(x,T)\) | spectral |
wave_2d |
\(u(x,y,0) \mapsto u(x,y,T)\) | spectral |
heterogeneous_wave_2d |
medium \(c \mapsto\) wavefield | spectral |
helmholtz_2d |
source \(f \mapsto\) field, frequency domain | spectral |
kdv_1d |
solitons and undular bores; four presets | spectral |
schrodinger_1d |
complex field, norm conserved exactly | spectral |






Nonlinear advection and turbulence
Where the difficulty concentrates: shocks, filaments and chaos.
| Model | Task | Backend |
|---|---|---|
burgers_1d |
shock formation; six presets | spectral |
burgers_2d |
vector self-advection, no pressure | spectral |
ks_1d |
spatiotemporal chaos | spectral |
ns_vorticity_2d |
the canonical FNO benchmark | spectral / JAX |
kolmogorov_flow_2d |
forced, statistically steady turbulence | spectral / JAX |
shallow_water_2d |
three coupled fields, mass conserved exactly | spectral |






Pattern formation and phase separation
Models whose output structure is generated by the dynamics rather than supplied in the input.
| Model | Task | Backend |
|---|---|---|
allen_cahn_1d |
interfaces annihilating in pairs | spectral |
allen_cahn_2d |
curvature-driven coarsening | spectral |
allen_cahn_3d |
the same on the cube | spectral |
cahn_hilliard |
spinodal decomposition, 2D or 3D, mean conserved | spectral |
eggshell_droplets_3d |
coalescence vs Ostwald ripening, two droplets in a shell | spectral |
gray_scott_2d |
the Pearson parameter plane | spectral / JAX |
fitzhugh_nagumo_1d |
excitable pulses past a threshold | spectral |
fitzhugh_nagumo_2d |
broken fronts, spirals, and when they die | spectral |
lotka_volterra_2d |
predator-prey with diffusion | spectral |






Porous media and solids
Coefficient-to-solution maps, which is the shape most inverse problems take.
| Model | Task | Backend |
|---|---|---|
darcy_fno_2d |
the canonical benchmark, bit-exact | direct sparse |
darcy_fno_3d |
the same measure on the cube; no frozen dataset exists | direct / CG |
elasticity_2d |
modulus \(\mapsto\) displacement and stress | FEniCSx |
porous_darcy_fem |
flow through a grown microstructure | FEniCSx |



Viscous and compressible flow
Walls, obstacles and geometry. Everything here except stokes_2d and
airfoil_euler_2d needs FEniCSx.
| Model | Task | Backend |
|---|---|---|
stokes_2d |
force \(\mapsto\) velocity and pressure, creeping flow | spectral |
cylinder_flow_2d |
steady wake behind a cylinder | FEniCSx |
cylinder_flow_2d_unsteady |
the von Kármán vortex street, as a trajectory | FEniCSx |
cylinder_flow_2d_parameterized |
cylinder position as an input | FEniCSx |
cylinder_flow_2d_turbulent |
Re 2000 under a Smagorinsky closure | FEniCSx |
naca_flow_2d |
airfoil geometry \(\mapsto\) laminar flow, with \(C_l\) and \(C_d\) | FEniCSx |
rayleigh_benard_2d |
convection in a closed cavity, Nusselt-validated | FEniCSx |
airfoil_euler_2d |
transonic Euler with a shock, on a C-grid | finite volume |






Stochastic PDEs
Each sample carries several realisations of the same solve, so the target is a distribution. This is the part of the catalogue the calibration protocol exists for.
| Model | Task | Backend |
|---|---|---|
stochastic_heat_1d |
Gaussian, analytically known covariance | spectral |
stochastic_heat_2d |
the same on the square | spectral |
stochastic_burgers_1d |
spread concentrated at the fronts | spectral |
stochastic_allen_cahn_2d |
multimodal: realisations branch between wells | spectral |



Finding a model from code
from pdeforge import list_models, describe_model
list_models() # every registered name
print(describe_model("kdv_1d")) # parameters, ranges, field names, backend
Every figure on this page is package output, seeded and regenerable:
scripts/make_model_figures.py builds the per-model set and
scripts/make_gallery.py builds the gallery.