VernaStruct
VernaStruct
Verification Manual
Manual index vernastruct.com

VC-06 — Tapered Date-Palm Trunk Column: Stability + Small-End Compression

Module: vernastruct.modules.columns.service.ColumnDesignService Code basis: NDS 2018 §3.7.1.5 (column stability factor C_P, sawn c = 0.8) and §3.7.2 (tapered round columns — representative diameter rule valid for all support conditions, plus the pure-compression check on the minimum section). Status: ✅ PASS — software matches hand calculation exactly after fixing a defect this case uncovered (see §5).


1. Problem statement

A tapered date-palm trunk column — the signature vernacular column of Najdi and Hejazi heritage construction. Palm trunks taper from base to top; NDS §3.7.2 handles this with an effective (representative) diameter for the stability check and a separate pure-compression check on the small end.

Input Symbol Value
Height H 3.50 m
Diameter, top (small end) d_top 200 mm
Diameter, base (large end) d_base 300 mm
Material Date Palm Trunk (E = 6.5 GPa, f_b = 6.0 MPa)
Reference compression Fc* 0.7 × f_b = 4.20 MPa (service convention)
End condition pinned–pinned (Ke = 1.0)
Axial service load P 6.0 t
Design state / damage New / None (k_d = 1.00)

Conventions: kN → tonne with 9.81 (columns module); sawn-timber c = 0.8.

2. Hand calculation

Effective diameter (NDS §3.7.2, general rule — all support conditions):

d_eff = d_min + (d_max − d_min)/3 = 200 + 100/3 = 233.3333 mm
A_eff = π d_eff²/4 = 0.0427606 m²

Slenderness and stability factor:

Le = Ke·H = 3.50 m ;  λ = Le/d_eff = 3.50/0.2333333 = 15.0000
FcE = 0.822 E / λ² = 0.822 × 6500 / 225 = 23.74667 MPa
r = FcE/Fc* = 23.74667/4.20 = 5.653968
CP = (1+r)/(2c) − √[ ((1+r)/(2c))² − r/c ]
   = 4.158730 − √(17.295037 − 7.067460) = 4.158730 − 3.198058 = 0.960672
Fc′ = Fc* × CP = 4.20 × 0.960672 = 4.034822 MPa

Note CP = 0.96, not 1.0, even though FcE ≫ Fc* — the NDS formula applies at all slenderness values (see §5).

Axial capacity (effective section):

P_cap = Fc′ × A_eff = 4.034822 MPa × 0.0427606 m² = 172.531 kN = 17.5873 t
util  = 6.0 / 17.5873 = 0.34116

Small-end pure-compression check (NDS §3.7.2):

A_min = π (0.200)²/4 = 0.0314159 m²
f_c   = 6.0 × 9.81 / 0.0314159 kN/m² = 1.87357 MPa
util  = 1.87357 / 4.20 = 0.44609   ← governs

3. Results comparison

Check Hand calc Software (ColumnDesignService) Match Pass?
Effective diameter 233.3333 mm 233.3333 mm ✅ exact
Slenderness λ 15.0000 15.0000 ✅ exact
Fc′ (with CP) 4.03482 MPa 4.03482 MPa ✅ exact (after fix, §5)
Axial capacity 17.5873 t 17.5873 t ✅ exact util 0.341 → PASS
Small-end stress 1.87357 MPa 1.87357 MPa ✅ exact util 0.446 → PASS
Governing utilization 0.44609 (small end) 0.44609 ✅ exact

The small end governs — exactly the failure mode field engineers know for palm-trunk columns (crushing at the slender top under the beam seat), and the reason a straight-column idealization at the base diameter would be unsafe.

4. Reproducing this check

from vernastruct.modules.columns.models import ColumnInput
from vernastruct.modules.columns.service import ColumnDesignService

result = ColumnDesignService().design(ColumnInput(
    height_m=3.50, is_tapered=True,
    diameter_top_mm=200, diameter_base_mm=300,
    material_id="date_palm_traditional", end_condition="pinned-pinned",
    axial_load_ton=6.0,
))
assert result.ok

Pinned as tests/test_verification_cases.py::test_vc06_tapered_palm_column.

5. Defect found and fixed by this verification case

The stability-factor implementation contained a shortcut: CP was set to 1.0 whenever FcE ≥ Fc*. The NDS §3.7.1.5 formula applies at all slenderness values and approaches 1.0 only asymptotically — for this stocky column the correct CP is 0.9607, so the shortcut overstated axial capacity by ~4% (unconservative). All pre-existing column tests were qualitative and could not catch it. Fixed 2026-07-09: the formula now always applies.

Verification-library score: 6 cases → 4 computational/reporting defects found and fixed (VC-03, VC-04, VC-05, VC-06).


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.