Module: vernastruct.analysis.steel.check_steel_beam_lrfd
Code basis: AISC 360 LRFD / SBC 306 — compact section, no lateral-torsional buckling
(assumes continuous lateral restraint by the roof deck); web shear area simplified as 0.55 × A.
Status: ✅ PASS — software matches hand calculation exactly.
A simply-supported IPE200 steel main beam (S355) carries a traditional roof build-up over a tributary width, plus its own self-weight.
| Input | Symbol | Value |
|---|---|---|
| Section | — | IPE200 |
| Cross-section area | A | 28.5 cm² = 2.85e-3 m² |
| Moment of inertia | Ix | 1943 cm⁴ = 1.943e-5 m⁴ |
| Elastic section modulus | Wx | 194.3 cm³ = 1.943e-4 m³ |
| Linear mass | — | 22.4 kg/m |
| Span | L | 5.00 m |
| Dead load (area) | D | 0.20 t/m² |
| Live load (area) | L | 0.15 t/m² |
| Tributary width | s | 1.50 m |
| Yield strength | Fy | 355 MPa (S355) |
| Modulus of elasticity | E | 200 GPa |
| Resistance factors | φ_b, φ_v | 0.90, 0.90 |
| Load combination (ULS) | — | 1.2D + 1.6L |
| Deflection limit (SLS, total service load) | — | L / 360 |
Unit convention: 1 tonne-force = 9.80665 kN (matches core.units.TON_TO_KN).
Line loads:
sw = 22.4 / 1000 = 0.02240 t/m
w_service = (D + L) s + sw = (0.20 + 0.15)(1.50) + 0.02240
= 0.54740 t/m = 5.36816 kN/m
wu = (1.2D + 1.6L) s + 1.2 sw
= (1.2×0.20 + 1.6×0.15)(1.50) + 1.2×0.02240
= 0.72000 + 0.02688 = 0.74688 t/m = 7.32439 kN/m
Factored actions (simply-supported beam, UDL):
Mu = wu L² / 8 = 7.32439 × 5.00² / 8 = 22.8887 kN·m = 2.33400 t·m
Vu = wu L / 2 = 7.32439 × 5.00 / 2 = 18.3110 kN = 1.86720 t
LRFD capacities:
φMn = φ_b Fy Wx = 0.90 × 355e6 × 1.943e-4 = 62 078.85 N·m = 62.0789 kN·m
Aw = 0.55 A = 0.55 × 2.85e-3 = 1.5675e-3 m²
φVn = φ_v (0.6 Fy) Aw = 0.90 × 0.6 × 355e6 × 1.5675e-3
= 300 489.75 N = 300.490 kN
Deflection (unfactored service load):
δ = 5 w L⁴ / (384 E I)
= 5 × 5368.16 N/m × 5.00⁴ / (384 × 200e9 Pa × 1.943e-5 m⁴)
= 11.2419 mm
limit = L / 360 = 5000 mm / 360 = 13.8889 mm
Utilizations:
bending : 22.8887 / 62.0789 = 0.36871
shear : 18.3110 / 300.490 = 0.06094
deflection : 11.2419 / 13.8889 = 0.80942 ← governs
| Check | Hand calc | Software (check_steel_beam_lrfd) |
Match | Pass? |
|---|---|---|---|---|
| Service line load w | 0.54740 t/m | 0.54740 t/m | ✅ exact | — |
| Factored line load wu | 0.74688 t/m | 0.74688 t/m | ✅ exact | — |
| Factored moment Mu | 2.33400 t·m | 2.33400 t·m | ✅ exact | ≤ φMn → PASS |
| Factored shear Vu | 1.86720 t | 1.86720 t | ✅ exact | ≤ φVn → PASS |
| Moment capacity φMn | 62.0789 kN·m | 62.0789 kN·m | ✅ exact | — |
| Shear capacity φVn | 300.490 kN | 300.490 kN | ✅ exact | — |
| SLS deflection δ | 11.2419 mm | 11.2419 mm | ✅ exact | ≤ 13.8889 → PASS |
All three limit-state checks pass. Deflection governs at 81% utilization — the expected behaviour for slender IPE sections at L/360, and a useful sanity check that serviceability, not strength, controls this configuration.
Documented limitation: the module assumes a compact, laterally restrained section — no lateral-torsional buckling check (roadmap task 1.5) and no web-slenderness classification. The report output states this assumption.
from vernastruct.core.sections import SteelSection
from vernastruct.analysis.steel import check_steel_beam_lrfd
ipe200 = SteelSection(
id="IPE200", family="IPE",
display_name_en="IPE200", display_name_ar="IPE200",
A=0.00285, Ix=1.943e-5, Wx=1.943e-4,
h_mm=200, b_mm=100, mass_kg_m=22.4,
)
result = check_steel_beam_lrfd(
section=ipe200,
span_m=5.0,
D_ton_per_m2=0.20,
L_ton_per_m2=0.15,
tributary_width_m=1.5,
Fy_MPa=355.0,
)
assert result.ok
This exact case is pinned as an automated regression test in
tests/test_verification_cases.py::test_vc02_steel_lrfd_beam —
if any future code change alters these numbers, the test suite will fail.
Every case in this manual is pinned as an automated regression test that runs on every build — no future change can silently break a verified result. © 2026 Hesham Salama.