Start from the picture. A robot in a fluid feels a force, and in steady conditions that force is captured beautifully by a lumped coefficient: F ≈ ½ρ·C_d·A·|u|u for drag, a flat curve for thrust. This is not a shortcut to apologize for, it is the correct engineering choice for a control loop, because it is O(1) to evaluate and, in the regime it was fit for, accurate. The Bench's Gust tab proves the half first: in a steady approach the quasi-steady drag model already fits the resolved force to within a few percent. The coefficient model is not wrong; it is incomplete.
Where it becomes incomplete is the transient. Accelerate a body through fluid and two effects appear that no steady coefficient can hold. The first is ADDED MASS: to accelerate the body you must also accelerate the fluid around it, an inertial reaction proportional to dU/dt (the Morison term). The second is HISTORY: the wake laid down a moment ago still pushes on the body now, a memory integral over the whole past acceleration (the Basset term). The Gust tab fits these one at a time to the resolved force and the residual collapses, quasi-steady alone leaves ~94% of the force unexplained on the gust, adding the Morison term drops that to a few percent, and the history term halves it again. You are watching the resolved solver reconstruct the classical unsteady-force hierarchy from data. THIS is the deployment pattern: coefficients plus a learned residual, and the resolved solver is how the residual is made, measured, and trusted.
But you can only trust a solver you can check. Every panel of this Bench verifies itself in the page. The Lid Cavity runs a MAC pressure-projection solver and grades its own centerline against the Ghia (1982) reference table as it converges, the deviation number falls toward 0.004 while the velocity divergence stays pinned at machine zero, a physics receipt attached to the render. The Swimmer is self-propelled: an undulating filament with no prescribed forward velocity earns thrust from the fluid it pushes, and the exact ∂(distance)/∂(gait) is carried through the coupled fluid-structure loop, so it can learn to swim on real gradients, not sampled ones. And the physics audit is the trust layer made explicit: the field's own 2026 consensus is 'don't trust the surrogate, test the physics.' It builds two predictions with the SAME error against ground truth (one honest, one that cheats by injecting divergence or high-frequency noise) and reads the physics directly (the incompressibility residual, a spectral-roughness proxy) to flag the cheat that a mean-squared-error metric cannot see. A surrogate and its audit ship together.
The last view closes the loop to your world. Deployed robots do consume resolved fluids, not in the control loop, but as precomputed environment fields: urban wind for drone routing, currents for AUVs. The Wind Routing tab plans a minimum-time path through a divergence-free wind field and beats the naive straight line by riding tailwinds and dodging headwind pockets, an advantage that grows with the wind. Fluids to environment field to policy, the resolved solver feeds the plan. Everything here is one open Rust stack: verified against analytic and reference solutions, differentiable end to end, and compiled to the WebAssembly running in this tab. The same argument has a deformable twin, and it is worth seeing because the failure mode is the opposite one. With fluids the danger was a coefficient standing in for physics it could not represent. With a deformable the danger is an integrator that reports a beautiful, stable, completely wrong answer. Vertex Block Descent solves the variational form of implicit Euler by sweeping the vertices and taking a Newton step in each vertex's own three-by-three block, projecting that block to positive semi-definite first. The projection is the whole trick: a spring in compression contributes a negative transverse term, and stepping against it is what makes naive implicit solvers explode on buckling. Clamp that term at zero and you still have a descent direction. Measured on a twelve-link chain at a thirtieth of a second and a stiffness of a million, ONE sweep stays bounded while explicit Euler on the identical system reaches not-a-number. Now the part that matters. Stable is not accurate. At that same setting one sweep hangs the chain sixty per cent past its rest length. Four sweeps is fifteen per cent, sixteen is three, sixty-four is half a per cent. One sweep buys you boundedness and nothing else, and the accuracy has to be bought in sweeps. Which is the fluid lesson again in different clothes: a number that does not blow up is not the same as a number you can use.