IS 456 reinforced-concrete design, from calculation to reviewable output.
An open-source Python library and visual workbench for bounded supported beam, torsion, column, slab, wall, staircase, deep-beam, flat-slab, and footing workflows under IS 456:2000.
Quick start · Product tour · Documentation · API reference · Contributing
Important
v0.24.0 is a normal software release of the audited supported scope. Support is case-qualified, not a claim of complete IS 456 coverage or professional design approval. Outputs require independent review by a qualified structural engineer before engineering or construction use. Broader library development and the one cumulative practicing-engineer review remain in progress. The exact release is available from PyPI and GitHub Releases; the current-release page links its append-only artifact and verification evidence.
StructLib connects calculation code to the work engineers and developers need around it: importing analysis data, running repeatable designs, inspecting the result, and producing usable deliverables.
| Surface | Best for | What it provides |
|---|---|---|
| Python package | Engineering scripts and notebooks | Typed functions, explicit units, structured results |
| CLI | Repeatable jobs and automation | Design → detail → BBS → DXF → report pipelines |
| FastAPI | Application integration | REST, WebSocket, and streaming workflows |
| React workbench | Visual review | CSV import, batch design, 3D inspection, dashboard, exports |
- Import beam data from ETABS, SAFE, STAAD, or a generic CSV.
- Design individual members or a complete batch through the same Python core.
- Review geometry, reinforcement, governing utilization, and clause-linked checks.
- Export BBS, DXF, HTML/PDF reports, summaries, and project quantities.
These are unedited captures from the bundled 153-beam, six-story visualization and member-batch fixture running against the local FastAPI backend. The fixture does not claim whole-building load generation, analysis, load-path reconciliation, or professional approval.
python3 -m pip install "structural-lib-is456==0.24.0"The package is installed as structural-lib-is456 and imported as
structural_lib.
0.24.0 is the current normal release, so ordinary package resolution selects
it. Here, normal means a final PEP 440 version rather than an alpha, beta, or
release-candidate version string; the project's development-maturity classifier
remains Beta until the separately stated pre-1.0 and engineering-review
boundaries are closed. Pin the exact version for reproducible work. See the
release status and policy before
selecting a build.
from structural_lib.design.is456 import beam
request = beam.load(
{
"identity": {"member_id": "B1", "story": "GF", "case_id": "ULS-1"},
"section": {
"span_mm": 5000.0,
"b_mm": 300.0,
"D_mm": 500.0,
"d_mm": 442.0,
},
"materials": {"fck_nmm2": 25.0, "fy_nmm2": 500.0},
"actions": {"mu_knm": 150.0, "vu_kn": 80.0, "tu_knm": 0.0},
"calculation_basis": {"d_dash_mm": 58.0, "asv_mm2": 100.0},
"source_provenance": "analysis-envelope:ULS-1",
}
)
result = beam.design(request)
print(result.engineering_status)
print(result.to_dict())The canonical facade above is recommended for new integrations. Existing scripts and first-time evaluations can use the retained compatibility facade for a compact design, detailing, and bar-bending-schedule journey:
from structural_lib import api
result = api.design_and_detail_beam_is456(
units="IS456", beam_id="B1", story="GF",
span_mm=5500, mu_knm=160, vu_kn=85, b_mm=300, D_mm=500,
)
print(result.summary())
bbs = api.compute_bbs(result)
print(f"BBS weight: {bbs.summary.total_weight_kg:.1f} kg")Identity names differ on two retained service functions:
design_and_detail_beam_is456() uses beam_id, while
design_beam_is456() uses case_id. Both routes require independent review;
neither result is professional or construction approval.
Parameter names carry their units—b_mm, mu_knm, fck_nmm2—so the API
boundary stays explicit.
Use the 13 family recipes for every
advertised construction journey, including exact enums, evidence fields,
structured errors, and valid PASS/FAIL/HOLD handling.
Optional capabilities:
pip install "structural-lib-is456[dxf]" # DXF export
pip install "structural-lib-is456[report,pdf]" # HTML/PDF reports
pip install "structural-lib-is456[render]" # DXF renderinggit clone https://github.com/Pravin-surawase/structural_engineering_lib.git
cd structural_engineering_lib
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e Python/
cd react_app && npm install && cd ..
./run.sh devThen open:
- React workbench: http://localhost:5173
- Interactive API docs: http://localhost:8000/docs
Choose Explore, load the bundled sample building, and open the Building Editor. See the product tour for the complete path.
The sample uses the strict CLI v1 input contract: every member supplies its identity, materials, actions, detailing dimensions, and either effective depth or a complete derivation basis. A blocked row prevents calculation of the whole file; diagnostics use stderr and result JSON remains machine-readable.
python3 -m structural_lib design Python/examples/sample_beam_design.csv -o results.json
python3 -m structural_lib detail results.json -o detailing.json
python3 -m structural_lib bbs results.json -o schedule.csv
python3 -m structural_lib dxf results.json -o drawings.dxf
python3 -m structural_lib report results.json --format=html -o report/For the bounded one-storey gravity workflow, start from the maintained open-hall example and review its explicit assumptions before changing it. The generated request contains no hidden engineering defaults.
python3 -m structural_lib gravity-v1 example > gravity-request.json
python3 -m structural_lib gravity-v1 gravity-request.json > gravity-result.jsonThe same request is available from Python with
structural_lib.get_gravity_workflow_example_request_v1() and through the
Building Gravity review page's Load maintained example action.
The project deliberately states its boundaries instead of hiding them behind a single “IS 456 compliant” label.
| Element | Supported-case focus | Important boundary |
|---|---|---|
| Beams | Rectangular flexure and shear in the primary combined route; bounded torsion, flanged, doubly reinforced, detailing, and serviceability utilities | Torsion is not added automatically to the primary combined route |
| Columns | Rectangular/square sections, symmetric two-face interaction, directional slenderness, minimum eccentricity, and bounded detailing checks | Circular/helical utilities do not constitute complete circular-column design |
| Isolated footings | Concentric square/rectangular sizing, flexure, one-way shear, punching shear, bearing, and dowel transfer | Eccentric and combined-footing systems are outside the current supported route |
| Solid slabs | Simply supported and coefficient-method continuous one-way strips; common oriented two-way beam/wall-supported panels with built-in bounded coefficient lookup/interpolation, strips, corner torsion, detailing, span/depth and ordinary one-way shear checks | Direct deflection, irregular/concentrated-load panels, automatic shear reinforcement, flat slabs and column-supported punching remain outside the supported route |
The auditable scope, source identities, unsafe cases, limitations, and release evidence are collected in the IS 456 evidence crosswalk.
- Design and detailing: supported beam, column, isolated-footing, and slab utilities
- Batch processing: lossless, accounted ETABS/SAFE/STAAD/Generic import into the strict beam project command
- Visual review: interactive React Three Fiber building and reinforcement views
- Engineering outputs: BBS CSV, DXF drawings, HTML/PDF reports, summaries, and BOQ
- Integration: declared Python, command-line, HTTP, WebSocket, and SSE surfaces
- Traceability: structured issues, explicit units, clause references, source identities, and bounded evidence
React 19 + R3F ── HTTP / WS / SSE ──▶ FastAPI ──▶ structural_lib
react_app/ fastapi_app/ Python/structural_lib/
The Python code follows a strict dependency direction:
Core types → IS 456 pure math → Services → UI / I/O
| Layer | Location | Responsibility |
|---|---|---|
| Core types | Python/structural_lib/core/ |
Shared types and constants; no IS 456 math |
| IS 456 code | Python/structural_lib/codes/is456/ |
Pure calculations with explicit units and no I/O |
| Services | Python/structural_lib/services/ |
Orchestration, adapters, pipelines, and exports |
| UI / I/O | react_app/, fastapi_app/ |
Human and application interfaces |
- CI covers Python 3.11 and 3.12 across Linux, Windows, and macOS.
- Golden vectors, contract checks, unsafe-case tests, artifact verification, protected-content gates, and an SBOM support the normal release evidence.
- Public APIs and outputs use explicit engineering units.
- Known exclusions are documented alongside supported cases.
- Passing software checks are evidence of implementation behavior, not a substitute for professional verification.
Start with the verification index, engineering-use checklist, and engineering disclaimer.
| Goal | Start here |
|---|---|
| Evaluate the project visually | Product tour |
| Use the Python package | Python quick start |
| Integrate the platform | Developer platform guide |
| Look up an API | Python API reference |
| Understand the architecture | Project overview |
| Verify supported evidence | Evidence crosswalk |
| Find all documentation | Documentation hub |
Questions, bug reports, feature proposals, and contributions are welcome.
- Ask a question
- Report a bug
- Request a feature
- Report a vulnerability privately
- Read the contribution guide
- Review the code of conduct
If this project supports your research, cite it using CITATION.cff.
The software is available under the MIT License. The additional engineering-use notice explains the responsibilities that remain with the qualified engineer and project authority.
Primary references include IS 456:2000, SP:16, and IS 13920:2016. Standards text is not redistributed by this repository.



