Part VI
Verification
E. Algorithm and software checks · Zero reaction means lift-off
A lift-off support is in contact at the second iteration. The trial solution has moved the point 0.04 mm, and the support’s reaction has fallen to exactly 0.0 N. Is a support that carries nothing still in contact? This case fixes the answer at that boundary. It tests one classification step on its own, with no frame solve around it.
1.Inputs.
Illustrative values, taken from no standard and chosen so the arithmetic can be followed by hand. Most do not describe a real pipe; read them in any consistent set of units.
| Quantity | Symbol | Value |
|---|---|---|
| Iteration | — | 2 |
| Maximum iterations | — | 6 |
| Active-set residual tolerance | — | 0.0 (count) |
| Trial displacement | u | 0.04 mm |
| Trial reaction | R | 0.0 N |
| Prior state | — | active (in contact) |
2.Method.
In this case a zero trial reaction is treated as loss of contact, so the support releases. One support has changed state, so the active-set residual, which is the count of changed supports, is not zero and the step is not yet converged.
3.Results.
| Quantity | Expected |
|---|---|
| Trial reaction | 0.0 N |
| Trial displacement | 0.04 mm |
| State after the step | inactive (lifted off) |
| Converged | false |
The tests check that:
- The support’s new state is inactive, and it is the only support reported as changed.
- The step is reported as not converged, with a warning rather than a failure.
- Every input and expected value carries an explicit unit, and the case’s source note exists. This is a bookkeeping check, not a mechanics check.
What it shows. Checks the supports’ final states, the iteration count and the balance of forces. Movements and reactions are not compared with a hand calculation.
Path exercised. The benchmark calls the solver’s components directly: elements, loads, frame solver and stress recovery. It does not go through the program’s own model-to-solve path.
Agreement. No numerical tolerance band applies. The tests require the exact expected support state, changed-support count and convergence flag; nothing is compared within a margin. Long values are shown here to seven significant figures; the tests compare the full values in the record.
Exactly zero is the edge case for any sign test. The reference settles it one way, as loss of contact, and the case holds the solver to that choice so the boundary is not left to chance.
4.Run it yourself.
cd projects/chirality-piping cargo test --manifest-path validation/benchmarks/nonlinear/Cargo.toml fixtures_are_public_original_and_unit_aware cargo test --manifest-path validation/benchmarks/nonlinear/Cargo.toml active_set_gap_lift_off_and_friction_outcomes_are_deterministic
Hand calculation:
validation/hand_calcs/nonlinear/lift_off.md.
Test record, with the recorded run of 2026-07-10:
nl-lift-off-original.md.