Metadata-Version: 2.5
Name: driven-pile
Version: 0.1.2
Summary: Long-term capacity of driven piles from the pile-driving log: a pore-pressure-tracking inversion of blow counts.
Project-URL: Repository, https://github.com/lornearnold/driven-pile
Project-URL: Documentation, https://lornearnold.github.io/driven-pile/
Author: Lorne Arnold
License-Expression: GPL-3.0-or-later
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.11
Requires-Dist: numpy>=1.26
Requires-Dist: scipy>=1.11
Provides-Extra: plot
Requires-Dist: matplotlib>=3.8; extra == 'plot'
Description-Content-Type: text/markdown

# driven-pile

Long-term capacity of driven piles from the pile-driving log.

`driven-pile` implements a method in which each logged foot of driving characterizes the friction angle of the soil at the pile toe. The pore pressure generated by hammer blows reduces the soil's resistance during driving. The end-of-drive capacity represents the resistance of the soil with elevated pore-water pressure. The long-term capacity represents the resistance of the soil after all excess pore-water pressure has dissipated. Uncertainty in the driving-formula capacity, the data smoothing, the friction angle estimate, the cyclic resistance ratio, and the soil above the logged elevations is propagated with an optional Monte Carlo simulation.

Documentation: <https://lornearnold.github.io/driven-pile/>

## Install

```bash
pip install driven-pile          # numpy and scipy only
pip install "driven-pile[plot]"  # adds matplotlib for the plot helpers
```

## Use

```python
import driven_pile as dp

pile = dp.Pile.octagonal(width_in=24, length_ft=150)
hammer = dp.Hammer(ram_weight=20.0)  # kips
log = dp.DriveLog.from_csv(
    "pile_B-25.5.csv",
    pile,
    hammer,
    depth="depth_ft",
    bpm="bpm",
    bpf="bpf",
    tip_elevation=-141.0,
    pile_id="B-25.5",
)
soil = dp.SoilProfile(
    mudline=-30.0,  # ft
    elevation=[-30, -80, -150],
    fines=[10, 35, 15],
)  # ft, percent

result = dp.analyze(log, soil)
print(result.drive.ltc, result.drive.ltc_shaft, result.drive.toe_eod)

result = dp.analyze(log, soil, run_mc=True)
print(result.mc.quantiles([0.05, 0.5, 0.95]))
```

The deterministic result uses the lowest admissible friction angle for the unlogged top segment; `result.top_band` holds the whole admissible band. Fines content is given as a table of elevation versus percent fines, or a single value for a uniform profile.

Units are US customary throughout (feet, kips, kips per square foot), matching the construction records the method was developed on.

## License

GPL-3.0-or-later.
