Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

mdbartos/pipedream

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

426 Commits
426 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pipedream 🚰 💭

Build Status Coverage Status Python 3.7 Docs Paper

An interactive hydrodynamic solver for sewer/stormwater networks.

About

Pipedream is a physically-based sewer/stormwater model designed for real-time applications. The pipedream toolkit consists of four major components:

  • A hydraulic solver based on the 1D Saint-Venant equations.
  • An infiltration solver based on the Green-Ampt formulation.
  • A water quality solver based on the 1D advection-reaction-diffusion equation (experimental).
  • An interactive simulation manager that facilitates real-time data assimilation and control.

Example use-cases for pipedream include:

  • Real-time detection and forecasting of urban flooding.
  • Implementation of real-time control strategies for combined sewer overflows.
  • Stormwater asset management and detection of maintenance emergencies.
  • Data-driven water quality assessment.

Documentation

Installation

Use pip to install pipedream-solver via pypi:

$ pip install pipedream-solver

Currently, only Python 3 is supported.

Dependencies

The following dependencies are required to install and use the pipedream toolkit:

Listed version numbers have been tested and are known to work (this does not necessarily preclude older versions).

A Minimal Example

Import modules and load data

# Import modules
import pandas as pd
from pipedream_solver.hydraulics import SuperLink
from pipedream_solver.simulation import Simulation

# Specify data path
input_path = './data/six_pipes'

# Get model components
superjunctions = pd.read_csv(f'{input_path}/superjunctions.csv')
superlinks = pd.read_csv(f'{input_path}/superlinks.csv')
junctions = pd.read_csv(f'{input_path}/junctions.csv')
links = pd.read_csv(f'{input_path}/links.csv')

# Read input data
Q_in = pd.read_csv(f'{input_path}/flow_input.csv', index_col=0)
H_bc = pd.read_csv(f'{input_path}/boundary_stage.csv', index_col=0)

Run superlink

# Instantiate superlink model
superlink = SuperLink(superlinks, superjunctions, links, junctions)

# Set constant timestep (in seconds)
dt = 30

# Create simulation context manager
with Simulation(superlink, Q_in=Q_in, H_bc=H_bc) as simulation:
    # While simulation time has not expired...
    while simulation.t <= simulation.t_end:
        # Step model forward in time
        simulation.step(dt=dt, num_iter=1)
        # Record internal depth and flow states
        simulation.record_state()
        # Print progress bar
        simulation.print_progress()

[==================================================] 100.0% [0.82 s]

Plot results

See plotting code here.

Superlink Example

Acknowledgments

Hydraulic solver based on the SUPERLINK scheme proposed by Zhong Ji (1998).

Ji, Z. (1998). General Hydrodynamic Model for Sewer/Channel Network Systems.
Journal of Hydraulic Engineering, 124(3), 307–315.
doi: 10.1061/(asce)0733-9429(1998)124:3(307)

About

🚰 Interactive hydrodynamic solver for pipe and channel networks

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.