Slab#

The OneWaySlab class models a one-way slab strip for flexure and shear analysis and design. It inherits all check and design logic from RectangularBeam, but uses bar diameter + spacing instead of bar count for longitudinal reinforcement — consistent with standard slab detailing practice.

Key Concepts#

  • Geometry: Defined by a strip width (typically 1 m or 100 cm) and slab height (thickness).

  • Material Properties: Requires a Concrete object and a SteelBar object.

  • Reinforcement: Specified by bar diameter and spacing, not bar count.

  • Checks and design: Performed through a Node object, exactly as for beams.

Usage#

Below is a step-by-step guide on how to use the OneWaySlab class.

1. Creating a Slab Object#

To define a slab strip, specify its geometry, material properties, and clear cover. The width represents the analysis strip width; height is the slab thickness.

from mento import Concrete_ACI_318_19, SteelBar, mm, cm, MPa
from mento.slab import OneWaySlab

# Define materials
concrete = Concrete_ACI_318_19(name="C25", f_c=25 * MPa)
steel = SteelBar(name="ADN 420", f_y=420 * MPa)

# Define slab strip geometry (1 m wide strip, 20 cm thick)
slab = OneWaySlab(label="S101", concrete=concrete, steel_bar=steel,
                  width=100 * cm, height=20 * cm, c_c=25 * mm)

2. Setting Reinforcement#

Slab reinforcement is defined by bar diameter and spacing. Each layer accepts a primary bar group (position 1) and an optional secondary bar group (position 3, second layer).

  • Bottom Longitudinal Reinforcement: Use set_slab_longitudinal_rebar_bot.

  • Top Longitudinal Reinforcement: Use set_slab_longitudinal_rebar_top.

  • Transverse Reinforcement: Use set_slab_transverse_rebar (shear stirrups, rarely needed for slabs).

Note

Unlike beams, slabs do not use positions 2 and 4 (inner bars per layer). All bars in a layer must have the same diameter. If no reinforcement is defined, Mento will assume no rebar and will not perform a check — provide at least a minimum rebar before running checks.

# Bottom reinforcement: Ø12 every 15 cm (layer 1)
slab.set_slab_longitudinal_rebar_bot(d_b1=12 * mm, s_b1=15 * cm)

# Top reinforcement: Ø10 every 20 cm (layer 1)
slab.set_slab_longitudinal_rebar_top(d_b1=10 * mm, s_b1=20 * cm)

# Two-layer bottom reinforcement: Ø12 @ 15 cm (layer 1) + Ø10 @ 20 cm (layer 2)
slab.set_slab_longitudinal_rebar_bot(d_b1=12 * mm, s_b1=15 * cm,
                                     d_b3=10 * mm, s_b3=20 * cm)

3. Assigning Forces to the Slab#

Forces are applied through a Node object, the same way as for beams. See the Node section for full details.

from mento import Forces, Node, kN, kNm

f1 = Forces(label="ELU 1", V_z=30 * kN, M_y=25 * kNm)

node = Node(section=slab, forces=[f1])

4. Performing Checks#

Once forces are assigned, call check_shear() and check_flexure() on the node. Mento applies the appropriate design code formulas based on the Concrete type.

# Shear check
node.check_shear()

# Flexure check
node.check_flexure()

See the Node section for details on interpreting the returned DataFrames.

5. Design the Section#

If no reinforcement is assigned, Mento can design flexure and shear automatically.

node.design_flexure()
node.design_shear()

6. Jupyter Notebook Results#

After performing checks or design, view formatted results with:

slab.results

The output includes longitudinal and shear reinforcement, applied forces, and DCR values. See the Node section for more information on detailed results and Word report generation.

7. Detailed Results#

See the Node section for how to display and save detailed per-load-case results using shear_results_detailed(), flexure_results_detailed(), and their _doc() variants.