Home › Calculation Changelog — Versioned Record of Calculation Behavior
Calculation Changelog — Versioned Record of Calculation Behavior
Versioned record of every change to calculation behavior. Scope: packages/calc-core
(equations, limits, verdict logic, fixtures). UI-only changes are excluded — if a
number a calculator produces could change, it is recorded here.
Policy:
- Every entry names the affected module ids and the fixture files that lock the change.
- No calculation ships without a green fixture; "Verified" notes the derivation basis
(hand calculation, PVP Suite validation set, or published source-sheet example).
- The site's /trust/changelog page is
generated from this file at build time.
2026-07-21 — PiperFEA nozzle/shell FEA goes live
Scope note: this entry covers services/fea, outside this file's usual
packages/calc-core scope, because it is a calculation surface users can now run.
Added
fea.nozzle-shell— nozzle-to-shell finite element analysis (gmsh shell meshing + CalculiX), run on an isolated server-side worker rather than in the browser. Reports, per load case:Plvs 1.5(k)Smh,Qbvs 3(Smh),Pl+Pb+Qvs 3(Smavg), andPl+Pb+Q+Fvs Sa — plus a job report in the legacy FE/Pipe tabular layout with a 3D junction-stress plot.- Fatigue allowable
Saimplemented as the ASME VIII-2 Appendix 5 design fatigue curve selected by material class, with the E-ratio correction and the NB-3228.5-form Ke strain-concentration factor. The "B31" bound f·1.25(Sc+Sh) (f = 6N^-0.2, capped at 1.0) and the Markl bound 245000/N^0.2 are reported alongside it.
Verified
Saand the B31 bound reproduce the legacy NozzlePro / FE-Pipe reference reports **to the psi on all 35 golden fixtures** carrying a fatigue result — including the three cases where Ke > 1 drives the allowable well below the bare curve value.- Secondary stress (
Pl+Pb+Q) ratio agreement against the reference set: **19 of 24 runnable fixtures gated**, 15 within ±20% and 4 within ±35%. Fixtures outside those bands are tracked in the sweep, not gated, and geometry outside the validated envelope is refused at submission rather than answered with a number.
Limits
- v1 reports the surface-maximum von Mises within a junction-local window in place of a through-thickness linearized
Pl/Pl+Pb+Q— conservative, and with no membrane/bending split yet the same value appears on both sustained rows.
2026-07-19 — Thermal Flexibility line
Added
flexibility.expansion-loop— guided-cantilever expansion loop / Z / L leg sizing, metallic (k=1) and plastic (k=2) families. Fixtures:expansion-loop.json, 5 cases (published flow-sheet L/Z/U trio, CPVC arm, cold-contraction case).
Verified
- L/U/Z results reproduce the published coefficient rules 6.225·√(ΔL·D) and 4·√(ΔL·D) within 0.03%.
2026-07-14 — Pipe support spring selection
Added
supports.variable-spring-select— PT&P variable-spring catalog selection (mode: derived data). Fixtures:variable-spring-select.json.supports.compact-spring-select— compact-spring selection. Fixtures:compact-spring-select.json.
Verified
- Selection logic checked against published catalog load tables; catalog data remains mode-
derivedwith attribution.
2026-07-04 — BPE line expansion + Equipment/Non-Metallic ports + ASME authorization
Added
- BPE:
bpe.cip-velocity(SD-6.3.5.2.1),bpe.tube-weld-acceptance(MJ-8.4-1),bpe.pre-pren(App. F-3),bpe.ferrite-number(WRC-1992),bpe.ra-finish(SF-2.4.1-1),bpe.ep-passivation(App. H/E),bpe.polymer-thermal-expansion(PM-4.2.3). Fixtures: one file per module. - Equipment:
equipment.shell-nozzle-loads(WRC-107 / VIII-2 5.5 screen), ASME VIII-1vessel.ug27-shell,vessel.ug32-head,vessel.ug28-external(+UG-99),vessel.ug37-nozzle-area;aux.wrc-terms. - Non-Metallic:
nonmetallic.hdpe-n755,nonmetallic.frp-grp(NM-2 / ISO 14692 / BS 7159). - Auxiliary:
aux.app2-flange(Sec VIII App 2 loose-type),aux.asce-occasional.
Changed
- ASME authorization (2026-07-04) recorded: B31.1, B31.3, BPVC, and BPE may run
licensed_embeddedin the Code Data Service; BPE Part DT-4.1 fitting dimensions embedded, SD-3.1.2.2 dead-leg limit populated. All other standards stayuser_supplied.
Verified
- Seventeen calculators fixture-anchored to the PVP Suite validation set (112 checks); the exact inputs behind each PVP expected value were reverse-derived and locked as fixtures.
2026-07-03 — BPE toolset full-parity port
Added
bpe.unit-converter(App. U incl. Ra & slope units),bpe.dead-leg(SD-3.1.2.2 with small-branch advisory),bpe.slope-check+bpe.slope-report(SD-2.4.3 GSD + drainability classification),bpe.spray-flow(SD-3.9.2 device-type bands). Fixtures:bpe-unit-converter.json,dead-leg.json,slope-check.json,slope-report.json,spray-flow.json.
Verified
- Full-parity port of the standalone BPE toolset — case-for-case against the legacy
@bpe/calc-coreresults.
2026-07-03 — Phase 1 core
Added
- Piping:
piping.b313-wall-thickness,piping.b311-wall-thickness,pipeline.b31-wall-thickness,piping.b31-allowable-pressure,pipeline.b31-allowable-pressure,piping.leak-test-pressure,piping.bend-thickness,piping.miter-allowable-pressure,piping.branch-reinforcement. - Flexibility/stress:
piping.b31-sif(App. D closed forms),piping.displacement-stress,piping.sustained-stress,piping.fatigue-factor,pipeline.b31g. - Supports:
supports.spring-variability,supports.max-spring-rate; non-codenoncode.pipe-weight,noncode.pipe-section,noncode.thermal-growth,noncode.collapse-pressure,noncode.rolling-offset,noncode.interpolate. - Connections/Auxiliary:
connections.nozzle-load-check,connections.nema-sm23,connections.flange-equivalent-pressure,aux.wind-asce,aux.b31e-seismic,aux.pressure-thrust,aux.column-buckling. - Non-Metallic:
nonmetallic.hdpe-pressure-rating,nonmetallic.support-span.
Verified
- Hand-derived fixture per module (derivation recorded in each fixture's
description); stress-range and SIF modules cross-checked against the PVP Suite selftest values (e.g. SE = 11,770.588, SA = 29,325, elbow ii = 2.26557).