Part VI
Verification
B. Elements and loads · Generated seismic and wind loads
An insulated pipe, 0.2 m in outside diameter and full of liquid, spans 3.0 m. The user enters seismic factors of 0.3 along X and −0.2 along Z, and a wind pressure of 480.0 Pa with a shape factor of 0.7 acting along Y on this span. What uniform loads should the solver generate from these entries? Do the loads reach the span end nodes just as loads entered by hand would?
Every factor, including gravity, is a user entry. Nothing is defaulted.
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 |
|---|---|---|
| Outside diameter | Do | 0.2 m |
| Nominal wall thickness | tnom | 0.01 m |
| Mill tolerance | m | 0.00125 m |
| Material density | ρm | 7850.0 kg/m3 |
| Contents density | ρc | 800.0 kg/m3 |
| Insulation thickness | tins | 0.025 m |
| Insulation density | ρi | 120.0 kg/m3 |
| Gravitational acceleration (user entry) | g | 9.80665 m/s2 |
| Seismic factor, global X | — | 0.3 |
| Seismic factor, global Z | — | −0.2 |
| Wind pressure | p | 480.0 Pa |
| Wind shape factor | C | 0.7 |
| Wind direction | — | Global Y |
| Span length | L | 3.0 m |
2.Method.
The mass per metre is built from the pipe’s own geometry. The wall is thinned by the mill tolerance, and the metal, contents and insulation areas are each multiplied by their densities and added.
Each seismic load is that mass per metre times the user’s factor times the user’s gravity. The wind load is pressure times shape factor times the exposed diameter, which includes the insulation, and it applies only to the span the user has marked. Each uniform load is then split half to each end of the span.
3.Results.
| Quantity | Expected |
|---|---|
| Metal area | 5.257259 × 10−3 m2 |
| Contents area | 2.615867 × 10−2 m2 |
| Insulation area | 1.767146 × 10−2 m2 |
| Mass per length | 64.31699 kg/m |
| Seismic intensity, global X | 189.2203 N/m |
| Seismic intensity, global Z | −126.1468 N/m |
| Wind intensity, global Y | 84.0 N/m |
| Seismic end force, global X, each end | 283.8304 N |
| Wind end force, global Y, each end | 126.0 N |
The tests check that:
- Seismic generation gives two loads, along X and Z, with the expected intensities and no findings.
- Wind generation gives one load along Y with the expected intensity and no findings.
- The generated loads pass the solver’s equivalent-static check as three uniform element loads.
- Lumped to the span ends, the seismic X and wind Y forces at both nodes match the hand values.
- With no mass input, or no marked span, generation produces no loads and reports a finding instead.
What it shows. Checks the loads or boundary conditions prepared for the solver against a hand calculation. No system is solved.
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. Each computed value must match the reference within an absolute difference of 1.0 × 10−9 in the case’s own units; counts and structural outcomes must match exactly. Long values are shown here to seven significant figures; the tests compare the full values in the record.
Two diameters are at work. The seismic mass uses the wall thinned by the mill tolerance, while the wind sees the full outside of the insulation, 0.25 m rather than 0.2 m.
4.Run it yourself.
cd projects/chirality-piping cargo test --manifest-path validation/benchmarks/mechanics/Cargo.toml occloadgen_generation_matches_witness_intensities cargo test --manifest-path validation/benchmarks/mechanics/Cargo.toml occloadgen_generated_loads_pass_boundary_and_lump_to_end_nodes cargo test --manifest-path validation/benchmarks/mechanics/Cargo.toml occloadgen_generation_blocks_without_user_inputs_or_marked_spans
Hand calculation:
validation/hand_calcs/mechanics/tp_pmm_p3_occloadgen_equivalent_static.md.
Test record, with the recorded run of 2026-07-10:
mech-tp-pmm-p3-occloadgen-equivalent-static.md.