structural-lib-is456
IS 456 RC Beam Design Library (Python package).
Version: 0.23.0 (Alpha development preview)
Status:
⚠️ Development Preview: APIs may change until v1.0. For reproducible results, pin to a release tag.
Supported-case boundary: this package implements selected IS 456 workflows, not the whole standard. Every output requires independent verification and qualified structural-engineering review. Use official standards as the authoritative source.
New in v0.23.0
- Security hardening: 14 cross-field plausibility validators, error sanitization
- Code quality:
check_code()andshow_versions()diagnostics - Column API: Full column design pipeline (axial, uniaxial, biaxial, slender, detailing)
- OpenAPI freeze: Baseline drift detection in CI
Install
pip install structural-lib-is456 # from PyPI
pip install "structural-lib-is456[dxf]" # with DXF export support
pip install structural-lib-is456==0.23.0 # pin this release exactly
Requires Python 3.11+. On Python 3.9–3.10, pip installs the older v0.16.x (beam-only, no column/footing).
If You Want To…
Design a Beam (IS 456 flexure + shear)
from structural_lib import design_beam_is456
result = design_beam_is456(
units="IS456", b_mm=300, D_mm=500, d_mm=450,
fck_nmm2=25, fy_nmm2=500,
mu_knm=150, vu_kn=100,
)
print(f"Ast = {result.flexure.Ast_required:.0f} mm²")
print(f"Safe? {result.flexure.is_safe}")
Get Detailing (bar sizes, stirrups, cut lengths)
from structural_lib import build_detailing_input, compute_detailing
detailing_input = build_detailing_input(
result, beam_id="B1", b_mm=300, D_mm=500, d_mm=450,
span_mm=6000, cover_mm=30, fck_nmm2=25, fy_nmm2=500,
)
detailed = compute_detailing(detailing_input)
for beam in detailed:
print(f"{beam.beam_id}: {len(beam.top_bars)} top, {len(beam.bottom_bars)} bottom zones")
Generate a Bar Bending Schedule (BBS)
from structural_lib import compute_bbs
bbs = compute_bbs(detailed, project_name="My Project")
print(f"Total weight: {bbs.summary.total_weight_kg:.1f} kg")
for item in bbs.items:
print(f" {item.bar_mark}: ø{item.diameter_mm:.0f} × {item.no_of_bars} nos")
Export DXF Drawings
from structural_lib import compute_dxf
output_path = compute_dxf(detailed, "beam.dxf") # returns Path
print(f"DXF saved to {output_path}")
Requires the
dxfextra:pip install "structural-lib-is456[dxf]"
Generate an HTML Report
from structural_lib import compute_report
html = compute_report(detailing_input, format="html")
with open("report.html", "w") as f:
f.write(html)
Batch Design from CSV
from structural_lib.services.adapters import GenericCSVAdapter
from structural_lib import design_beam_is456
adapter = GenericCSVAdapter()
geometry_list, forces_list = adapter.load_combined("beams.csv")
# Pair geometry with forces and design each beam
for geom, forces in zip(geometry_list, forces_list):
result = design_beam_is456(
units="IS456", b_mm=geom.b_mm, D_mm=geom.D_mm, d_mm=geom.d_mm,
fck_nmm2=geom.fck_nmm2, fy_nmm2=geom.fy_nmm2,
mu_knm=forces.mu_knm, vu_kn=forces.vu_kn,
)
print(f"Ast = {result.flexure.Ast_required:.0f} mm²")
Run the Full Pipeline (design → detail → BBS → report)
See examples/end_to_end_workflow.py for a complete working script (available in the source repository).
Cost-Optimize a Beam
from structural_lib import optimize_beam_cost
optimized = optimize_beam_cost(
units="IS456", span_mm=6000, mu_knm=150, vu_kn=100,
)
print(f"Optimal: {optimized.optimal_design.b_mm}×{optimized.optimal_design.D_mm} mm")
Check Multi-Case Compliance
from structural_lib import check_beam_is456
report = check_beam_is456(
units="IS456", b_mm=230, D_mm=500, d_mm=450,
fck_nmm2=25, fy_nmm2=500,
cases=[{"case_id": "ULS-1", "mu_knm": 100, "vu_kn": 80}],
)
print(f"Governing case: {report.governing_case_id}")
CLI Usage
python -m structural_lib design input.csv -o results.json # Beam design
python -m structural_lib bbs results.json -o bbs.csv # Bar bending schedule
python -m structural_lib dxf results.json -o drawings.dxf # DXF drawings
python -m structural_lib report results.json --format=html -o report.html # HTML report
python -m structural_lib job job.json -o output/ # Full job from spec
python -m structural_lib --help # All options
What's Available
Beam Design & Detailing
The primary combined beam route covers flexure and shear. Torsion is available only through the separate explicit torsion workflow.
| Category | Functions | Description |
|---|---|---|
| Beam Design | design_beam_is456, design_and_detail_beam_is456, design_from_input |
IS 456 flexure + shear |
| Detailing | build_detailing_input, compute_detailing, detail_beam_is456 |
Bar sizes, stirrups, cut lengths |
| Optimization | optimize_beam_cost, smart_analyze_design, suggest_beam_design_improvements |
Cost optimization, smart analysis |
| Compliance | check_beam_is456, check_compliance_report, check_beam_slenderness, check_beam_ductility |
Multi-case IS 456 checks |
| Torsion | design_torsion, calculate_equivalent_shear, calculate_equivalent_moment, calculate_torsion_shear_stress, calculate_torsion_stirrup_area, calculate_longitudinal_torsion_steel |
IS 456 Cl 41 torsion design |
| Serviceability | check_deflection_span_depth, check_crack_width |
Deflection + crack width |
| Shear | enhanced_shear_strength_is456 |
Enhanced shear near supports (IS 456 Cl 40.5) |
| Load Analysis | compute_bmd_sfd |
Bending moment & shear force diagrams |
Column Design (IS 456 Cl 25, 39.3–39.7)
| Category | Functions | Description |
|---|---|---|
| Unified Design | design_column_is456 |
Bounded rectangular-column orchestration |
| Axial Capacity | design_column_axial_is456 |
Short column axial capacity (Cl 39.3) |
| Uniaxial Bending | design_short_column_uniaxial_is456 |
Short column with uniaxial moment (Cl 39.5) |
| Biaxial Bending | biaxial_bending_check_is456 |
Biaxial bending check (Cl 39.6) |
| Long/Slender Columns | design_long_column_is456, calculate_additional_moment_is456 |
Slender column design with additional moment (Cl 39.7) |
| Classification | classify_column_is456, calculate_effective_length_is456, min_eccentricity_is456 |
Short/slender classification, effective length (Table 28) |
| Interaction Curve | pm_interaction_curve_is456 |
P-M interaction diagram generation |
| Helical Reinforcement | check_helical_reinforcement_is456 |
Helical reinforcement check (Cl 39.4) |
| Column Detailing | detail_column_is456 |
Reinforcement detailing (Cl 26.5.3) |
Footing Design (IS 456 Cl 34)
| Category | Functions | Description |
|---|---|---|
| Sizing | size_footing |
Footing plan dimensions from load & SBC |
| Flexure | footing_flexure |
Critical section bending design |
| One-Way Shear | footing_one_way_shear |
One-way shear check at d from face |
| Punching Shear | footing_punching_shear |
Two-way punching shear at d/2 perimeter |
| Bearing | check_bearing_pressure, bearing_stress_enhancement |
Bearing pressure & stress enhancement |
| Load Transfer | check_isolated_footing_load_transfer |
Bounded concentric bearing/dowel transfer with approved effective A1 |
Combined, strap, raft and pile-cap foundations, settlement, geotechnical design, and lateral stability are outside these footing workflows.
Solid Slab Design (Supported Cases)
| Category | Functions | Description |
|---|---|---|
| One-Way Slab | design_one_way_slab_is456 |
Simply supported solid rectangular strip: flexure and supplied-bar checks |
| Two-Way Slab | design_two_way_slab_is456 |
One interior four-edge-continuous flexure case using accepted caller-supplied coefficients |
| Discovery | get_supported_is456_capabilities |
Machine-readable supported workflows and held cases |
Two-way coefficients are not built in or verified by the library. The two-way route requires explicit source approval and a qualified acceptance reference. Flat/drop/ribbed slabs, openings, irregular panels and FEM are excluded.
IS 13920 Ductile Detailing
| Category | Functions | Description |
|---|---|---|
| Ductile Detailing | check_column_ductility_is13920 |
IS 13920 seismic ductile detailing checks |
Export, Import & Visualization
| Category | Functions | Description |
|---|---|---|
| BBS / Export | compute_bbs, export_bbs, compute_dxf, compute_report |
BBS, DXF, HTML reports |
| CSV Import | GenericCSVAdapter (via structural_lib.services.adapters) |
40+ column mappings |
| ETABS Integration | load_etabs_csv, create_job_from_etabs, create_jobs_from_etabs_csv, validate_etabs_csv, normalize_etabs_forces |
ETABS CSV import |
| 3D Geometry | beam_to_3d_geometry, compute_rebar_positions, compute_stirrup_positions, compute_beam_outline |
3D rebar visualization |
| Validation | validate_job_spec, validate_design_results, verify_calculation |
Input/output validation |
| Audit | compute_hash, create_calculation_certificate, generate_calculation_report |
Calculation audit trail |
Full API reference: see docs/reference/api.md
License
MIT — see LICENSE.
Engineering-use conditions and professional responsibilities are described in
the repository's LICENSE_ENGINEERING.md. The software is a design aid, not a
substitute for official code publications, independent calculation, or
professional approval.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file structural_lib_is456-0.23.0.tar.gz.
File metadata
- Download URL: structural_lib_is456-0.23.0.tar.gz
- Upload date:
- Size: 395.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe03a86d6c518a5f293c874e825930bb79de984cb53bebaf63a7610c3f042a73
|
|
| MD5 |
f9c773c98bff6a44c7ff939aba2353fa
|
|
| BLAKE2b-256 |
40d7a6033732d1b775fda678f34ad1d1c93f5c76d0ddcc8c909739036b505015
|
Provenance
The following attestation bundles were made for structural_lib_is456-0.23.0.tar.gz:
Publisher:
publish.yml on Pravin-surawase/structural_engineering_lib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
structural_lib_is456-0.23.0.tar.gz -
Subject digest:
fe03a86d6c518a5f293c874e825930bb79de984cb53bebaf63a7610c3f042a73 - Sigstore transparency entry: 2399011148
- Sigstore integration time:
-
Permalink:
Pravin-surawase/structural_engineering_lib@3f880d5bbc338baefc4aec8ed472cafe840a5c99 -
Branch / Tag:
refs/tags/v0.23.0 - Owner: https://github.com/Pravin-surawase
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3f880d5bbc338baefc4aec8ed472cafe840a5c99 -
Trigger Event:
push
-
Statement type:
File details
Details for the file structural_lib_is456-0.23.0-py3-none-any.whl.
File metadata
- Download URL: structural_lib_is456-0.23.0-py3-none-any.whl
- Upload date:
- Size: 478.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd56a5301160fc7d62154e9d6e567ba8bf9bb8608827c9454b63161276c5408a
|
|
| MD5 |
6d038a7a3986e17936e0bf90d8938b13
|
|
| BLAKE2b-256 |
67cd14ab90991407bb1b7d86facd93339035ae08a8dbfbc169693bef484a24e7
|
Provenance
The following attestation bundles were made for structural_lib_is456-0.23.0-py3-none-any.whl:
Publisher:
publish.yml on Pravin-surawase/structural_engineering_lib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
structural_lib_is456-0.23.0-py3-none-any.whl -
Subject digest:
cd56a5301160fc7d62154e9d6e567ba8bf9bb8608827c9454b63161276c5408a - Sigstore transparency entry: 2399011205
- Sigstore integration time:
-
Permalink:
Pravin-surawase/structural_engineering_lib@3f880d5bbc338baefc4aec8ed472cafe840a5c99 -
Branch / Tag:
refs/tags/v0.23.0 - Owner: https://github.com/Pravin-surawase
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3f880d5bbc338baefc4aec8ed472cafe840a5c99 -
Trigger Event:
push
-
Statement type: