📐 AnySection – Reinforced Concrete Section Analysis
📊 Overview
AnySection is a Python library for reinforced concrete section analysis. It provides tools for modeling, analyzing, and visualizing the structural behavior of reinforced concrete sections using material nonlinearities and fiber-based analysis methods.
Key features include:
- ✅ Support for Concrete_NonlinearEC2 and Steel_Bilinear material models.
- ✅ Fiber-based moment-curvature analysis.
- ✅ Calculation of axial forces, bending moments, and neutral axis positions.
- ✅ Generate moment-curvature diagrams and plot section views.
- ✅ Extensible architecture for adding custom materials and solvers.
📁 Project Structure
AnySection/
│
├── anysection/ # Main package
│ ├── __init__.py
│ ├── geometry/ # Geometrical objects (Area, Fiber, Points)
│ │ └── area.py
│ │
│ ├── materials/ # Material models
│ │ └── material.py
│ │
│ ├── sections/ # Section definitions and properties
│ │ └── section.py
│ │
│ ├── solvers/ # Section analysis solvers
│ │ └── section_solver.py
│ │
│ └── utils/ # Utility classes (constants, helpers)
│ └── globals.py
│
├── examples/ # Example usage
│ └── example1.py
│
├── setup.py # Build configuration
├── requirements.txt # Dependencies
├── README.md # 📖 You are here
└── LICENSE # MIT License
⚙️ Installation
🔹 1. Clone the Repository
git clone https://github.com/yourusername/anysection.git
cd anysection
🔹 2. Install Dependencies
pip install -r requirements.txt
🔹 3. Install the Library Locally
pip install -e .
This installs the package in editable mode for local development.
🧮 Quick Start Example
import matplotlib.pyplot as plt
import numpy as np
from anysection.materials import Concrete_NonlinearEC2, Steel_Bilinear
from anysection.sections import Section
from anysection.solvers import SectionSolver
# Define Materials
concrete = Concrete_NonlinearEC2(fcm=20e6, ec1=0.002, ecu1=0.0035) # C20/25 Concrete
steel = Steel_Bilinear(Es=200e9, fy=500e6) # Reinforcement Steel
# Create a Section
section = Section("Rectangular Beam")
section.add_fiber(area=0.01, x=0.0, y=0.0, material=concrete)
section.add_fiber(area=0.01, x=0.1, y=0.0, material=concrete)
section.add_fiber(area=0.01, x=0.0, y=0.1, material=concrete)
section.add_fiber(area=0.01, x=0.1, y=0.1, material=concrete)
# Initialize Solver
solver = SectionSolver(section)
# Analyze Moment-Curvature
curvatures = np.linspace(0, 0.02, 100)
moments = [solver.calculate_moment_capacity(c) for c in curvatures]
# Plot Moment-Curvature Diagram
plt.plot(curvatures, moments)
plt.xlabel('Curvature (1/m)')
plt.ylabel('Moment (Nm)')
plt.title('Moment-Curvature Diagram')
plt.grid(True)
plt.show()
📐 Features
🏗️ Section Modeling: Fiber-based section modeling for reinforced concrete.
📊 Moment-Curvature Analysis: Plot moment-curvature behavior for reinforced sections.
📏 Material Models:
-
Concrete_NonlinearEC2 (Nonlinear EC2 behavior for concrete)
-
Steel_Bilinear (Bilinear elastic-plastic model for reinforcement)
📈 Customizable Solvers: Easily extend the library with new solvers and materials.
🛠️ Contributing
Contributions are welcome! 🚀 Feel free to fork the repository, submit issues, and create pull requests.
📢 To contribute:
Fork the repository.
Create a new branch: git checkout -b feature/my-feature
Commit your changes: git commit -m 'Add new feature'
Push to the branch: git push origin feature/my-feature
Open a Pull Request ✅
📄 License
This project is licensed under the MIT License.
🌐 Links
📚 Documentation: Coming Soon
🐛 Issue Tracker: GitHub Issues
🏗️ PyPI: Coming Soon
Citation: If you use AnySection in your research, please cite the following paper:
Papanikolaou, Vassilis. (2019). AnySection : Software for the analysis of arbitrary composite sections in biaxial bending and axial load.
Metadata
Release files for AnySection 1.0.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 | |
|---|---|---|---|
| anysection-1.0.0.tar.gz | 12.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| anysection-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.6 kB
Release files / anysection-1.0.0.tar.gz
| Download URL | anysection-1.0.0.tar.gz |
|---|---|
| Size | 12.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
93bdd5c49c69dacec26b16d84b30f797f5d76df3098d3eda58a69c049eaad42a
|
|
BLAKE2b-256 checksum How to use checksums |
f67b51add4d6100b8911e639a18367adeb4f0181b7e53e0e3a4f02d77d455c82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.5
|
Release files / anysection-1.0.0-py3-none-any.whl
| Download URL | anysection-1.0.0-py3-none-any.whl |
|---|---|
| Size | 13.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a62a79fc18a5b827b752493d27822bdab26f117067da6842e0c53604b5712a3d
|
|
BLAKE2b-256 checksum How to use checksums |
b5d194725281216d7f2c87596fe2f46b335e24d681cf710067d10920d5255ff8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.5
|