Metadata-Version: 2.4
Name: allHandsOnDeck
Version: 0.1.0
Summary: All Hands On Deck — Bridge design library (AASHTO flexure, beam/slab reinforcement)
License: MIT
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: numpy
Provides-Extra: plot
Requires-Dist: matplotlib; extra == "plot"

# ahod — All Hands On Deck

Bridge design library extracted from the Kareem design notebook.
Implements AASHTO 5.7.3.x flexural and shear design for reinforced
concrete deck slabs and beams.

## Install

```bash
pip install .
```

For the optional BMD/SFD plot feature:

```bash
pip install ".[plot]"
```

## Quick start

```python
from ahod import (
    BAR_TABLE, AVAIL_DIAS,
    pick_slab, pick_beam,
    design_AASHTO,
    design_layer,
    design_beam_bars,
    design_beam,
    shrinkage_design,
    solve_deck_slab_DL,
    col_class,
)

# Pick slab bars for As = 800 mm²/m
dia, spacing, As_prov = pick_slab(As=800)
print(f"Ø{dia} @ {spacing} mm  →  As = {As_prov:.1f} mm²/m")

# AASHTO iterative flexural design
As, a, c, phi_Mn, eps_t, ductility, ok, *_ = design_AASHTO(
    Mu=120, b=1000, d=200, fc=30, fy=420,
    As_min=300, ts_mm=250,
)
print(f"As = {As:.1f} mm²  |  φMn = {phi_Mn:.1f} kN·m  |  {ductility}")
```

## Public API

| Symbol | Description |
|--------|-------------|
| `BAR_TABLE` | `{dia: area}` dict for standard bars (Ø10–Ø32) |
| `AVAIL_DIAS` | Sorted list of available bar diameters |
| `pick_slab` | Choose bar + spacing for a slab strip |
| `pick_beam` | Choose bar layout for a rectangular beam |
| `design_AASHTO` | Iterative AASHTO 5.7.3.2.1 flexural design |
| `design_layer` | Select one slab reinforcement layer |
| `design_beam_bars` | Bar layout for a beam (multi-row) |
| `shrinkage_design` | Shrinkage/temperature bars per AASHTO 5.7.3.4 |
| `design_beam` | Full beam design (flexure + ductility + shear) |
| `solve_deck_slab_DL` | Exact force-method deck slab DL solver (n = 2–5) |
| `col_class` | Column slenderness classification |

## Dependencies

- `numpy` (required)
- `matplotlib` (optional, for `solve_deck_slab_DL(plot=True)`)
