stormsewer
Storm sewer hydrology and hydraulics for Python: Rational method, Manning, standard-step HGL/EGL backwater, and HEC-22 inlets. The same Rust engine that powers the StormSewer desktop app, exposed as a native extension — no Python dependencies, no server.
pip install stormsewer
Primitives
Float in, float out. Useful for replacing a spreadsheet column.
import stormsewer as ss
ss.intensity(60, 10, 0.8, 12) # IDF: i = a/(t+b)^c -> 5.0607 in/hr
ss.rational_q(0.70, 5.0607, 1.0) # Q = C i A -> 3.5425 cfs
ss.manning_capacity(1.25, 0.013, 0.005) # just-full capacity -> 4.5801 cfs
ss.normal_depth(3.5425, 1.25, 0.013, 0.005) # -> 0.8254 ft (None if it won't fit)
ss.critical_depth(3.5425, 1.25)
ss.circular_geometry(1.25, 0.8254)
# {'area': 0.8597, 'wetted_perimeter': ..., 'hydraulic_radius': ..., 'top_width': ...}
Pass si=True for metric: the Manning factor becomes 1.0 and g becomes 9.81.
ss.manning_capacity(0.4, 0.013, 0.005, si=True) # m3/s
Whole networks
import stormsewer as ss
import pandas as pd
result = ss.analyze_project(ss.demo_project_json())
pipes = pd.DataFrame(result["pipes"])
print(pipes[["id", "design_q", "capacity", "pct_full", "velocity", "hgl_up"]])
nodes = pd.DataFrame(result["nodes"])
print(nodes[nodes.floods]) # anything surcharging to the surface
analyze_file("project.ssproj") reads a file saved by the desktop app, and
analyze_ssn(text) takes the plain-text network format:
ss.analyze_ssn("""
IDF 60 10 0.8
TAILWATER 100.5
MINTC 10
NODE N1 inlet 0 0 104.0 110.0 1.0 0.70 12
NODE OUT outfall 300 0 102.5 108.5
PIPE P1 N1 OUT 300 1.25 0.013
""")
Each pipe dict carries id, from, to, slope, total_ca, tc,
travel_time, intensity, design_q, capacity, pct_full, velocity,
normal_depth, critical_depth, hgl_up, hgl_dn, and surcharged. Each
node dict carries id, tc, rim, hgl, freeboard, and floods.
Constants
K_MANNING_US (1.49), K_MANNING_SI (1.0), G_US (32.2), G_SI (9.81).
StormSewer uses K = 1.49, matching FHWA HDS-5 and HEC-22 rather than the 1.486 some spreadsheets use — a 0.27% difference in capacity. See VALIDATION.md, which works every number on a reference network by hand.
What this is not
It computes the published equations; it does not decide whether the Rational method suits your site, what C to use, or which storm to design for. Those stay with the engineer sealing the drawing.
License
GPL-3.0-or-later, like the rest of StormSewer.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stormsewer-0.9.3.tar.gz.
File metadata
- Download URL: stormsewer-0.9.3.tar.gz
- Upload date:
- Size: 465.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
maturin/1.15.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b87428dcabd133ddee5cd298fdea8d3b775b0f93f7dc15e729b27ad048abee22
|
|
| MD5 |
e755835b70ba3b58c2241264bcc663bb
|
|
| BLAKE2b-256 |
4fba3a6d2a43144f04cd159e9fc8921f43897be2cb42e16a7665c7abda0505ea
|
File details
Details for the file stormsewer-0.9.3-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: stormsewer-0.9.3-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 265.0 kB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
maturin/1.15.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
455e2be31cdbf237482e9654b29ca71d0ba654be05fc60418bc9ad8a339c8a69
|
|
| MD5 |
0f92b7858cea4d2c1415d2b17b7213d1
|
|
| BLAKE2b-256 |
9a0b1412a487ea39cbeff098e5bb86fb4e42a94227bd9c197f8bf60cfc11fffe
|
File details
Details for the file stormsewer-0.9.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: stormsewer-0.9.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 409.9 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
maturin/1.15.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
917467efbc6d3caf75d5100719528d0a4a290a1ada91c26601f5b086364c6028
|
|
| MD5 |
45b0413f8258af64ab5cba9dc244d61a
|
|
| BLAKE2b-256 |
141893929eceff85ed7d63cfc37b8303f2b26ef305ef659b775ecbda6a413d73
|
File details
Details for the file stormsewer-0.9.3-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.
File metadata
- Download URL: stormsewer-0.9.3-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- Upload date:
- Size: 706.0 kB
- Tags: CPython 3.9+, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
maturin/1.15.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a551b692e80f8a67455adc3efcb35b9ec243fbedc7568e89f1cf50926531c976
|
|
| MD5 |
5f1b7904a88c0ece513d0d1206a3dd42
|
|
| BLAKE2b-256 |
68ab1c626415b37a48ed1a50b260ea1cb506f5bd9d9ce8d227996f887d5c1a69
|