← Blog
Technical2026-07-09

Energy as the universal judge

Prager-Synge pincers in human terms: two bounds squeeze the true answer and the gap is the error bar. Four energy families over 18 physics modes.

#physics-ml#fem#neural-surrogates#simulation#engineering-software

A neural network told me a plate would survive. I didn’t believe it, and I built a second, independent number to check whether it was lying.

That second number comes from a 1947 theorem, not from more training data.

Here’s the problem with trusting a surrogate model’s stress prediction: the network can be smooth, confident, and wrong, and nothing in its own output tells you which. You need something outside the model to check it against. For a while our answer was “ask MOOSE, the real FEM solver, to re-run it” — slow, but honest. Lately we’ve been building something faster that is still honest: a certificate that comes from physics itself, not from a second opinion.

The idea: two bounds, squeezing the truth

The Prager-Synge hypercircle theorem says that if you have an admissible displacement field (compatible, satisfies the boundary conditions) and a separately equilibrated stress field (satisfies force balance), then the true strain energy of the real solution sits between two numbers you can compute from those two fields. One bound from below, one from above. The gap between them is itself a rigorous upper bound on the energy-norm error, and it shrinks to zero exactly when you’ve found the true solution.

Think of it as pincers, not a guess. You don’t need to know the true answer to know how close you are to it — the two clamps tell you.

Not every physics gets the same clamp

We went through our physics registry — currently 18 modes — and asked, mode by mode, which kind of bound each one actually supports. It sorts into four honest families:

  • Minimisation problems (elasticity, steady heat, electrostatics, magnetostatics, diffusion, Darcy flow — roughly 8 of the 18 modes): these have a true minimum energy functional, so they get the full two-sided Prager-Synge pincers.
  • Incremental/history problems (plasticity, viscoelasticity, phase change, LPBF transients — roughly 4-5 modes): each time step is its own minimisation, so you get per-step bounds that accumulate over a rollout.
  • Residual/convection problems (Navier-Stokes, advection-transport): these have no minimum to bound, so the best honest answer is a coarser, one-sided upper bound.
  • Conservation/dynamics problems (waves, structural dynamics): energy here is conserved, not minimised, so a bound doesn’t apply at all — instead, energy drift becomes a watchdog that flags a rollout going unstable.

The rule underneath all of this: if a physics mode doesn’t have a proven family, the registry entry is None, and the system escalates to the real solver rather than dress up a number that isn’t a certificate. We would rather say “I don’t have a bound for this yet” than fake one.

The honest gap we found while building this

Doing this audit surfaced something we hadn’t caught: the “coupled” row — where two physics interact, like piezoelectricity or poroelasticity (Biot) — is currently empty. The design document (ADR-021) cites piezoelectric and Biot coupling as motivating examples for coupled bounds, but neither is actually implemented in our physics registry yet. We found that gap by trying to write down the honest answer, not by someone spotting it in review. It’s now a named, tracked hole rather than a silent one.

We also found a bug in a LayerNorm third-derivative computation during the same pass — the kind of thing that hides quietly inside a gradient chain until you go looking for it with a theorem that has zero tolerance for approximation.

The bet we haven’t won yet

Right now, computing a tight energy bound the slow-but-rigorous way still costs a real solve on the stress side. The interesting research bet — call it R20, and it is explicitly a bet, not a result — is to train the displacement head and a stress head as structural adversaries: one minimises the potential energy, the other maximises the complementary energy, both under an equilibrium constraint. If it works, the gap between them falls out of a single forward pass in milliseconds, not a solver call. The two heads would keep each other honest — the displacement head can’t “look good” unless the stress head, trained independently, confirms it. That gap would also work as a teacher-free training signal, since it is zero only at the true solution.

The hard constraint is that the stress head has to stay statically admissible — force balance can’t be relaxed. That’s the open risk. We haven’t cleared it. It’s a pilot, not a claim.

If it does work, it changes something structural about multi-physics too: coupled minimisation problems become minimisation of one shared free energy, which gives the coupling engine its stability from convexity — a mathematical guarantee — instead of from the empirically measured contraction rate we rely on today.

I’d rather ship a system that says “no certificate available, escalating” than one that fakes a number that looks like Prager-Synge but isn’t. That’s the whole point of building the judge before promising the verdict.

What would you want a “certificate” to guarantee before you’d trust a prediction over a solver?

Discuss NeuroCAD as a pilot or investment opportunity.

Working MVP/demo is available for qualified conversations.

Contact the Founder