Piping Toolset
HomeCalculators › Analysis Sets: Multi-Code Piping Stress Comparison Calculator

Analysis Sets: Multi-Code Piping Stress Comparison Calculator

Runs one load case through up to four piping codes side by side — sustained and expansion stress against allowable for B31.1 and B31.3, hoop and longitudinal/combined against SMYS-based allowables for B31.4 and B31.8 — and reports every row's unity plus the single governing check in one table.

Method last updated (calculation changelog) · fixture-verified on every build — most recently 2026-07-30.

Takes one geometry (outside diameter, wall, section modulus) and one load case (pressure, moment ranges, SIFs) and runs it through the sustained and expansion screening checks of ASME B31.1 and B31.3, and the hoop and longitudinal/combined checks of the pipeline codes B31.4 and B31.8 — the per-code 'analysis set' concept, in one comparison table. Every allowable stress (Sc, Sh, SMYS) and every factor (stress-range factor f, design factor F, joint factor E, temperature derating T) is a user-supplied input; nothing is looked up from an internal code table. The output is a row per code check with stress, allowable and unity, the governing row across the whole set, and an overall ALL PASS / SOME EXCEED verdict.

Expansion loop between two anchors A pipe run between two anchors with a U-shaped expansion loop of height H and width W absorbing thermal growth delta L. anchor anchor ΔL/2 ΔL/2 W H
Expansion U-loop between anchors: thermal growth ΔL of the run is absorbed by loop legs of height H and width W — the guided-cantilever sizing solves the leg lengths for the allowable stress range.
Open this calculator → Download sample report

Method

Same geometry and load case evaluated by each selected code's own screening check, with allowables entered by the user rather than embedded:

hoop = P·Do / (2·t)

Mc = √(Mi² + Mo² + Mt²), imax = max(ii, io)

B31.1 SE = imax·Mc / Z vs SA = f·(1.25·Sc + 0.25·Sh)

B31.3 Sb = √((ii·Mi)² + (io·Mo)²) / Z, St = Mt / (2·Z), SE = √(Sb² + 4·St²) vs SA (same form as B31.1)

B31.4 hoop vs F·SMYS; longitudinal SL vs 0.75·F·SMYS

B31.8 hoop vs F·E·T·SMYS; combined (SL + SEB31.1) vs 0.90·T·SMYS

B31.1 and B31.3 sustained rows both compare the same user-supplied sustained longitudinal stress SL against the hot allowable Sh — the two codes diverge only in how they combine the expansion-case moments into SE. Defaults when not entered: f = 1.0, F = 0.72, E = 1.0, T = 1.0.

Inputs
codesCodes to include in the comparison — any subset of B31.1, B31.3, B31.4, B31.8
PInternal design pressurepsi
DoPipe outside diameterin
tWall thicknessin
ZSection modulusin³
Mi, Mo, MtIn-plane, out-plane and torsional moment rangesin·lbf
ii, ioIn-plane and out-plane stress intensification factors
Sc, ShCold and hot allowable stress — required if B31.1 or B31.3 is selectedpsi
SLSustained longitudinal stress from the weight + pressure casepsi
SMYSSpecified minimum yield strength — required if B31.4 or B31.8 is selectedpsi
fRange, designFactor, eJoint, tempDeratingStress-range factor f, pipeline design factor F, joint factor E, temperature derating T (defaults 1.0, 0.72, 1.0, 1.0)
Outputs
rowsOne row per code check: quantity, stress, allowable, unity
governingUnityHighest unity across the whole set
governingCode + quantity label of the governing row
verdictALL PASS or SOME EXCEED

Limitations — what this calculator is not

Worked example — fixture-verified

NPS 8 Sch 40 line (8.625 in OD × 0.322 in wall, Z = 16.81 in³) carrying 600 psi, evaluated against all four codes at once. Moment range resultants of 50,000 / 30,000 / 20,000 in·lbf (in-plane / out-plane / torsional) with SIFs ii = 2.27, io = 1.89; Sc = 20,000 psi, Sh = 17,300 psi; SL = 8,000 psi; SMYS = 35,000 psi with the default design factor F = 0.72.

Given
Do × t × Z8.625 × 0.322 × 16.81in / in / in³
Pressure P600psi
Mi / Mo / Mt50,000 / 30,000 / 20,000in·lbf
ii / io2.27 / 1.89
Sc / Sh20,000 / 17,300psi
SL8,000psi
SMYS35,000psi

