Metadata-Version: 2.4
Name: pyCoastal
Version: 0.2.0
Summary: A Python toolbox for coastal engineering
Author-email: Stefano Biondi <stefano.biondi@ufl.edu>
License: MIT
Project-URL: Homepage, https://github.com/stebiondi/pyCoastal
Project-URL: Repository, https://github.com/stebiondi/pyCoastal
Project-URL: Documentation, https://pycoastal.readthedocs.io
Project-URL: Issues, https://github.com/stebiondi/pyCoastal/issues
Keywords: coastal engineering,waves,sediment transport,morphodynamics,shoreline
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.21
Requires-Dist: PyYAML>=5.4
Provides-Extra: sparse
Requires-Dist: scipy>=1.7; extra == "sparse"
Provides-Extra: vtk
Requires-Dist: vtk>=9.0; extra == "vtk"
Provides-Extra: plots
Requires-Dist: matplotlib>=3.4; extra == "plots"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: scipy>=1.7; extra == "dev"
Requires-Dist: matplotlib>=3.4; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=4.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme; extra == "docs"
Dynamic: license-file

<p align="center">
  <img src="media/pyCoastal_logo.png" width="400">
</p>

A Python toolbox for coastal, port and ocean engineering. A wave record
becomes a design condition, the design condition sizes a structure, and the
structure comes out as a dimensioned drawing with its quantities and notes.
Every relation names its source and states its range of validity.

<p align="center">
  <img src="media/seawall_sheet.png" alt="Seawall drawing sheet" width="800">
</p>

## Install

```bash
pip install pyCoastal            # PyPI
pip install -e ".[dev]"          # from a clone, with tests and plotting
```

## Quick start

```python
from pyCoastal.applications.structures import DesignConditions
from pyCoastal.applications.seawall import design_seawall
from pyCoastal.applications.sections import seawall_sheet

conditions = DesignConditions.from_peak_period(Hm0=2.8, Tp=9.5, depth=8.5)
wall = design_seawall(conditions, still_water_level=2.9, seabed_level=-5.6)
print(wall.summary())
seawall_sheet(wall, size="A3").save("seawall.png")
```

## What is inside

| Area | Modules |
|------|---------|
| Design conditions | `applications.extremes` (POT, annual maxima, bootstrap bands) |
| Structures | `applications.structures`, `seawall`, `piles`, `berthing` |
| Scour | `applications.scour` (pier, contraction, abutment over a tidal cycle) |
| Ports and rivers | `applications.port`, `channel`, `river` |
| Coastline | `applications.nourishment`, `surge`, `sediment` |
| Drawings | `drafting`, `applications.sections` (drawing sheets and DXF) |
| Numerics | `numerics`, `physics`, `tools` (grids, operators, SWE, NS, waves) |
| Literature | `pedia` (PyCoaPedia: topics, synthesis, claims, equations, papers) |

**PyCoaTools** (`webapp/index.html`) runs the design modules in the browser.
**PyCoaPedia** is the knowledge base of the coastal and ocean engineering
literature, every claim with its regime and DOI: browse it in
`webapp/pedia.html`, query it with `python -m pyCoastal.pedia search "..."`,
or read `pedia/`.

## Documentation

- For people: [`pyCoastal manual.pdf`](pyCoastal%20manual.pdf), built from
  `docs/manual/` with `python docs/manual/build_manual.py`.
- For AI agents: [`AGENTS.md`](AGENTS.md) and [`llms.txt`](llms.txt), the
  Markdown API reference in `docs/reference/`, and the PyCoaPedia SQLite
  database (`pedia/SCHEMA.md`).

## Citation

> Biondi, S. (2025). *pyCoastal: a Python package for Coastal Engineering*,
> v0.2.0. https://github.com/stebiondi/pyCoastal

MIT License. Copyright (c) 2025 Stefano Biondi.
