VernaStruct
VernaStruct
Verification Manual
Manual index vernastruct.com

VC-05 — Round Timber Joist: Long-Term (Creep) Deflection, Wet Service

Module: vernastruct.analysis.timber.check_round_timber_beam Code basis: NDS allowable-stress format with wet-service factor C_M = 0.8 and long-term deflection amplification k_cr = 2.0 (NDS 3.5.2, unseasoned timber); limits L/360 (SLS) and L/240 (long-term). Status: ✅ PASS — software matches hand calculation exactly; one reporting-level defect found and fixed (see §5).


1. Problem statement

Companion case to VC-01, targeting the creep/long-term deflection path: a larger athel joist under a heavy traditional earth-roof load, in wet service (consistent with adobe construction moisture exposure), using unseasoned timber. With k_cr = 2.0 the long-term check must govern: its utilization is always 2·k_cr/3 = 4/3 times the SLS deflection utilization.

Input Symbol Value
Trunk diameter d 200 mm
Span L 3.50 m
Service UDL (earth roof) w 0.150 t/m
Material Athel (E = 7.5 GPa, f_b = 7.0 MPa, f_v = 0.9 MPa)
Load duration factor C_D 0.9
Moisture factor (wet service) C_M 0.8
Size factor C_F 1.0
Creep multiplier (unseasoned) k_cr 2.0
Deflection limits L/360 (SLS), L/240 (long-term)

Unit convention: 1 tonne-force = 9.80665 kN (core.units.TON_TO_KN).

2. Hand calculation

Section properties (solid circular, d = 0.200 m):

A = π d² / 4  = 3.141593e-2 m²
I = π d⁴ / 64 = 7.853982e-5 m⁴
Z = π d³ / 32 = 7.853982e-4 m³

Actions:

w = 0.150 × 9.80665 = 1.4710 kN/m
M = w L² / 8 = 1.4710 × 3.50² / 8 = 2.25246 kN·m = 0.2296875 t·m
V = w L / 2  = 1.4710 × 3.50 / 2  = 2.57425 kN    = 0.262500 t

Stresses vs wet-service allowables:

σ = M / Z = 2252.46 / 7.853982e-4 = 2.8679 MPa
f_b,adj = 7.0 × 0.9 × 0.8 × 1.0    = 5.04 MPa   → util 0.5690
τ = 4V / 3A = 4 × 2574.25 / (3 × 3.141593e-2) = 0.1093 MPa
f_v,adj = 0.9 × 0.8                = 0.72 MPa   → util 0.1517

Deflections:

δ_SLS = 5 w L⁴ / (384 E I)
      = 5 × 1470.9975 × 3.50⁴ / (384 × 7.5e9 × 7.853982e-5) = 4.8795 mm
limit_SLS = 3500 / 360 = 9.7222 mm                → util 0.5019

δ_LT  = k_cr × δ_SLS = 2.0 × 4.8795 = 9.7589 mm
limit_LT = 3500 / 240 = 14.5833 mm                → util 0.6692  ← governs

3. Results comparison

Check Hand calc Software Match Pass?
Moment M 0.2296875 t·m 0.2296875 t·m ✅ exact
Shear V 0.262500 t 0.262500 t ✅ exact
Bending stress σ 2.8679 MPa 2.8679 MPa ✅ exact ≤ 5.04 → PASS
Shear stress τ 0.1093 MPa 0.1093 MPa ✅ exact ≤ 0.72 → PASS
SLS deflection 4.8795 mm 4.8795 mm ✅ exact ≤ 9.7222 → PASS
Long-term deflection 9.7589 mm 9.7589 mm ✅ exact ≤ 14.5833 → PASS
Governing utilization 0.66918 (long-term) 0.66918 ✅ (after fix, §5)

Long-term deflection governs at 67% — the expected controlling limit state for unseasoned round timber under sustained heavy earth-roof loads, and the reason heritage timber assessments must not stop at the short-term check.

4. Reproducing this check

from vernastruct.core.sections import RoundTimberSection
from vernastruct.core.materials import TimberMaterial
from vernastruct.core.modifiers import TimberModifiers
from vernastruct.analysis.timber import check_round_timber_beam

athel = TimberMaterial(
    id="athel_traditional", display_name_en="Athel (Traditional Heritage)",
    display_name_ar="الأثل (تراثي معتمد)",
    E_GPa=7.5, rho_kg_m3=700.0, f_b_MPa=7.0, f_v_MPa=0.9,
)
result = check_round_timber_beam(
    section=RoundTimberSection(d_m=0.200), span_m=3.50, material=athel,
    w_service_ton_per_m=0.150,
    modifiers=TimberModifiers(CD=0.9, CM=0.8, CF=1.0, k_creep=2.0),
)
assert result.ok

Pinned as tests/test_verification_cases.py::test_vc05_timber_longterm_deflection.

5. Defect found and fixed by this verification case

All physical quantities matched the hand calculation exactly on first run. However, the reporting property TimberDesignCheck.utilization_max — used by the GUI results panel and the full-building PDF/Excel reports — omitted the long-term deflection ratio from its max(). Since util_LT / util_SLS = 2·k_cr/3, the long-term check governs whenever k_cr > 1.5 (i.e. the default k_cr = 2.0), so reports systematically understated the governing utilization (here: reported 0.569 bending instead of the true 0.669). The pass/fail flags were unaffected — ok always included the long-term check — making this a reporting defect, not a safety defect.

Fix (2026-07-09): utilization_max now includes delta_longterm_mm / limit_longterm_mm; all 74 tests pass.

Verification-library score so far: 5 cases → 2 computational unit bugs (VC-03, VC-04) + 1 reporting bug (VC-05) found and fixed.


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.