Skill for integrated stormwater management and green infrastructure design with SWMM modeling, hydrologic analysis, BMP sizing, and MS4 permit compliance.
Skill for integrated stormwater management and green infrastructure design with SWMM modeling, hydrologic analysis, BMP sizing, and MS4 permit compliance.
Integrated stormwater management and green infrastructure design for sustainable urban drainage.
Purpose
This skill provides comprehensive capabilities for stormwater management planning, including hydrologic analysis, green infrastructure design, BMP selection and sizing, SWMM modeling, and MS4 permit compliance analysis.
Capabilities
SWMM Modeling and Simulation
EPA SWMM model setup and configuration
Subcatchment delineation and parameterization
Drainage network modeling
Long-term continuous simulation
Design storm analysis
LID representation and modeling
Hydrologic Analysis
TR-55 methodology implementation
Rational method calculations
SCS Curve Number determination
Time of concentration estimation
Unit hydrograph development
Rainfall-runoff modeling
Green Infrastructure Sizing
Bioretention facility design
Permeable pavement sizing
Rain garden design
Green roof specifications
Tree box filters
Vegetated swales
Detention/Retention Pond Design
Storage volume calculations
Stage-storage-discharge relationships
Outlet structure design
Emergency spillway sizing
Sediment forebay design
Maintenance access planning
Water Quality BMP Selection
Pollutant removal efficiency analysis
BMP selection matrix
Treatment train design
Sizing for TSS removal
Nutrient removal considerations
Cost-effectiveness analysis
Pollutant Load Modeling
Event Mean Concentration (EMC) analysis
Annual pollutant load estimation
Source area contribution analysis
Loading rate calculations
Reduction target setting
Low Impact Development Integration
Site-level LID planning
Watershed-scale LID analysis
LID retrofit opportunities
Performance monitoring design
Adaptive management frameworks
MS4 Permit Compliance Analysis
NPDES requirements interpretation
MCM implementation tracking
TMDL compliance assessment
Monitoring program design
Annual report preparation
Prerequisites
Installation
pip install numpy scipy pandas matplotlib
Optional Dependencies
# For SWMM integration
pip install swmm-api pyswmm
# For GIS analysis
pip install geopandas shapely
# For visualization
pip install plotly folium
Usage Patterns
Rational Method Calculations
import numpy as np
from dataclasses import dataclass
from typing importDict, List, Tuple@dataclassclassCatchmentData:
"""Catchment characteristics"""
area_acres: float
runoff_coefficient: float
time_of_concentration_min: float
description: str = ""classRationalMethod:
"""Rational method for peak runoff calculation"""def__init__(self):
# IDF curve coefficients (example for generic location)# Q = C * I * A, where I from IDF: I = a / (Tc + b)^cself.idf_coefficients = {
2: {'a': 100, 'b': 10, 'c': 0.8},
5: {'a': 120, 'b': 10, 'c': 0.8},
10: {'a': 140, 'b': 10, 'c': 0.8},
25: {'a': 160, 'b': 10, 'c': 0.8},
50: {'a': 180, 'b': 10, 'c': 0.8},
100: {'a': 200, 'b': 10, 'c': 0.8}
}
defrainfall_intensity(self, tc_min: float, return_period: int) -> float:
"""Calculate rainfall intensity from IDF curve (in/hr)"""
coef = self.idf_coefficients.get(return_period, self.idf_coefficients[10])
intensity = coef['a'] / (tc_min + coef['b']) ** coef['c']
return intensity
defpeak_runoff(self, catchment: CatchmentData, return_period: int) -> float:
"""Calculate peak runoff using Rational Method (cfs)"""
C = catchment.runoff_coefficient
I = self.rainfall_intensity(catchment.time_of_concentration_min, return_period)
A = catchment.area_acres
Q = C * I * A # cfsreturn Q
defcomposite_runoff_coefficient(self, subareas: List[Tuple[float, float]]) -> float:
"""Calculate composite C for mixed land uses
subareas: list of (area, C) tuples
"""
total_area = sum(a for a, c in subareas)
weighted_c = sum(a * c for a, c in subareas) / total_area
return weighted_c
@staticmethoddeftime_of_concentration_kirpich(length_ft: float, slope_pct: float) -> float:
"""Kirpich equation for Tc (minutes)"""
tc = 0.0078 * (length_ft ** 0.77) * (slope_pct ** -0.385)
return tc
# Example runoff coefficients
RUNOFF_COEFFICIENTS = {
'commercial': 0.85,
'industrial': 0.75,
'residential_high_density': 0.65,
'residential_medium_density': 0.45,
'residential_low_density': 0.35,
'parks': 0.20,
'forest': 0.15,
'impervious': 0.95,
'lawn_steep': 0.30,
'lawn_flat': 0.20
}
# Example usage
rational = RationalMethod()
# Calculate composite C for mixed use area
subareas = [
(5.0, RUNOFF_COEFFICIENTS['commercial']),
(10.0, RUNOFF_COEFFICIENTS['residential_medium_density']),
(3.0, RUNOFF_COEFFICIENTS['parks'])
]
composite_c = rational.composite_runoff_coefficient(subareas)
catchment = CatchmentData(
area_acres=18.0,
runoff_coefficient=composite_c,
time_of_concentration_min=15.0,
description="Mixed use development"
)
for rp in [2, 10, 25, 100]:
Q = rational.peak_runoff(catchment, rp)
print(f"{rp}-year storm: Q = {Q:.1f} cfs")