High-order PDEs
High-order PDEs are exactly where nested autodiff falls apart and the closed-form tower wins. This guide shows how to build 4th- and 6th-order residuals.
The poly-Laplacian
The iterated Laplacian Δᵏ is one tower evaluation per order. It does not
nest autodiff, so it stays flat in k:
from omnibias.jax import neural_field_polylaplacian
lap = neural_field_polylaplacian(x, W, beta, c, b, "tanh", k=1) # Δ
bih = neural_field_polylaplacian(x, W, beta, c, b, "tanh", k=2) # Δ² (4th order)
tri = neural_field_polylaplacian(x, W, beta, c, b, "tanh", k=3) # Δ³ (6th order)
Worked residuals
| PDE | Order | Residual (schematic) |
|---|---|---|
| Biharmonic | 4 | Δ²u − f |
| Kuramoto–Sivashinsky | 4 | u_t + u·u_x + u_xx + u_xxxx |
| Cahn–Hilliard | 4 | u_t − Δ(u³ − u − γΔu) |
| Strain-gradient / plate | 4–6 | combinations of Δ², Δ³ |
omnibias-pinn ships several of these as ready-made residual modules:
from omnibias.pinn.torch import equations
r_bih = equations.Biharmonic()(model, coords)
r_ks = equations.KuramotoSivashinsky()(model, coords)
r_ch = equations.CahnHilliard(gamma=0.01)(model, coords)
Why the closed form is essential here
At Δ³ the closed form is roughly 480× faster than a nested
forward-Laplacian, which then OOMs at Δ⁴ while omnibias finishes in ~0.1 ms.
See Complexity.
Best practices
Tips for stable high-order training
- Use the smooth (Riccati) family — high orders require the full tower.
- Scale collocation sampling toward regions of large residual; high-order terms amplify under-resolved features.
- Track per-order residual contributions separately during debugging, not just the summed loss.
- Consider a structural cage when an invariant (e.g. conservation) can be enforced by construction.