ConcreteDesignPy
A Python library and web application for reinforced concrete structural design per NSCP 2015 and ACI 318-19.
Disclaimer: This is an internal tool for Albert Pamonag Engineering Consultancy (APEC). All results must be verified by a licensed professional engineer. The developers assume no liability for errors or misuse.
Features
Beam Design
- Flexural Capacity — Strain compatibility method with iterative neutral axis solver, strength reduction factor (phi) plot per ACI 318-19 Table 21.2.2
- Shear Strength — Concrete and steel shear capacity, stirrup spacing design with Excel export (ACI 318M-14)
- Torsion Design — Combined shear-torsion interaction checks
- Deflection — Immediate and long-term deflection with effective moment of inertia
Column Design
- P-M Interaction — Strain compatibility analysis with Plotly interaction diagrams, load combination overlay
- Minimum Flexural Strength — Column-to-beam strength ratio verification
Analysis Tools
- Moment-Curvature — Dual-mode M-phi analysis:
- Quick (6-Point) — Closed-form key points (cracking, yield, ultimate) per ACI 318-19
- Advanced (Incremental) — Hognestad parabolic concrete model with fiber-layer approach, axial load support, 60-point smooth curve
- Mander Confined Concrete — Full Mander, Priestley & Park (1988) model with 13-step transparent report, biaxial confinement (Fig. 5), Plotly stress-strain curves, and confinement effectiveness charts
- Joint Shear — Verification for special moment frames (Section 422.7)
Detailing
- Development Length — Hook geometry for deformed bars and stirrups (Section 425)
- Alternative Inertia — Effective moment of inertia per Section 424.2.3.5
Web Application
- Flask-based interactive calculators
- Plotly charts for all visualizations (M-phi diagrams, P-M interaction, stress-strain curves, section analysis)
- MathJax-rendered calculation reports with full formula substitution
- Print-ready output with engineering notation
Installation
pip install -e .
Dependencies
- Python 3.8+
- Flask
- NumPy
- Gunicorn (production)
- openpyxl
Running Locally
python run.py
Then open http://localhost:5000 in your browser.
Project Structure
concretedesignpy/
├── calculators/ # Backend calculation modules
│ ├── beam_moment.py # Flexural capacity (neutral axis solver)
│ ├── beam_shear.py # Concrete & steel shear strength
│ ├── beam_torsion.py # Torsion design checks
│ ├── beam_deflection.py
│ ├── column_interaction.py # P-M interaction diagram
│ ├── column_flexural.py # Min flexural strength ratio
│ ├── joint_shear.py
│ ├── mander.py # Confined concrete model
│ ├── moment_curvature.py # M-phi analysis
│ ├── development_length.py # Hook geometry
│ ├── alternative_inertia.py
│ ├── rebar_layout.py # Section rebar coordinates
│ └── diagrams.py # SVG diagram generators
├── webapp/
│ ├── app.py # Flask application factory
│ ├── routes/ # API endpoints (beam, column, section, joint, mander)
│ ├── templates/ # Jinja2 HTML templates with MathJax
│ └── static/ # CSS & JavaScript
├── Procfile # Railway/Heroku deployment
├── railway.json # Railway config
├── requirements.txt # Python dependencies
└── setup.py # Package setup
API Endpoints
See the Wiki — API Reference for the full list of 17 POST endpoints.
Code Standards & References
- NSCP 2015 — National Structural Code of the Philippines
- ACI 318-19 / ACI 318M-14 — American Concrete Institute
- ACI SP-17 — Design Handbook
- Mander, Priestley & Park (1988) — Theoretical stress-strain model for confined concrete, J. Structural Engineering, ASCE, Vol. 114, No. 8
- Hognestad (1951) — A study of combined bending and axial load in reinforced concrete members, University of Illinois Bulletin No. 399
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature-name) - Commit your changes
- Submit a pull request
License
MIT License. See LICENSE for details.
Metadata
Release files for concretedesignpy 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| concretedesignpy-0.5.0.tar.gz | 128.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| concretedesignpy-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 278.3 kB
Release files / concretedesignpy-0.5.0.tar.gz
| Download URL | concretedesignpy-0.5.0.tar.gz |
|---|---|
| Size | 128.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
31ebaf825b3cfd85d99adf95ed68f67c62be7b09493dbe215ed5582338f5ae6f
|
|
BLAKE2b-256 checksum How to use checksums |
c8d5516a9f3e465d4d8b0ad1ef2f52666a6b30a9b87dc50ebbb23f31c0137c5c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / concretedesignpy-0.5.0-py3-none-any.whl
| Download URL | concretedesignpy-0.5.0-py3-none-any.whl |
|---|---|
| Size | 150.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2c62a2a4d773a350de5d531162423bcc999c1d0f7a0f1dd5ca71b47af8c1b49a
|
|
BLAKE2b-256 checksum How to use checksums |
9d607a4e5b16269287a48997999bb0819aba245a70a2de0a944709f52e784099
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|