Skip to main content

structural-lib-is456

IS 456 RC Beam Design Library (Python package).

Version: 0.24.0 (normal software release; broader development in progress) Status: Weekly Verification

⚠️ 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.24.0

  • Fail-closed project intake: malformed, missing, unknown, or mixed-validity beam rows block the whole project instead of being defaulted or skipped.
  • Safe public CLI: design keeps JSON on stdout, sends diagnostics to stderr, exits non-zero on blocked input, and preserves the bbs/detail/dxf chain.
  • Traceable results: import ledgers, input/result provenance, API classification, and qualified-review boundaries are explicit and machine-readable.
  • Additional bounded workflows: braced walls, straight-flight staircases, simply supported deep beams, regular interior flat slabs, symmetric combined footings, and property-line strap footings expose case-qualified APIs.
  • Release evidence: exact-wheel UAT covers 29 positive and negative cases, 15 CLI entries, and the 13 canonical family construction journeys.

Install

pip install structural-lib-is456===0.24.0         # exact normal release
pip install "structural-lib-is456[dxf]===0.24.0"  # release with DXF export
python -m structural_lib install-preflight          # interpreter/origin/extras

0.24.0 is a normal package version and will be selected without --pre after publication. The Beta maturity classifier and the explicit limitations above remain: broader library development and cumulative practicing-engineer review are still in progress.

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 Through the Canonical Facade

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 complete 13-journey cookbook is maintained at docs/cookbook/python/family-facades.md in the source repository.

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 dxf extra: 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 with the Canonical Project Schema

from structural_lib.services.batch import design_project_beams_v1

batch = design_project_beams_v1(
    [
        {
            "schema_version": "project-beam-design/v1",
            "member_id": "B1",
            "b_mm": 300,
            "D_mm": 500,
            "d_mm": 442,
            "mu_knm": 150,
            "vu_kn": 100,
            "fck_nmm2": 25,
            "fy_nmm2": 500,
        }
    ]
)
print(batch.summary.to_dict())
print(batch.members[0].calculation["flexure"]["ast_required"])

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

The design command is fail-closed. CSV input must explicitly supply BeamID,Story,b,D,eff_d,Span,Cover,fck,fy,Mu,Vu,Stirrup_Dia,Stirrup_Spacing. Instead of eff_d, supply tension_bar_diameter_mm so effective depth can be derived from the explicit cover and stirrup diameter. JSON input uses the cli-beam-design-input/v1 envelope. Unknown, duplicate, malformed, non-finite, empty, ambiguous, or mixed-validity input blocks the whole project without a partial result.

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

structural_lib_is456-0.24.0.tar.gz (685.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

structural_lib_is456-0.24.0-py3-none-any.whl (822.1 kB view details)

Uploaded Python 3

File details

Details for the file structural_lib_is456-0.24.0.tar.gz.

File metadata

  • Download URL: structural_lib_is456-0.24.0.tar.gz
  • Upload date:
  • Size: 685.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for structural_lib_is456-0.24.0.tar.gz
Algorithm Hash digest
SHA256 d530f10ca4f64655eade86b9beb8ca3d8b5eb10ddfcf0d7db097e9252d406640
MD5 fb1aa1184224cbab3cd9bf5094d2a1a7
BLAKE2b-256 f66981f19cd3ab217778aad68bed36503a6f14cb4030b2ceb6f934cb7fe6a0cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for structural_lib_is456-0.24.0.tar.gz:

Publisher: publish.yml on Pravin-surawase/structural_engineering_lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file structural_lib_is456-0.24.0-py3-none-any.whl.

File metadata

File hashes

Hashes for structural_lib_is456-0.24.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b5bc0b6ca6721897ae9ccce9860b6aaaa3c5647ded9fefd0945872ed354a093
MD5 cd03fc2b02c4bf37c190aff4d55d112a
BLAKE2b-256 ae507c82360dfc4a76e833faf87d6e3691d4679240547c9a1d806abd636f8373

See more details on using hashes here.

Provenance

The following attestation bundles were made for structural_lib_is456-0.24.0-py3-none-any.whl:

Publisher: publish.yml on Pravin-surawase/structural_engineering_lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.24.0 This release

2 files

0.23.0

2 files

0.21.6

2 files

0.21.5

2 files

0.21.4

2 files

0.21.3

2 files

0.21.2

2 files

0.21.1

2 files

0.21.0

2 files

0.20.0

2 files

0.19.1

2 files

0.19.0

2 files

0.18.0

2 files

0.17.5

2 files

0.17.0

2 files

0.16.6

2 files

0.16.5

2 files

0.16.0

2 files

0.15.0

2 files

0.14.0

2 files

0.13.0

2 files

0.12.0

2 files

0.11.0

2 files

0.10.7

2 files

0.10.6

2 files

0.10.4

2 files

0.10.3

2 files

0.10.2

2 files

0.10.0

2 files

0.9.6

2 files

0.9.5

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page