Skip to main content

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.486), K_MANNING_SI (1.0), G_US (32.2), G_SI (9.81).

StormSewer uses K = 1.486, the exact unit conversion, matching Autodesk Hydraflow 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

stormsewer-0.9.7.tar.gz (533.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

stormsewer-0.9.7-cp39-abi3-win_amd64.whl (265.8 kB view details)

Uploaded CPython 3.9+Windows x86-64

stormsewer-0.9.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (411.5 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

stormsewer-0.9.7-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (708.6 kB view details)

Uploaded CPython 3.9+macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file stormsewer-0.9.7.tar.gz.

File metadata

  • Download URL: stormsewer-0.9.7.tar.gz
  • Upload date:
  • Size: 533.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.15.0

File hashes

Hashes for stormsewer-0.9.7.tar.gz
Algorithm Hash digest
SHA256 ce60e351b3c201a7265e8ca4aecade69dd5bcc93d152785c09b74d06e57423c3
MD5 455cecc8401dc4c7030fbc4080d6fb83
BLAKE2b-256 59cb095e5949b938892bb7a8396e9f9ce690ea8ba62c1a334aad2f2fb6589967

See more details on using hashes here.

File details

Details for the file stormsewer-0.9.7-cp39-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for stormsewer-0.9.7-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0d31395e8831b02e7028ac0bd9d45859b9c4667a6041afb73cd0a9f9e820d98c
MD5 b23b139b7c03aa342fac621ce6148a0a
BLAKE2b-256 c352c8d7720dec7f1b41939f9b8eb323f59de80877f9c702d0739a53eff431a6

See more details on using hashes here.

File details

Details for the file stormsewer-0.9.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for stormsewer-0.9.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 98c8ff109c4584925ea07768fd4c03280ba01bea86892717bcf23779d1eb19d1
MD5 058e91d7afe7891f0c447a4198e92633
BLAKE2b-256 86600a49210ddb4b5e7dd8203c2d233b9595c8207edc213f74bff13de1ca0d2f

See more details on using hashes here.

File details

Details for the file stormsewer-0.9.7-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for stormsewer-0.9.7-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 abf4b79896ab7a7e839778f3a861beedbbf9a4816c8318d16ce3e28605528a05
MD5 c0e85a96fb4d37104693c35923299f82
BLAKE2b-256 779b21ab5b5ea52f1d2b305ea6755af532fbee9dcd1cc75532d55aec3fe3bea3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.9.7 This release

4 files

0.9.5

4 files

0.9.4

4 files

0.9.3

4 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page