Step by step

  1. Hoop stress: hoop = P·Do/(2·t) = 600·8.625/(2·0.322) = 5,175/0.644 = 8,035.71 psi — feeds both the B31.4 and B31.8 hoop checks.
  2. Resultant moment: Mc = √(50,000² + 30,000² + 20,000²) = √3,800,000,000 = 61,644.14 in·lbf.
  3. B31.1 expansion stress: imax = max(2.27, 1.89) = 2.27; SE = 2.27·61,644.14/16.81 = 8,324.34 psi.
  4. B31.1/B31.3 allowable: SA = f·(1.25·Sc + 0.25·Sh) = 1.0·(1.25·20,000 + 0.25·17,300) = 25,000 + 4,325 = 29,325 psi.
  5. B31.1: sustained unity = SL/Sh = 8,000/17,300 = 0.46243; expansion unity = SE/SA = 8,324.34/29,325 = 0.28387.
  6. B31.3 expansion stress: Sb = √((2.27·50,000)² + (1.89·30,000)²)/16.81 = √(113,500² + 56,700²)/16.81 = 7,547.56 psi; St = 20,000/(2·16.81) = 594.88 psi; SE = √(Sb² + 4·St²) = 7,640.76 psi.
  7. B31.3: sustained unity matches B31.1 at 0.46243 (same SL/Sh); expansion unity = 7,640.76/29,325 = 0.26055.
  8. B31.4: hoop unity = 8,035.71/(0.72·35,000) = 8,035.71/25,200 = 0.31888; longitudinal unity = SL/(0.75·0.72·35,000) = 8,000/18,900 = 0.42328.
  9. B31.8: hoop unity = 8,035.71/(0.72·1.0·1.0·35,000) = 0.31888 (E = T = 1.0 default); combined unity = (SL + SEB31.1)/(0.9·1.0·35,000) = (8,000 + 8,324.34)/31,500 = 16,324.34/31,500 = 0.51823.
  10. Governing row across all eight checks: B31.8 combined at 0.51823 — the highest unity in the set, still ≤ 1.0 → ALL PASS.
Result PASS
B31.1 sustained / expansion0.46243 / 0.28387unity
B31.3 sustained / expansion0.46243 / 0.26055unity
B31.4 hoop / longitudinal0.31888 / 0.42328unity
B31.8 hoop / combined0.31888 / 0.51823unity
Governing check (code / quantity)gas-pipeline combined row
Governing unity0.51823
VerdictALL PASS

B31.8's combined check governs here even though both pipeline hoop unities tie with B31.4's — the sustained-plus-expansion sum on the combined row is what pushes it above every other check in the set. The pipeline-only example below shows the same geometry at higher pressure, where B31.4 hoop alone flips the verdict.

Why you can trust these numbers: this exact case is fixture analysis-set.json — case “NPS8 sch40 all four codes, moderate loads -> governing B31.8 combined 0.518, ALL PASS” (tolerance 0.001) — in the calc-core release gate. It re-runs on every commit; a red fixture blocks deployment. See the validation methodology.

Worked example 2 — pipeline codes only, higher pressure fails hoop

Same NPS 8 Sch 40 geometry, moments and SIFs, screened as a pipeline (B31.4 and B31.8 only, Sc/Sh omitted since neither pipeline code needs them) at 2,200 psi instead of 600 psi.

Given
Do × t × Z8.625 × 0.322 × 16.81in / in / in³
Pressure P2,200psi
SMYS35,000psi
SL8,000psi

Step by step

  1. Hoop stress: hoop = P·Do/(2·t) = 2,200·8.625/0.644 = 18,975/0.644 = 29,464.29 psi.
  2. B31.4 hoop allowable: F·SMYS = 0.72·35,000 = 25,200 psi. Unity = 29,464.29/25,200 = 1.16922.
  3. 1.16922 > 1.0 — this row alone drives the set to SOME EXCEED, regardless of how the remaining B31.8 rows land.
Result FAIL
B31.4 hoop unity1.16922
VerdictSOME EXCEED

Same wall and geometry as Example 1 — only the pressure and the code subset changed, and hoop stress alone (not the more elaborate expansion or combined checks) is what fails the line. That's a useful diagnostic: when a pipeline unity fails on hoop specifically, the fix is thicker wall or lower MAOP, not a restraint or SIF revisit.

Fixture case “pipeline codes only at P=2200 -> hoop 29464.29 vs 25200, unity 1.16922 SOME EXCEED” (tolerance 0.001) — locked in the same release gate as the example above.

Sources & citations

Per the source & citation policy, allowable-stress and factor table values are user-supplied. Where a page does reproduce specific ASME data (the B16.5 ratings, the quick-reference tables), it does so under ASME authorization and states the source table and conditions inline.

FAQ

Why do B31.1 and B31.3 report the same sustained unity?

Both codes compare the same user-supplied sustained longitudinal stress SL against the hot allowable Sh — SL/Sh only differs between the two once the analyst enters a different SL for each code. They diverge on the expansion-stress combination rule: B31.1 uses a single resultant-moment SIF term, B31.3 splits bending and torsion before combining.

Can I mix process-piping codes and pipeline codes in one comparison?

Yes — select any subset of the four; the tool only requires the inputs the selected codes need (Sc/Sh for B31.1/B31.3, SMYS for B31.4/B31.8). Running all four on the same geometry is useful for a line that transitions from plant piping into a pipeline tie-in and needs both allowable bases checked side by side.

Is the governing unity a combined interaction check?

No — governing unity is simply the maximum of the independent per-code unities in the table, not a combined interaction ratio. Each code's check stands alone against its own allowable; nothing here sums stresses across codes.

Related calculators

Open this calculator → All calculators