01 · DeclareGive a parameter bounds and it becomes a design variable
Give a dimension a minimum, a maximum and a unit and it becomes a design variable, the only kind a study may move. An inverted range, or a nominal value outside its own bounds, is refused when the variable is created; a zero-width range is refused with the fix named. Inside, everything is SI.
02 · SampleChoose a sampling plan, with a seed
Latin hypercube, Sobol' or full factorial, drawn in the normalised unit box. The seed is fixed by default, because a plan whose points change between runs is not a study. Ask for a Sobol' count that is not a power of two and the platform names both neighbours rather than rounding silently.
03 · RegenerateRebuild every variant from CAD, and make it prove it belongs
Each sample point is rebuilt by the B-rep CAD kernel in memory. The result must prove it is still a member of the family: every named face resolves to the number of faces it declared, and every face is claimed.
04 · MeshMesh each design on its own, from engineering intent
Every design gets its own mesh in an isolated meshing worker, sized from stated targets, a y⁺ and cells across a reference length, not mesher settings. Named faces become mesh markers by rule, and each is cross-checked by face area before anything is named.
05 · RunRun the campaign and keep every outcome
A solve becomes data only when its objective has stopped moving. A design that fails to build, mesh or solve is recorded with stage and reason; one that will not settle is left out, reason shown. Missing is never zero, and a resumed campaign re-solves nothing.
06 · ReadRead the space before you search it
The campaign opens in Results Analysis and History like any solver run. What it often shows first is the box itself: where the response is flat, where it is steep, and whether the best region is pressed against a bound you set. That is the moment to widen a range.