Part VI
Verification
E. Algorithm and software checks · One-way re-engagement, single step
A one-way support can push but cannot pull. The support has been released. At the first iteration, its trial displacement is −0.02 mm toward the bearing side. Trial reaction is zero, as required for a released support. Should the support re-engage, and how is the change counted? This test classifies one trial state without solving a frame.
This page preserves a recorded benchmark and its expected values. The dated run below is not a new run of the current product.
These recorded transitions and free-degree residuals do not establish general equilibrium or convergence for other models.
This test classifies a supplied trial state without solving a frame. Its iteration inputs are local to that classification test.
Support state check. The recorded test exercises nonlinear support state or assembled-loop behavior in its benchmark crate. It does not exercise desktop authoring.
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 | — | 1 |
| Maximum iterations | — | 6 |
| Active-set residual tolerance | — | 0.0 (count) |
| Trial displacement | u | −0.02 mm |
| Trial reaction | R | 0.0 N |
| Prior state | — | inactive (released) |
2.Method.
A released support has zero reaction at its free degree of freedom. Trial displacement therefore determines whether it re-engages. Movement into the bearing side re-engages the support. This support carries positive reaction and bears against negative displacement. Trial displacement −0.02 mm is negative, so the support becomes active.
One support changes state. The active-set residual counts changed supports, so it is 1. The step is not yet converged.
3.Results.
| Quantity | Expected |
|---|---|
| Trial displacement | −0.02 mm |
| State change count | 1.0 |
| State after the step | active |
| Converged | false |
The case record describes these checks:
- The support’s new state is active, and it is the only support reported as changed.
- The changed-support count is exactly 1.0.
- 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. Compares final support states, the iteration count, and force balance. It does not compare movements or reactions 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.
A released support carries no load. Its reaction sign cannot cause re-engagement. Displacement shows whether the pipe has moved back onto the bearing side.
4.Recorded command.
This command belongs to the archived source at 462f66975d36cd10d5b8455193ada9517d28d353. Use a checkout of that exact revision. This edition did not run the command. The recorded result does not establish current product support.
git checkout --detach 462f66975d36cd10d5b8455193ada9517d28d353 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/active_set_one_way.md.
Test record, with the recorded run of 2026-07-10:
nl-active-one-way-original.md.