Part VI
Verification
E. Algorithm and software checks · Three supports on three directions
A single frame member is fixed at its root. Its tip is pushed by 10.0 N along x, 1.0 N along y and 6.0 N along z. The three directions carry three kinds of support: a one-way support in x, a gap of 0.0002 mm in y, and a friction support in z with μ = 0.30 and a given normal reaction of 10.0 N. Can the solver change all three at once and settle?
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 |
|---|---|---|
| Tip axial force | Fx | 10.0 N |
| Tip transverse force | Fy | 1.0 N |
| Tip vertical force | Fz | 6.0 N |
| One-way support | — | Ux |
| Gap support | — | Uy |
| Friction support | — | Uz |
| Friction coefficient | μ | 0.30 |
| Normal reaction (given) | N | 10.0 N |
| Friction limit | μN | 3.0 N |
| Gap clearance | c | 0.0002 mm |
| Initial states | — | one-way active, gap open, friction sticking |
2.Method.
The friction limit is 0.30 × 10.0 = 3.0 N. The 6.0 N vertical force is more than that, so the friction support slides. In the same first iteration the one-way support releases and the gap closes: three changes. On the second iteration nothing changes, so the loop has converged.
The reference for this group records the expected support states, changed-support counts and final residuals. It does not work out displacements or reactions, so none are tabulated here.
3.Results.
| Quantity | Expected |
|---|---|
| Changed supports, iteration 1 | 3 |
| Final changed-support count | 0 |
| Iteration count | 2 |
| Free-DOF force residual | 0.0 N |
| Free-DOF moment residual | 0.0 N·mm |
| Final free-DOF work residual | 0.0 N·mm |
| Final one-way state | inactive (released) |
| Final gap state | active (closed) |
| Final friction state | sliding |
| Converged | true |
| Diagnostic | none |
The tests check that:
- The solve converges in exactly 2 iterations: 3 supports change state on the first iteration and none on the last.
- Final states match the reference: one-way released, gap closed, friction sliding. No diagnostics are raised.
- At the final iteration the out-of-balance force, moment and work at the free degrees of freedom are all exactly 0.0.
- The changes in displacement, rotation and reaction over the last iteration stay inside the recorded envelope for this group.
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. The loop counts as converged only when no support changes state from one iteration to the next: the changed-support count must reach exactly 0, with no relative or absolute allowance, within at most 4 iterations. At the final iteration the out-of-balance force, moment and work at the free degrees of freedom must be 0.0, and the changes in displacement, rotation and reaction over the last iteration must stay inside a recorded envelope. Long values are shown here to seven significant figures; the tests compare the full values in the record.
4.Run it yourself.
cd projects/chirality-piping cargo test --manifest-path validation/benchmarks/nonlinear/Cargo.toml multisupport_acceptance_inventory_uses_narrow_dec_046_policy
Hand calculation:
validation/hand_calcs/nonlinear/assembled_multi_support_three_dof_acceptance.md.
Test record, with the recorded run of 2026-07-10:
nl-assembled-multi-dof-three-support-accepted-original.md.