Module: vernastruct.analysis.seismic, vernastruct.analysis.lateral,
in-plane checks in modules.walls.service.
Code basis: ASCE 7-16 §11.4 (site class D coefficients), §12.8 (ELF),
§12.11.1 (out-of-plane wall force); R = 1.5 (ordinary plain masonry,
Table 12.2-1); SBC 902-2024 §705.2 (75% heritage reduction, applied by the
walls service); rigid-body overturning FS ≥ 1.5.
Status: ✅ PASS — software matches hand calculation exactly.
Single-storey adobe building: seismic base shear, its distribution to one bearing wall, that wall's in-plane shear and overturning checks, and the out-of-plane seismic wall force.
| Input | Symbol | Value |
|---|---|---|
| Mapped short-period acceleration | SS | 0.40 g |
| Mapped 1-s acceleration | S1 | 0.15 g |
| Site class | — | D |
| Response modification | R | 1.5 (unreinforced masonry) |
| Importance factor | Ie | 1.0 |
| Building seismic weight | W | 60 t |
| Building height | hn | 4.0 m (wall force applied at h = 3.0 m) |
| Wall under check | — | mud brick, L = 4.0 m, h = 3.0 m, t = 0.55 m |
| Σ length of parallel walls | ΣL | 8.0 m |
| Restoring weight (wall + roof share) | W_r | 20 t |
a) Design spectral parameters (site D, linear interpolation):
Fa = 1.6 + (0.40−0.25)/(0.50−0.25) × (1.4−1.6) = 1.48
Fv = 2.4 + (0.15−0.10)/(0.20−0.10) × (2.2−2.4) = 2.30
SDS = ⅔ × 1.48 × 0.40 = 0.394667
SD1 = ⅔ × 2.30 × 0.15 = 0.230000
b) ELF base shear:
Ta = 0.0488 × 4.0^0.75 = 0.13803 s
Cs = SDS/(R/Ie) = 0.394667/1.5 = 0.263111
cap : SD1/(Ta·R/Ie) = 0.230/0.207041 = 1.1109 (not governing)
floor: max(0.044·SDS, 0.01) = 0.01737 (not governing)
V = Cs·W = 0.263111 × 60 = 15.7867 t
c) Wall in-plane checks (walls service):
V_wall = V × L/ΣL = 15.7867 × 4/8 = 7.89333 t
§705.2 : × 0.75 (adobe heritage) = 5.92000 t design
V_cap = f_v,eff × L×t = 0.07 MPa × 2.2 m² = 154.0 kN = 15.6983 t
util = 5.92 / 15.6983 = 0.37711 → PASS
M_ot = 5.92 × 3.0 = 17.76 t·m ; M_r = 20 × 4.0/2 = 40.0 t·m
FS = 40.0/17.76 = 2.25225 ≥ 1.5 → PASS
Without the roof tied to the wall (restoring = self-weight 6.6 t only): FS = 13.2/17.76 = 0.743 → FAIL — the classic failure mode of un-tied adobe boxes, and why the recommendations engine points to ring beams.
d) Out-of-plane wall force (§12.11.1):
w_wall = ρ g t = 1000 × 9.81 × 0.55 = 5.3955 kPa
Fp = max(0.4·SDS·Ie, 0.1) × w_wall = 0.157867 × 5.3955 = 0.85177 kPa
| Quantity | Hand calc | Software | Match |
|---|---|---|---|
| SDS / SD1 | 0.394667 / 0.230000 | same | ✅ exact |
| Ta / Cs | 0.13803 s / 0.263111 | same | ✅ exact |
| Base shear V | 15.7867 t | 15.7867 t | ✅ exact |
| V_wall design (×0.75) | 5.92000 t | 5.92000 t | ✅ exact |
| In-plane shear D/C | 0.37711 | 0.37711 | ✅ exact |
| Overturning FS | 2.25225 | 2.25225 | ✅ exact |
| Fp out-of-plane | 0.85177 kPa | 0.85177 kPa | ✅ exact |
Documented limitations: single-storey ELF only (no vertical distribution, no response spectrum); base shear distributed to walls by length (no diaphragm-stiffness torsion); site class D coefficients only; rigid-body overturning without uplift/rocking mechanics.
from vernastruct.analysis.seismic import base_shear_elf
from vernastruct.analysis.lateral import distribute_base_shear_to_wall
from vernastruct.modules.walls.models import WallInput
from vernastruct.modules.walls.service import WallDesignService
bs = base_shear_elf(W=60.0, hn_m=4.0, SS=0.40, S1=0.15)
V_wall = distribute_base_shear_to_wall(bs.V, 4.0, 8.0)
r = WallDesignService().design(WallInput(
length_m=4.0, height_m=3.0, thickness_m=0.55, material_id="mud_brick",
axial_load_ton_per_m=0.5, moisture_protection_provided=True,
inplane_shear_ton=V_wall, restoring_weight_ton=20.0,
))
assert r.ok
Pinned as
tests/test_verification_cases.py::test_vc08_seismic_elf
(plus module tests in tests/test_lateral_analysis.py).
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.