01 · ParameterisePut a lattice around the part, not a redraw
A free-form deformation lattice encloses the region you may change. Its control points are the design variables, bounded by a box you set. Planes can be frozen, and packaging rules (volume, thickness, clearance, curvature, planarity) become constraints with exact derivatives. For CAD-parametric families the variables are the CAD dimensions, set up in design exploration.
02 · Solve the flowOne converged flow solution and its objective
The incompressible RANS solve gives the field and the objective, here the surface pressure drop. Convergence is read, not assumed: the loop refuses to stand on an unconverged solve. The mesh it runs on should already have passed mesh verification.
03 · Solve the adjointInformation runs upstream, sensitivity lands on the wall
The discrete adjoint solves one linear system, the transpose of the flow Jacobian, and returns how the pressure loss responds to moving each wall node. The result is a sensitivity map: where to push out, where to pull in, where the wall hardly matters. Engineers often learn more from this map than from the final shape.
04 · Project and deformCarry the gradient through the mesh, then move it
The surface sensitivity is chained through the volume-mesh deformation onto the control points. That link is not optional: on an S-duct, the gradient taken without it was measured wrong and the gate caught it. Each new shape passes a realisation gate (box, volume, clearance, mesh validity) and a topology check before a solver sees it.
05 · Check, then stepThe gradient earns the right to steer
Before it drives a design, the gradient is checked against finite differences on two independent random directions, with a Taylor remainder sweep. A trust region sizes the step from how well predicted and measured reductions agreed. The result is a candidate until a fresh solve on its own deformed mesh verifies it.