Part VI
Verification
D. Nonlinear supports · Sliding friction as a bounded force
A straight member 1.0 mm long, with an axial stiffness of 100.0 N/mm, is fixed at one end. The other end can move only along the member’s axis. That end rests on a friction support with μ = 0.25 and a given normal reaction of 12.0 N, and is pushed along the axis by 8.0 N. The support starts in the sliding state. A sliding support should still resist, with a force of fixed size, rather than let go entirely. Where does the end come to rest?
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 |
|---|---|---|
| Node count | — | 2 |
| Member length | L | 1.0 mm |
| Axial stiffness | k | 100.0 N/mm |
| Applied axial force | F | 8.0 N |
| Friction coefficient | μ | 0.25 |
| Normal reaction (given) | N | 12.0 N |
| Friction limit | μN | 3.0 N |
| Maximum iterations | — | 4 |
| Active-set residual tolerance | — | 0.0 (count) |
| Initial state | — | sliding |
2.Method.
On the first iteration no solved displacement yet exists to show which way the support is sliding, so the degree of freedom is released and solved freely: 8.0 / 100.0 = 0.08 mm. This result ignores friction altogether, so the loop does not accept it as converged.
On the second iteration the direction of sliding is taken from that positive displacement, and a friction force of size μN is applied against it. The net push is 8.0 − 3.0 = 5.0 N, so the end moves 5.0 / 100.0 = 0.05 mm, and the support’s reaction is the bounded −3.0 N. The support stays sliding, nothing changes state, and the loop has converged.
The reference notes that the same result follows if the support is seeded as sticking instead. The tests for this case run only the sliding start. No friction history or load stepping is modelled.
3.Results.
| Quantity | Expected |
|---|---|
| Released free displacement (iteration 1) | 0.08 mm |
| Bounded sliding force (iteration 2) | −3.0 N |
| Final displacement | 0.05 mm |
| Final tangential reaction | −3.0 N |
| Iteration count | 2 |
| Final changed-support count | 0.0 |
| Final state | sliding |
| Converged | true |
The tests check that:
- The solve converges in exactly 2 iterations, ending with the support sliding and a changed-support count of 0.
- No friction force is applied on the first iteration. On the second, exactly one friction force is applied, and it is −3.0 N.
- The final displacement is 0.05 mm and the final reaction is −3.0 N, compared exactly.
- At the final iteration the out-of-balance force, moment and work at the free degrees of freedom are all exactly 0.0.
- The solve carries no notice that its tolerance is unset.
- Any change in displacement or reaction over the last iteration stays inside the recorded envelope.
What it shows. Compared with an independent 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 change in displacement 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.
Sliding friction is a force of known size, μN, that opposes the motion. Treating a sliding support as a full release would overstate the movement: 0.08 mm here, against 0.05 mm with the friction force in place.
4.Run it yourself.
cd projects/chirality-piping cargo test --manifest-path validation/benchmarks/nonlinear/Cargo.toml assembled_global_loop_seed_cases_converge_under_governed_policy cargo test --manifest-path validation/benchmarks/nonlinear/Cargo.toml assembled_convergence_observations_record_measured_fixture_values_only cargo test --manifest-path validation/benchmarks/nonlinear/Cargo.toml assembled_force_displacement_residual_observations_use_free_dof_force_moment_thresholds cargo test --manifest-path validation/benchmarks/nonlinear/Cargo.toml dec_067_transition_fixtures_witness_state_switched_and_bounded_outcomes
Hand calculation:
validation/hand_calcs/nonlinear/assembled_friction_bounded_sliding.md.
Test record, with the recorded run of 2026-07-10:
nl-assembled-friction-bounded-slide-original.md.