Shear Wall Summary#
The ShearWallSummary class lets you work with a list of shear walls and perform
checks, design, and report generation for all of them at once.
Creating Concrete and Steel Materials#
Define the concrete and steel materials to be used across all walls:
from mento import Concrete_ACI_318_19, SteelBar, MPa
conc = Concrete_ACI_318_19(name="H25", f_c=25 * MPa)
steel = SteelBar(name="ADN 420", f_y=420 * MPa)
Supported design codes: ACI 318-19 and CIRSOC 201-25.
Loading Input Data from Excel#
The wall dimensions, forces, and reinforcement details are typically loaded from an Excel input file. The file should have a specific format and units:
import pandas as pd
input_df = pd.read_excel('Mento-Input.xlsx', sheet_name='Walls', usecols='B:O', skiprows=4)
The Excel file should contain the following columns:
Level: Building level identifier (e.g., Level 1, Level 2).
Label: Wall identifier (e.g., M1, M2).
Comb.: Load combination label.
t: Wall thickness in cm.
lw: Wall in-plane length in m.
hw: Wall story height in m.
cc: Clear cover in mm.
Nx: Axial force in kN.
Vz: Shear force in kN.
My: Moment in kNm.
dbh: Horizontal (transverse) rebar diameter in mm.
sh: Horizontal rebar spacing in cm.
dbv: Vertical rebar diameter in mm.
sv: Vertical rebar spacing in cm.
Grouping Logic#
Multiple rows with the same (Level, Label) combination represent different load combinations for the same wall. The summary groups them automatically: one wall object is created per unique (Level, Label) pair, and all force rows are attached to it.
All rows in a group must have identical geometry (t, lw, hw, cc). A ValueError
is raised if geometry differs within a group.
For a quick test you can build the DataFrame manually:
data = {
"Level": ["", "Level 1", "Level 1", "Level 1", "Level 2", "Level 2"],
"Label": ["", "M1", "M1", "M1", "M1", "M1"],
"Comb.": ["", "ELU 1", "ELU 2", "ELU 3", "ELU 1", "ELU 2"],
"t": ["cm", 20, 20, 20, 20, 20],
"lw": ["m", 3.0, 3.0, 3.0, 3.0, 3.0],
"hw": ["m", 3.0, 3.0, 3.0, 3.0, 3.0],
"cc": ["mm", 25, 25, 25, 25, 25],
"Nx": ["kN", 0, 0, -301, -150, 55.5],
"Vz": ["kN", 264, 138, 152, 32.3, 163],
"My": ["kNm", -172, -90, -234, 143, -278],
"dbh": ["mm", 8, 8, 8, 8, 8],
"sh": ["cm", 20, 20, 20, 20, 20],
"dbv": ["mm", 12, 12, 12, 12, 12],
"sv": ["cm", 15, 15, 15, 15, 15],
}
input_df = pd.DataFrame(data)
Creating the ShearWallSummary Object#
Once the input data is ready, create a ShearWallSummary object:
from mento import ShearWallSummary
wall_summary = ShearWallSummary(concrete=conc, steel_bar=steel, wall_list=input_df)
To verify that units were applied correctly, inspect the data attribute:
wall_summary.data
The number of unique walls (nodes) and their keys can be inspected:
len(wall_summary.nodes) # Number of unique walls
wall_summary.wall_keys # List of (Level, Label) tuples
Checking Wall Capacity#
Use check() to get a summary table with DCR (Demand-Capacity Ratio) values for
all walls. The worst-case load combination is reported for each wall:
wall_summary.check()
The result is a DataFrame with columns: Level, Label, t, lw, hw, horizontal rebar, vertical rebar, reinforcement ratios, worst-case Vu, capacity, DCR, and a pass/fail status (✅ / ❌).
Note
All walls must have rebar assigned before calling check(). If any wall has
no rebar (dbh/sh/dbv/sv all zero), a ValueError is raised with a suggestion
to either run design() first or provide rebar in the input.
Viewing Detailed Results#
For a full breakdown per wall (all load combinations) use shear_results().
It accepts an optional index (1-based) to retrieve results for a single wall:
# All walls — all load combinations
wall_summary.shear_results()
# Single wall (1-based index)
wall_summary.shear_results(index=2)
For step-by-step detail of a specific wall you can also access the node directly:
wall_summary.nodes[0].shear_results_detailed()
Designing Reinforcement#
design() runs automatic shear design for every wall and returns a
DataFrame with the filled rebar columns (dbh, sh, dbv, sv):
designed_df = wall_summary.design()
The design selects horizontal and vertical mesh for the worst-case load combination across all forces assigned to each wall.
Exporting and Importing a Design#
After running design(), save the result to Excel so it can be reviewed or edited:
wall_summary.export_design("WallDesign.xlsx")
To reload an edited file and rebuild the summary with the new reinforcement:
wall_summary.import_design("WallDesign.xlsx")
Exporting Results to Excel#
The DataFrames returned by check() and shear_results() can be written to
Excel directly:
wall_summary.check().to_excel("wall_results.xlsx", index=False)
Detailed Word Report#
results_detailed_doc() generates a Word document (.docx) that contains:
Full shear detail for one selected wall (materials, geometry, forces, limit checks, capacity).
Summary tables (wall data, shear results, DCR check) for all walls.
The document is saved to the current working directory with the name
Shear_Wall_Summary_{design_code}.docx.
# Detailed report with wall 1 as the reference (default)
wall_summary.results_detailed_doc()
# Use wall 3 as the reference
wall_summary.results_detailed_doc(index=3)
The index parameter is 1-based and must be within the range of walls in the
summary. An IndexError is raised for out-of-range values.