MaximaLabsOpen app

Mechanical Rating — ASME VIII-1 Vessels

Shell/head/nozzle wall thickness (UG-27/UG-32), UG-37 nozzle reinforcement, TEMA tube count + Connors fluid-elastic/vortex-shedding vibration screen, and (when supplied) UG-28 external-pressure wall, UG-22 wind bending, and a Basquin S-N fatigue screen — code-formula screening, not a full FEA.

mechanicalasmevessel
Concept

The MESH/hydraulics solve tells you the process duty and diameter; this turns that into a fabrication-grade mechanical rating for the pressure boundary — shell, heads, and nozzles per ASME BPVC Section VIII, Division 1 — plus the checks that decide whether a vessel is actually buildable and safe at that size: external-pressure (vacuum) collapse, wind/seismic bending on a tall column, tube cross-flow vibration and fluid-elastic instability for a shell-and-tube bundle, and an elastic fatigue screen. This is a code-formula screening rating, not a full FEA — it goes on a datasheet, not a stamped calc package.

The allowable stress, weld joint efficiency, and corrosion allowance are a single curated default (representative SA-516-70 carbon steel, spot-radiographed, 3 mm CA) rather than a material databank — there is no per-job material selector for the vessel rating today (the piping-stress panel below does have one).

The math
Show the governing equations
tshell=PRSE0.6P+CA(UG-27 cylindrical shell)t_{shell} = \frac{P\,R}{S\,E - 0.6\,P} + CA \quad \text{(UG-27 cylindrical shell)}
thead=PD2SE0.2P+CA(UG-32 2:1 ellipsoidal head)t_{head} = \frac{P\,D}{2\,S\,E - 0.2\,P} + CA \quad \text{(UG-32 2:1 ellipsoidal head)}
Areq=dtrF    A1+A2(UG-37 nozzle-opening reinforcement)A_{req} = d\,t_r\,F \;\le\; A_1 + A_2 \quad \text{(UG-37 nozzle-opening reinforcement)}
Default S = 138 MPa (~20 ksi), E = 0.85, CA = 3 mm. When A1 (excess shell metal) + A2 (excess nozzle-neck metal) fall short of the required area, a reinforcing pad is called out with its required area — the panel explains the shortfall from the same numbers it computed, never a guessed reason.
Execution

Where it actually lives

Open it from the right-hand rail's analysis cluster (the wrench icon, "Mechanical") on any vessel-like node, or from the top menu bar's Tools → "Mechanical / sizing datasheet..." — both open the same panel. With a node selected, Smart Link pulls that node's live converged operating pressure/temperature into the design inputs instead of typing them by hand. The row set adapts to the vessel category the node infers (exchanger: tube count, tubesheet, vibration; column: wind bending; everything: shell/head/nozzle thickness).

Supply external_pressure for a UG-28 vacuum wall, column_height for UG-22 wind bending, or cyclic_stress_amplitude_pa/design_cycles for the Basquin fatigue screen — each is additive and only appears in the datasheet when given.

import requests

r = requests.post(
    "https://maximalabs.io/api/analysis/mechanical-datasheet",
    json={
        "design_pressure": 1.1e6,       # Pa, 1.1x operating per typical practice
        "design_temperature": 420.0,    # K
        "shell_inner_diameter": 1.2,    # m
        "tube_length": 4.0,
        "external_pressure": 101325.0,  # optional: full-vacuum UG-28 check
    },
)
sheet = r.json()  # {tag, kind, standard, fidelity, fields}
print(sheet["fields"]["shell_thickness_mm"], sheet["fields"]["nozzle_pad_required"])

Synchronous, pure analysis (like the plot endpoints) — no ARQ job, no simulation id required; it's a standalone geometry+pressure calculation.

Execution

Failure / risk flags

nozzle_pad_requiredUG-37 available reinforcement area (shell + nozzle-neck excess metal) falls short of the required area — a pad of the reported deficit is needed.
vibration_at_riskVortex-shedding frequency lands within ~0.5-1.3x the tube's natural frequency — cross-flow resonance risk.
fei_unstableCross-flow velocity exceeds the Connors fluid-elastic critical velocity — add tube supports (more spans) to raise it.
fatigue_screening_passed = falseBasquin S-N cumulative damage fraction exceeds 1.0 at the design cycle count (this flag is inverted — true means it passed).