Shear Wall#
The ShearWall class models a reinforced-concrete structural wall for in-plane shear analysis and design per ACI 318-19 Chapter 11.
Concrete shear capacity follows ACI 318-19 §11.5.4.6 with the aspect-ratio factor
α_c, instead of a longitudinal-reinforcement term.Reinforcement is distributed mesh in two orthogonal directions (
ρthorizontal,ρlvertical), placed on both faces of the wall (E.F. — each face), not stirrups.The minimum horizontal ratio is
ρt,min = 0.0025(§11.6.1). The minimum vertical ratio follows the §11.6.2 interpolationρl,min = max(0.0025, 0.0025 + 0.5·(2.5 − hw/lw)·(ρt,req − 0.0025)), withhw/lwclamped to[0.5, 2.5].
The same shear provisions serve both ACI 318-19 and CIRSOC 201-25; CIRSOC differs only in the reinforcing-bar catalogue used for design (it allows Ø6 mm for the transverse mesh and Ø10 mm minimum for the vertical mesh).
Note
The module covers shear check and design only. Flexure design
for shear walls is not implemented yet. Inherited flexure methods from
RectangularBeam are not validated for wall geometry and should not be
used.
Key Concepts#
Geometry:
thickness(t) — out-of-plane dimensionlength(lw) — in-plane length, resists in-plane shearheight(hw) — story / overall wall height, used for thehw / lwaspect ratio
Material Properties: requires a
Concreteobject (currentlyConcrete_ACI_318_19orConcrete_CIRSOC_201_25) and aSteelBarobject.Reinforcement: distributed bars defined by bar diameter + spacing in each direction.
Forces: a list of
Forcesobjects passed tocheck_shear()ordesign_shear()— either directly on the wall or through aNode.V_zis the in-plane lateral shear demand at the section.
Usage#
Below is a step-by-step guide on how to use the ShearWall class.
1. Creating a Shear Wall Object#
Specify the geometry, materials, and clear cover using the wall-friendly
constructor parameters thickness, length, and height.
from mento import ShearWall, Concrete_ACI_318_19, SteelBar
from mento import MPa, cm, mm, m
concrete = Concrete_ACI_318_19(name="H25", f_c=25 * MPa)
steel = SteelBar(name="ADN 420", f_y=420 * MPa)
wall = ShearWall(
label="W1",
concrete=concrete,
steel_bar=steel,
thickness=25 * cm, # t
length=4.0 * m, # lw (in-plane length)
height=3.5 * m, # hw (story height; hw/lw = 0.875)
c_c=20 * mm,
)
After construction, the dimensions are accessible as wall.thickness,
wall.length, and wall.height.
2. Setting the Distributed Reinforcement#
Use set_horizontal_rebar(d_b, s) for the horizontal (transverse) mesh that
resists in-plane shear, and set_vertical_rebar(d_b, s) for the vertical
(longitudinal) mesh. The mesh is placed on both faces of the wall (E.F. —
each face), so the reinforcement ratio counts both curtains:
ρ = 2 · Ab / (t × s).
# Ø12 @ 150 mm in both directions
wall.set_horizontal_rebar(d_b=12 * mm, s=150 * mm)
wall.set_vertical_rebar(d_b=12 * mm, s=150 * mm)
3. Performing the Shear Check#
Call check_shear() with a list of Forces — either directly on the wall
or through a Node. The returned DataFrame has one header row (units)
followed by one row per combination.
from mento import Forces, Node, kN
f1 = Forces(label="1.2D+1.0E", V_z=800 * kN)
f2 = Forces(label="0.9D+1.0E", V_z=1200 * kN)
# Directly on the wall ...
wall.check_shear([f1, f2])
# ... or via a Node (recommended — enables results / detailed reports)
node = Node(section=wall, forces=[f1, f2])
node.check()
node.results
Returned columns:
Column |
Meaning |
|---|---|
|
Minimum horizontal reinforcement ratio (0.0025) |
|
Required horizontal reinforcement ratio |
|
Provided horizontal reinforcement ratio |
|
Minimum vertical reinforcement ratio |
|
Provided vertical reinforcement ratio |
|
Demand shear |
|
Concrete shear strength (factored) |
|
Steel shear strength (factored) |
|
Total nominal shear strength (factored) |
|
Section-crushing limit (factored) |
|
Demand-to-capacity ratio |
4. Designing the Shear Reinforcement#
design() is fully automatic: it sizes both meshes against the
worst-case force combination, applies them to the wall, and returns the
re-evaluated check DataFrame.
result = wall.design([f1, f2])
# The wall now carries a designed mesh:
print(wall._d_b_h, wall._s_h) # horizontal (shear) bar + spacing
print(wall._d_b_v, wall._s_v) # vertical (minimum) bar + spacing
What it does:
Runs the check for every force and tracks the worst-case
ρt,req.Derives the worst-case
ρl,minfrom §11.6.2.Selects a bar diameter and spacing for the horizontal mesh (against
ρt,req) and the vertical mesh (againstρl,min).Applies both via
set_horizontal_rebar/set_vertical_rebarand re-runs the check.
Vertical mesh. Because for now mento does not check flexure, the vertical mesh is always sized to the §11.6.2 minimum — it is reported and plotted as “Minimum vertical rebar”.
Note
For CIRSOC 201-25, design automatically uses the CIRSOC bar
catalogue (Ø6 mm minimum transverse, Ø10 mm minimum vertical). No extra
configuration is needed — the design code is read from the Concrete
object.
5. Inspecting Intermediate Quantities#
After running a check, the relevant ACI 318-19 quantities are available as attributes on the wall:
Attribute |
Meaning |
|---|---|
|
Aspect ratio |
|
|
|
Gross shear area |
|
Nominal concrete shear strength |
|
Nominal steel shear strength |
|
Factored total shear strength |
|
Factored crushing-limit shear strength |
|
Demand-to-capacity ratio for shear |
|
Required horizontal reinforcement ratio |
|
Minimum vertical reinforcement ratio |
|
§11.7.3 horizontal spacing limit |
|
§11.7.3 vertical spacing limit |
|
Designed horizontal bar diameter / spacing |
|
Designed vertical bar diameter / spacing |
All reinforcement ratios (ρt, ρl) account for the mesh on both
faces — ρ = 2 · Ab / (t · s).
A worked example with full output is available in the Shear Wall ACI 318-19 example.