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.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

stormsewer-0.9.3.tar.gz (465.4 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.3-cp39-abi3-win_amd64.whl (265.0 kB view details)

Uploaded CPython 3.9+Windows x86-64

stormsewer-0.9.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (409.9 kB view details)

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

stormsewer-0.9.3-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (706.0 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.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

Hashes for stormsewer-0.9.3.tar.gz
Algorithm Hash digest
SHA256 b87428dcabd133ddee5cd298fdea8d3b775b0f93f7dc15e729b27ad048abee22
MD5 e755835b70ba3b58c2241264bcc663bb
BLAKE2b-256 4fba3a6d2a43144f04cd159e9fc8921f43897be2cb42e16a7665c7abda0505ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stormsewer-0.9.3-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 455e2be31cdbf237482e9654b29ca71d0ba654be05fc60418bc9ad8a339c8a69
MD5 0f92b7858cea4d2c1415d2b17b7213d1
BLAKE2b-256 9a0b1412a487ea39cbeff098e5bb86fb4e42a94227bd9c197f8bf60cfc11fffe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stormsewer-0.9.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 917467efbc6d3caf75d5100719528d0a4a290a1ada91c26601f5b086364c6028
MD5 45b0413f8258af64ab5cba9dc244d61a
BLAKE2b-256 141893929eceff85ed7d63cfc37b8303f2b26ef305ef659b775ecbda6a413d73

See more details on using hashes here.

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

File hashes

Hashes for stormsewer-0.9.3-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 a551b692e80f8a67455adc3efcb35b9ec243fbedc7568e89f1cf50926531c976
MD5 5f1b7904a88c0ece513d0d1206a3dd42
BLAKE2b-256 68ab1c626415b37a48ed1a50b260ea1cb506f5bd9d9ce8d227996f887d5c1a69

See more details on using hashes here.

Release history Release notifications | RSS feed

0.9.7

4 files

0.9.5

4 files

0.9.4

4 files

This release

0.9.3 This release

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