SWBPIPE · The open manual
Part VI · VerificationVI–E26

Part VI

Verification

E. Algorithm and software checks  ·  Non-convergence at the iteration limit

A one-way support on a rotation has been released. At the fourth iteration, which is also the last one allowed, the trial rotation at its degree of freedom is 0.002 rad, towards the side it bears against. The support must re-engage, so the set of active supports is still changing when the iterations run out. The solver must not present this as a converged answer. What should it report instead?

Read with

The limit of four iterations is too low for real lines and is being raised (Status).

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.

QuantitySymbolValue
Iteration—4
Maximum iterations—4
Active-set residual tolerance—0.0 (count)
Trial rotationθ0.002 rad
Trial rotational reactionM0.0 N·mm
Prior state—inactive (released)

2.Method.

The support carries negative reactions and so bears against positive rotation. The trial rotation of 0.002 rad moves into it, so the support re-engages. One support changes state, and the active-set residual is 1.0, not zero.

This is iteration 4 of a maximum of 4, so no further iteration is possible. The expected outcome is not a set of numbers but the solver’s non-convergence diagnostic, reported as a failure.

3.Results.

Expected diagnostic outcome
QuantityExpected
Trial rotation0.002 rad
Iteration count4.0
Active-set residual1.0
Convergedfalse
Diagnosticone non-convergence failure: “did not converge after 4 iterations”
Report statussolve failed

The tests check that:

  • The step is reported as not converged, and the result is marked as blocked.
  • Exactly one diagnostic is returned: non-convergence, at failure severity.
  • The diagnostic message contains the words “did not converge after 4 iterations”.
  • The overall report status is “solve failed”. No success state is substituted.
  • For contrast, the single-step one-way re-engagement case, which is not at the limit, is reported as solved with warnings rather than failed.

What it shows. Checks that a failure is reported and that no result is put in its place.

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.

Expected behaviour. This is not a numerical comparison. The solver must stop at the cap of 4 iterations without converging and return a single non-convergence failure; no success result may be substituted. Long values are shown here to seven significant figures; the tests compare the full values in the record.

For the student

Running out of iterations means the solver has not found an answer. Handing back the last iterate as if it were one would hide a support that is still changing state. The right behaviour is to stop and say so.

4.Run it yourself.

cd projects/chirality-piping
cargo test --manifest-path validation/benchmarks/nonlinear/Cargo.toml nonconvergence_fixture_reports_failure_diagnostic
cargo test --manifest-path validation/benchmarks/nonlinear/Cargo.toml expected_reports_preserve_warning_and_failure_statuses

Hand calculation: validation/hand_calcs/nonlinear/unresolved_nonconvergence.md. Test record, with the recorded run of 2026-07-10: nl-nonconvergence-limit-original.md.

Contents · Part VI · The program: swbpipe.com · MIT licence