HydroComplete Pro  ·  Technical Publication

Technical Reference Manual

Computational Methods, Formulas, and Known Limitations
Document: HCP-TRM-001
Version: 1.0
Published: April 2026
Applies to: HydroComplete Pro web application, build 2026.04
Author: HydroComplete Pro
Methodology developed by: Michael Flynn, PE

This document describes the computational methods, formulas, references, and known limitations of HydroComplete Pro. Engineers are responsible for verifying that the methods implemented here are appropriate for their specific application and for applying their professional judgment to interpret results. Nothing in this manual substitutes for site investigation, regulatory review, or a licensed professional engineer’s seal. Intended for use by licensed professionals.

Cite as: HydroComplete Pro Technical Reference Manual, Version 1.0, April 2026.

Table of Contents

  1. Chapter 1  Introduction and Scope5
  2. Chapter 2  Hydrology — The Hydraflow Engine8
    1. 2.1 SCS Curve Number runoff8
    2. 2.2 Time of concentration9
    3. 2.3 SCS Unit Hydrograph10
    4. 2.4 Design storms and the Atlas-14 database12
    5. 2.5 Modified Puls reservoir routing14
    6. 2.6 Muskingum-Cunge channel routing15
    7. 2.7 Multi-outlet control structures16
    8. 2.8 Flow diversions (splitter)16
    9. 2.9 Culvert outlet (FHWA HDS-5)17
    10. 2.10 V-notch weir17
    11. 2.11 Interconnected pond backwater18
    12. 2.12 Sample calculation — 10-acre watershed18
  3. Chapter 3  Sediment and Erosion — The SEDCAD4 Engine18
    1. 3.1 RUSLE — annual soil loss18
    2. 3.2 MUSLE — single-storm yield21
    3. 3.3 Sediment delivery ratio22
    4. 3.4 Physics-based PSD, Stokes/Rubey, Camp's basin efficiency23
    5. 3.5 USDA SSURGO integration28
    6. 3.6 Sediment control structures29
    7. 3.7 Riprap sizing (Isbash method)32
    8. 3.8 Channel stability33
  4. Chapter 4  Water Quality — The IDEAL Engine34
    1. 4.1 Water Quality Volume (WQV)34
    2. 4.2 Buildup and washoff35
    3. 4.3 First flush analysis35
    4. 4.4 Treatment train effects35
    5. 4.5 Fifteen BMP types36
    6. 4.6 Sizing constraints37
    7. 4.7 Annual probabilistic simulation37
    8. 4.8 Land-use-specific buildup/washoff library38
    9. 4.9 BMP internal hydraulics40
    10. 4.10 Continuous simulation with evapotranspiration44
  5. Chapter 5  Conveyance and Open Channel Hydraulics48
  6. Chapter 6  Hydraulic Stability and Riprap45
  7. Chapter 7  BMP Optimization48
  8. Chapter 8  Regulatory Compliance51
  9. Chapter 9  Known Limitations and Scope54
  10. Chapter 10  References57
  11. Appendix A  Software Architecture60
  12. Appendix B  Glossary of Symbols61
  13. Appendix C  Validation Tests63

Introduction and Scope

What HydroComplete Pro is

HydroComplete Pro is a browser-based stormwater and hydrology analysis platform that assembles four independent computation engines behind a diagram-driven user interface. Engineers build a watershed model by placing nodes (watersheds, BMPs, outlets) and links (pipes, swales) on a canvas; the platform runs the connected analysis through the engines and reports numerical results, formula steps, and regulatory compliance findings.

The four engines and their domains are:

Supporting modules include a HydraulicEngine core for open-channel normal depth, critical depth, and gradually varied flow profiles (standard step); a BMPOptimizer for cost-effectiveness ranking and lifecycle cost analysis; and a ComplianceChecker that evaluates analysis output against state regulatory configurations (NC, SC, VA).

What HydroComplete Pro is not

HydroComplete Pro is not a two-dimensional hydraulic model. It does not solve the full Saint-Venant equations in the momentum form, does not simulate bed-load transport, and does not perform a long-term continuous simulation. It does not replace HEC-RAS for detailed floodplain hydraulics, EPA SWMM for long-term continuous urban simulation, or SEDCAD4 for reservoir deposition forecasts over multi-year horizons. See Chapter 9 — Known Limitations and Scope for a full list.

HydroComplete Pro does not make permit decisions. It reports numerical results and checks them against configured state rules; the licensed professional engineer of record is responsible for the correctness of inputs, interpretation of outputs, and the final seal on any submittal.

Intended users

HydroComplete Pro is intended for use by licensed professional engineers, their supervised staff, and by students and educators for coursework. Results generated by HydroComplete Pro are not PE-sealed. A sealed calculation package requires review and endorsement by a licensed PE who has taken professional responsibility for the inputs and outputs.

Professional responsibility

Every engine in HydroComplete Pro implements peer-reviewed methods from published references. Every formula in this manual is cited to its original publication or to a primary engineering source. However, published methods come with their own validity envelopes: the Rational Method is not valid for large watersheds, the SCS curve-number method is not valid for winter snowmelt events, Stokes’ law is not valid for sand-sized particles in warm water, and so on. The engineer using HydroComplete Pro is responsible for verifying that the method the platform applies is appropriate for the site in question.

How to cite this manual

HydroComplete Pro Technical Reference Manual, Version 1.0, April 2026. Section numbers and equation numbers in this manual are stable across minor revisions.

Units and conventions

HydroComplete Pro uses US customary units throughout: feet, inches, square feet, acres, cubic feet, acre-feet, cubic feet per second (cfs), tons per acre per year, and degrees Fahrenheit. Internal physical constants are taken as $g = 32.174 \text{ ft/s}^2$ and, for the Stokes/Rubey settling module, the SI-unit equivalent $g = 9.81 \text{ m/s}^2$ with conversions back to ft/s for reporting. Water temperature is input in degrees Celsius to match the kinematic viscosity table.

Hydrology — The Hydraflow Engine

The Hydraflow Engine (source: src/engines/HydraflowEngine.js) implements event-based rainfall-runoff and routing. It is designed for peak-flow and hydrograph analysis of single design storms; it does not perform continuous simulation.

SCS Curve Number runoff

Direct runoff depth $Q$ from rainfall depth $P$ is computed by the NRCS Curve Number method (Soil Conservation Service, 1954; NRCS, 2004). The runoff equation and potential maximum retention $S$ are:

$$Q = \dfrac{(P - I_a)^2}{P - I_a + S}, \quad P > I_a$$
$$S = \dfrac{1000}{CN} - 10, \quad I_a = 0.2\,S$$

where $Q$ is runoff depth (in), $P$ is cumulative rainfall depth (in), $S$ is potential maximum retention (in), $I_a$ is initial abstraction (in), and $CN$ is the dimensionless curve number (30–98) from NRCS TR-55 Table 2-2 based on hydrologic soil group and land cover.

Variables and typical ranges:

Curve Number inputs and ranges.
SymbolNameUnitsTypical range
$P$Cumulative rainfall depthin0.5 – 15
$CN$Curve number30 (A-soil forest) – 98 (pavement)
$S$Potential maximum retentionin0.2 – 23.3
$I_a$Initial abstractionin$0.2\,S$
$Q$Runoff depthin0 – $P$

The Hydraflow Engine accumulates rainfall by timestep (from a design-storm hyetograph) and evaluates the running $Q(t)$ as in the NRCS method; incremental runoff at each timestep is the difference from the previous step. The initial abstraction fraction is fixed at 0.2 (the classical ratio).

Time of concentration

The Conveyance Engine computes a composite $t_c$ from a sequence of sub-reaches using the three flow regimes prescribed in NRCS TR-55 Chapter 3 (USDA-NRCS, 1986):

Travel time for each segment is $t = L/V/3600$ (hours); the composite $t_c$ is the sum of segment travel times.

Additional $t_c$ methods

Two additional empirical $t_c$ methods are available for small-watershed screening or when segment-by-segment data is not yet developed:

Kirpich (1940) — developed for small agricultural watersheds in Tennessee with well-defined channels:

$$t_c = 0.0078\,L^{0.77}\,S^{-0.385}$$

where $t_c$ is in minutes, $L$ is the maximum flow path length (ft), and $S$ is the average watershed slope (ft/ft). Reference: Kirpich (1940).

FAA (1970) — developed for overland flow on airport surfaces; appropriate for small, relatively flat paved or graded areas:

$$t_c = 1.8\,(1.1 - C)\,\dfrac{L^{0.5}}{S^{1/3}}$$

where $t_c$ is in minutes, $C$ is the Rational Method runoff coefficient (0–1), $L$ is the overland flow length (ft), and $S$ is the surface slope (%). Reference: FAA Advisory Circular AC 150/5320-5B (1970).

SCS Unit Hydrograph

The SCS dimensionless unit hydrograph is defined by the triangular approximation with a peak-rate factor of 484 (NRCS NEH Part 630, Chapter 16; NRCS, 2007). The Hydraflow Engine computes lag time, time-to-peak, and peak unit discharge as:

$$t_{lag} = 0.6\,t_c$$
$$T_p = \dfrac{t_{lag}}{1.67}$$
$$q_p = \dfrac{484\,A}{T_p}$$

where $t_c$ is the time of concentration (hr), $t_{lag}$ is the watershed lag time (hr), $T_p$ is the time to peak (hr), $q_p$ is the peak unit discharge (cfs per inch of runoff), and $A$ is the drainage area (square miles).

Peak-rate factor — range, not a universal constant

The 484 peak-rate factor is the standard SCS value for “average” humid watersheds. NRCS NEH Chapter 16 documents an acceptable range of roughly 300 (flat, arid, swampy watersheds) to 600 (steep, well-drained watersheds). Hydraflow’s current release uses 484 as a fixed constant. For watersheds outside the humid-average envelope the engineer should verify the peak-rate factor against site conditions and, if needed, adjust the resulting peak flow manually. A future release may expose the peak-rate factor as a user input.

The engine then convolves incremental runoff depths with the dimensionless unit hydrograph ordinates. Ordinate-by-ordinate flow is accumulated into the design hydrograph via linear superposition, a standard application of the unit-hydrograph principle (Sherman, 1932).

Design storms and the Atlas-14 database

The Hydraflow Engine ships with a 19-city database of NOAA Atlas 14 24-hour precipitation depths for return periods 1, 2, 5, 10, 25, 50, and 100 years. Sources: NOAA Atlas 14 Precipitation Frequency Atlas, Volumes 1–11 (Bonnin et al., 2006–2011; Perica et al., 2013). Each city record also includes latitude, longitude, annual average rainfall, number of rain events per year, monthly totals, and the assigned SCS rainfall distribution (Type I, IA, II, or III per NRCS TR-55 Figure B-2).

Sample entries from the Hydraflow Atlas-14 database (24-hour, inches).
City2-yr10-yr25-yr100-yrSCS type
Charlotte, NC3.385.026.107.99II
Raleigh, NC3.535.256.408.41II
Asheville, NC3.124.715.787.67II
Atlanta, GA3.324.915.977.82II
Houston, TX4.236.638.2711.14III
Los Angeles, CA2.363.975.046.89I

The engine synthesizes design hyetographs from SCS Type I, IA, II, and III 24-hour distributions by converting the published cumulative rainfall fractions into incremental rainfall at a user-specified timestep (default 0.1 hr).

Atlas-14 is a finite city list — verify for your project

The built-in Atlas-14 database currently covers 19 cities. Outside those cities the engineer should pull project-specific precipitation frequency estimates from hdsc.nws.noaa.gov/hdsc/pfds/ and enter them manually. The engine does not geocode arbitrary locations against Atlas-14 grids.

Modified Puls reservoir routing

Detention pond routing uses the Storage-Indication (Modified Puls) method (NRCS NEH Part 630, Chapter 17; USACE, 2000). The continuity equation is written so that all unknowns appear on one side:

$$\dfrac{2\,S_2}{\Delta t} + O_2 = \left(\dfrac{2\,S_1}{\Delta t} - O_1\right) + I_1 + I_2$$

where $S$ is storage volume (ft$^3$), $O$ is outflow (cfs), $I$ is inflow (cfs), and subscripts 1 and 2 denote the start and end of the timestep. For each step the engine computes the right-hand side from known quantities, then solves for the pair $(S_2, O_2)$ by interpolating the user-supplied storage–outflow curve expressed in the form $\frac{2S}{\Delta t} + O$ vs. $O$.

The default routing timestep is 0.1 hr (6 min). When the pond has multiple outlets (see §2.7), each outlet’s contribution to total outflow is tracked and interpolated separately so that downstream routing can use the individual per-outlet hydrographs.

Muskingum-Cunge channel routing

Channel reach routing uses the physically-based Muskingum-Cunge method (Cunge, 1969; Ponce, 1989; USACE EM 1110-2-1417, 1994), which derives the routing parameters from channel geometry and a reference flow rather than requiring the engineer to supply $K$ and $X$ directly.

Reference normal depth $d_{ref}$ is found by bisection on Manning’s equation at the peak inflow $Q_{ref}$. The kinematic wave celerity, reach travel time, and weighting factor are then:

$$c = \tfrac{5}{3}\,V_{ref}, \quad K = \dfrac{L}{c}, \quad X = \tfrac{1}{2}\!\left(1 - \dfrac{Q_{ref}}{B_{ref}\,S\,c\,L}\right)$$

where $c$ is celerity (ft/s), $V_{ref}$ is reference velocity (ft/s), $L$ is reach length (ft), $B_{ref}$ is top width at reference depth (ft), and $S$ is bed slope (ft/ft). $X$ is clamped to the valid range $[0, 0.5]$.

The routing equation is the classical Muskingum form applied at each timestep:

$$O_{j+1} = C_1\,I_{j+1} + C_2\,I_j + C_3\,O_j$$

with coefficients computed from $K$, $X$, and the routing timestep $\Delta t$:

$$C_1 = \dfrac{\Delta t - 2KX}{2K(1-X) + \Delta t}, \quad C_2 = \dfrac{\Delta t + 2KX}{2K(1-X) + \Delta t}, \quad C_3 = \dfrac{2K(1-X) - \Delta t}{2K(1-X) + \Delta t}$$

The engine checks the Courant stability condition $2KX \leq \Delta t \leq 2K(1-X)$ and adjusts $\Delta t$ into the valid envelope if necessary. It verifies $C_1 + C_2 + C_3 = 1$ after each routing run as a mass-balance check.

Multi-outlet control structures

The Hydraflow Engine supports control structures with multiple hydraulically independent outlets (e.g., a low-flow orifice, a principal weir, and an emergency spillway stacked in a single riser). The storage-outflow curve stores per-outlet flows at every elevation; during routing the engine tracks each outlet’s contribution to the total and produces a separate outflow hydrograph per outlet, which allows downstream routing to send each outlet’s flow to a different downstream node.

Outlet primitives include:

Flow diversions (splitter)

The Hydraflow Engine supports inline flow splitters that divert flow above a user-defined threshold to a bypass path while passing low flows through to a treatment train. The splitHydrograph(hydrograph, thresholdQ) method splits each timestep as:

$$Q_{primary}(t) = \min\!\bigl(Q_{in}(t),\; Q_{threshold}\bigr)$$
$$Q_{bypass}(t) = \max\!\bigl(0,\; Q_{in}(t) - Q_{threshold}\bigr)$$

Volume is conserved at every timestep: $Q_{primary}(t) + Q_{bypass}(t) = Q_{in}(t)$. A typical use case routes low flows to a water-quality treatment BMP (e.g., bioretention or sand filter) while bypassing peak storm flows directly to the detention pond or receiving stream.

Culvert outlet (FHWA HDS-5)

The culvertHeadwater(Q, culvert, tailwater) method implements the FHWA Hydraulic Design Series No. 5 inlet-control vs. outlet-control analysis (Schall et al., 2012). The governing headwater is the greater of the two control modes.

Inlet control

Inlet control headwater is computed from the FHWA nomograph equations. At low heads the entrance acts as an unsubmerged weir; as head rises above a transition depth the flow regime changes to a submerged orifice. The engine evaluates both forms and takes the maximum.

Outlet control

Under outlet control, headwater is governed by the sum of entrance, friction, and exit losses through the barrel:

$$H = \left(K_e + 1 + \dfrac{19.63\,n^2\,L}{R^{4/3}}\right) \dfrac{V^2}{2g}$$

where $K_e$ is the entrance loss coefficient, $n$ is the barrel Manning’s roughness, $L$ is the barrel length (ft), $R$ is the hydraulic radius (ft), $V$ is the barrel velocity (ft/s), and $g = 32.174$ ft/s$^2$. The controlling headwater is $HW = \max(HW_{inlet}, HW_{outlet})$.

Culvert analysis is integrated into the storage-outflow curve as type: ’culvert’ in generateStorageCurve, allowing culvert outlets to participate in Modified Puls routing alongside orifice and weir outlets. Reference: FHWA HDS-5 (Schall et al., 2012).

V-notch weir

A triangular (V-notch) weir is available as an outlet type for both low-flow measurement and water-quality orifice sizing. The discharge equation is:

$$Q = C_v \tan\!\left(\frac{\theta}{2}\right) \frac{8}{15}\,\sqrt{2g}\; h^{5/2}$$

where $C_v$ is the V-notch discharge coefficient (typically 0.58–0.62 for a sharp-crested notch), $\theta$ is the notch angle, $h$ is the head above the notch vertex (ft), and $g = 32.174$ ft/s$^2$. The V-notch weir is integrated as type: ’vnotch’ in generateStorageCurve. Reference: Kindsvater & Carter (1957).

Interconnected pond backwater

When two ponds in series are close enough that the downstream pond’s water surface elevation affects the upstream pond’s outlet capacity, the routeInterconnectedPonds(hydrograph, upstreamPond, downstreamPond) method performs iterative Modified Puls routing:

  1. Route the inflow hydrograph through the upstream pond assuming free outfall.
  2. Route the upstream outflow through the downstream pond to obtain a downstream water surface elevation (WSE) time series.
  3. Recalculate the upstream pond’s outlet capacity with downstream WSE as tailwater, reducing effective head on the upstream outlet.
  4. Re-route both ponds and compare the downstream WSE to the previous iteration.
  5. Repeat until the maximum change in downstream WSE between iterations falls below a convergence tolerance (default 0.01 ft).

Convergence is typically achieved in 3–5 iterations. This method captures the backwater effect that can reduce upstream pond performance during large storms when the downstream pond is simultaneously filling.

Sample calculation — 10-acre watershed, CN 78, 10-yr/24-hr at Charlotte NC

Worked example 2.1 — SCS peak flow estimate

Given: $A = 10$ ac $= 0.01563$ mi$^2$; $CN = 78$; $t_c = 0.30$ hr; 10-yr 24-hr rainfall $P = 5.02$ in (Charlotte NC, Atlas-14).
Step 1 — Retention: $S = 1000/78 - 10 = 12.821 - 10 = 2.82$ in, $I_a = 0.2 \times 2.82 = 0.564$ in.
Step 2 — Runoff depth: $Q = (5.02 - 0.564)^2 / (5.02 - 0.564 + 2.82) = 19.855 / 7.276 = 2.73$ in.
Step 3 — Unit hydrograph timing: $t_{lag} = 0.6 \times 0.30 = 0.180$ hr; $T_p = 0.180 / 1.67 = 0.1078$ hr.
Step 4 — Unit peak: $q_p = 484 \times 0.01563 / 0.1078 = 70.2$ cfs per inch of runoff.
Step 5 — Estimated peak (triangular approximation): $Q_p \approx q_p \times Q \approx 70.2 \times 2.73 \approx 192$ cfs.
Verification: Hydraflow’s actual output uses hyetograph-driven convolution and will differ modestly from the triangular estimate because the Type-II distribution concentrates rainfall at hour 12. A typical convolved result for this watershed is within ±10% of the triangular estimate.

Sediment and Erosion — The SEDCAD4 Engine

The SEDCAD4 Engine (source: src/engines/SEDCAD4Engine.js) is the centerpiece of HydroComplete Pro’s erosion and sediment control (ESC) module. It implements annual soil loss (RUSLE), single-storm yield (MUSLE), sediment delivery ratios, physics-based particle settling with the Camp equation, and the design of the four standard sediment control structures used in North Carolina and most Southeastern erosion control programs. Where possible, inputs are pulled from USDA-NRCS SSURGO via the Soil Data Access (SDA) REST service so that K-factor, particle-size distribution, organic matter, and bulk density are site-specific rather than generic lookups.

RUSLE — annual soil loss

Annual average sheet-and-rill soil loss is computed by the Revised Universal Soil Loss Equation (Renard et al., 1997; USDA Agriculture Handbook No. 703):

$$A = R \cdot K \cdot LS \cdot C \cdot P$$

where $A$ is the long-term average annual soil loss (tons per acre per year), $R$ is the rainfall-runoff erosivity factor, $K$ is the soil erodibility factor, $LS$ is the combined slope length and steepness factor, $C$ is the cover and management factor, and $P$ is the support practice factor.

RUSLE factor definitions, units, and sources.
FactorUnitsTypical rangeSource in HydroComplete
$R$hundreds of ft-tonf in hr$^{-1}$ yr$^{-1}$80 – 350NRCS isoerodent map (Renard et al., 1997, Fig. 2-1); by city code.
$K$ton ac hr / (hundreds of ac ft-tonf in)0.05 (sand) – 0.60 (silt)SSURGO kwfact when available; otherwise textural lookup.
$LS$dimensionless0.1 – 20McCool et al. (1987); computed from slope length and steepness.
$C$dimensionless0.001 (forest) – 1.00 (bare)Renard et al. (1997); by land cover class.
$P$dimensionless0.15 (terracing) – 1.00 (none)Renard et al. (1997); by support practice.

LS factor computation

The combined slope length and steepness factor is computed per McCool et al. (1987) as coded in SEDCAD4Engine.calculateLSFactor():

$$L = \left(\dfrac{\lambda}{72.6}\right)^{m}, \quad m = \begin{cases} 0.2, & s < 1\% \\ 0.3, & 1\% \leq s < 3\% \\ 0.4, & 3\% \leq s < 5\% \\ 0.5, & s \geq 5\% \end{cases}$$
$$S = \begin{cases} 10.8\,\sin\theta + 0.03, & s < 9\% \\ 16.8\,\sin\theta - 0.50, & s \geq 9\% \end{cases}, \quad \theta = \arctan(s/100)$$
$$LS = L \cdot S$$

where $\lambda$ is slope length (ft), $s$ is slope in percent, and $\theta$ is the slope angle. The 72.6-ft denominator is the RUSLE unit-plot length.

Worked example 3.1 — RUSLE for a 5-acre construction site

Given: Charlotte NC region ($R = 180$); clay-loam soil ($K = 0.37$ from the SEDCAD4 lookup, or from SSURGO kwfact if available); slope length 100 ft at 5%; bare construction ($C = 0.90$); no support practice ($P = 1.00$); $A_{site} = 5$ ac.
LS factor: For $s = 5\%$ use $m = 0.5$; $L = (100/72.6)^{0.5} = 1.174$; $\sin(\arctan(0.05)) = 0.0499$; $S = 10.8 \times 0.0499 + 0.03 = 0.569$; $LS = 1.174 \times 0.569 = 0.668$.
Annual soil loss: $A = 180 \times 0.37 \times 0.668 \times 0.90 \times 1.00 = 40.0$ tons/ac/yr.
Total: $A_{total} = 40.0 \times 5 = 200$ tons/yr before delivery-ratio reduction.

MUSLE — single-storm sediment yield

For single-storm sediment yield computations the engine implements the Modified Universal Soil Loss Equation (Williams, 1975; USDA Agricultural Research Service):

$$Y = 95 \cdot (Q_{vol}\,q_p)^{0.56} \cdot K \cdot LS \cdot C \cdot P$$

where $Y$ is storm sediment yield in tons, $Q_{vol}$ is the storm runoff volume in acre-feet, $q_p$ is the storm peak flow in cfs, and $K$, $LS$, $C$, $P$ are the same factors as in RUSLE. The 95 coefficient and the 0.56 exponent are empirical fits to the USDA watershed dataset used by Williams (1975); the hydrologic term $95\,(Q_{vol}\,q_p)^{0.56}$ replaces RUSLE’s $R$ factor because sediment delivery in a single storm depends on both runoff volume and peak rate, not just long-term rainfall energy.

MUSLE is appropriate when a single design-storm sediment yield is needed (e.g., sizing a sediment basin to trap one 25-yr storm’s sediment). RUSLE is appropriate for annual average loss and for the long-term operating sediment accumulation estimate.

Sediment delivery ratio

Not all sediment eroded from upland sources reaches the watershed outlet. SEDCAD4 applies a sediment delivery ratio (SDR) based on drainage area using the two published forms coded in calculateSedimentYield():

$$SDR = \begin{cases} 0.51\,A^{-0.11}, & A < 1 \text{ ac (Roehl, 1962)} \\ 0.41\,A^{-0.3}, & A \geq 1 \text{ ac (Boyce, 1975)} \end{cases}$$

A linear slope adjustment $SDR \leftarrow SDR(1 + 0.01\,s)$ is applied and the result is capped at 1.0. Sediment yield is then $Y = A_{loss} \cdot SDR$. The SDR is a coarse correction that rolls up deposition on foot-slopes, in depressions, and in vegetated buffers into a single coefficient. For a formal delivery budget with explicit deposition zones, use a dedicated watershed sediment budget model.

Physics-based PSD, Stokes/Rubey, and Camp’s basin efficiency

This section documents the most important upgrade in the 2026 release of HydroComplete Pro: the replacement of hardcoded trap efficiencies with a physics-based particle settling calculation using the USDA 7-bin particle size distribution, Stokes’ law, Rubey’s transition formula, and Camp’s (1946) ideal settling basin efficiency. The full implementation appears in SEDCAD4Engine.js under the header PHYSICS-BASED PSD, STOKES SETTLING VELOCITY, CAMP’S BASIN EFFICIENCY.

USDA 7-bin particle size classification

Soil particles are binned according to the USDA-NRCS Soil Survey Manual (Soil Survey Staff, 2017) and Gee & Bauder (1986). HydroComplete’s PSD_BINS constant holds the bin definitions shown below. The representative diameter for each bin is the geometric mean of the bin bounds, which is the conventional choice for settling-velocity computations.

USDA 7-bin particle size classification used by SEDCAD4Engine.
BinName$d_{min}$ (mm)$d_{max}$ (mm)$d_{rep}$ (mm)
clayClay< 0.0020.0020.0008
siltSilt0.0020.0500.010
sandVFSVery fine sand0.0500.1000.075
sandFSFine sand0.1000.2500.158
sandMSMedium sand0.2500.5000.354
sandCSCoarse sand0.5001.0000.707
sandVCSVery coarse sand1.0002.0001.414

Stokes’ law for laminar settling

For particles small enough that inertial forces are negligible ($\mathrm{Re}_p \ll 1$), the settling velocity of a sphere in still water is derived by balancing gravity against viscous drag (Stokes, 1851; see also Fair & Geyer, 1954; Rouse, 1938):

$$V_s = \dfrac{g\,(\rho_s - \rho_w)\,d^{2}}{18\,\mu}$$

where $V_s$ is terminal settling velocity (m/s), $g = 9.81$ m/s$^2$, $\rho_s$ is particle density (kg/m$^3$; 2650 for quartz), $\rho_w$ is water density (1000 kg/m$^3$ at 20°C), $d$ is particle diameter (m), and $\mu$ is dynamic viscosity (Pa·s; 1.004×10$^{-3}$ at 20°C).

Validity: Stokes’ law is exact only as $\mathrm{Re}_p \to 0$; it is commonly used for $\mathrm{Re}_p < 1$, but the drag coefficient begins to deviate from the Stokes value noticeably by $\mathrm{Re}_p \approx 0.5$. Rouse (1938) recommends the more conservative $\mathrm{Re}_p \leq 0.5$ cutoff, which HydroComplete adopts as the regime boundary. Particles coarser than this boundary are handled by Rubey’s transition formula (below).

Kinematic viscosity of water varies strongly with temperature; HydroComplete uses the table below (standard reference values; see White, 2006, Appendix A).

Kinematic viscosity of water at standard temperatures (SEDCAD4Engine nuTable).
Temperature (°C)$\nu$ (m$^2$/s)
51.519×10$^{-6}$
101.307×10$^{-6}$
151.139×10$^{-6}$
201.004×10$^{-6}$
250.893×10$^{-6}$

Rubey’s (1933) transition formula

For particles in the 0.1–2 mm range (fine to very coarse sand in the USDA classification), Reynolds numbers typically exceed the Stokes ceiling and the drag coefficient transitions from the $24/\mathrm{Re}$ Stokes form toward a turbulent-wake value. Rubey (1933) published an explicit closed-form solution to the full drag balance that is valid through this transition regime:

$$V_s = F\,\sqrt{g\,d\,(SG - 1)}$$
$$F = \sqrt{\dfrac{2}{3} + \dfrac{36\,\nu^{2}}{g\,d^{3}\,(SG - 1)}} - \sqrt{\dfrac{36\,\nu^{2}}{g\,d^{3}\,(SG - 1)}}$$

where $SG$ is particle specific gravity (2.65 for quartz), $d$ is diameter (m), $g$ is gravitational acceleration, and $\nu$ is kinematic viscosity. The Rubey form is valid from approximately 0.1 mm to 2 mm for natural quartz sand in water; above 2 mm, fully turbulent forms (e.g., Dietrich 1982) are more appropriate.

HydroComplete’s regime selection logic tests $\mathrm{Re}_p$ computed under the Stokes solution and switches to Rubey if the Reynolds number exceeds 0.5. The regime name is returned alongside the velocity so that reviewers can verify the computation path.

Published benchmark comparison

Stokes/Rubey settling velocities for quartz in water at 20°C, computed by SEDCAD4Engine and compared to published values (Fair & Geyer, 1954, Table 29-2).
$d$ (mm)Regime$V_s$ (m/s), computed$V_s$ (m/s), publishedΔ
0.001 (clay)Stokes~9×10$^{-7}$8.5×10$^{-7}$< 20%
0.01 (silt)Stokes~8.9×10$^{-5}$8.47×10$^{-5}$< 20%
0.1 (VFS boundary)Stokes/Rubey transition~8×10$^{-3}$6.92×10$^{-3}$< 35%
0.5 (medium sand)Rubey~0.070.072< 35%
1.0 (coarse sand)Rubey~0.110.116< 35%

The 0.1-mm bin sits at the Stokes/Rubey transition and published values from different sources differ by roughly ±30% in this regime because it is the regime where simplified settling theories are least accurate. HydroComplete’s test suite (test-stokes-camp.js) allows a 35% tolerance at the transition bins and tighter 20% tolerances at pure Stokes diameters.

Building the 7-bin PSD from site data

HydroComplete’s buildPSDFromSiteData() method accepts any of the following inputs, in order of preference:

  1. SSURGO sand subclass fractions (sandvc_r, sandco_r, sandmed_r, sandfine_r, sandvf_r) from the USDA-NRCS Soil Data Access query. These are stored as percent of the whole sample; the engine normalizes them so the subclass sum equals the reported total sand fraction to correct for rounding drift.
  2. Total clay/silt/sand percentages from SSURGO sandtotal_r, silttotal_r, claytotal_r. The sand fraction is cascaded into the five sand bins using published general within-class proportions from Kilmer & Alexander (1949) and the SEDCAD4 default particle-size library: VFS 15%, FS 25%, MS 30%, CS 20%, VCS 10%.
  3. Textural-class defaults when no numerical data are provided (e.g., “silt loam” → clay 0.15, silt 0.65, sand 0.20), then sub- divided by the same within-class proportions.

The 7-bin PSD is a dictionary of fractions that sums to 1.0. The resulting _source tag in the PSD object ("SSURGO sand subclasses" or "Kilmer-Alexander defaults") is carried through the calculation so the output report shows the provenance of the particle distribution.

Camp’s ideal settling basin efficiency

Camp (1946) showed that for an ideal quiescent settling basin with uniform horizontal flow, no short-circuiting, and a uniform particle input distribution over the depth, the fraction of particles of a given diameter $d$ that are trapped is:

$$\eta(d) = \min\!\left(1,\; \dfrac{V_s(d)}{V_o}\right), \quad V_o = \dfrac{Q}{A_s}$$

where $V_o$ is the overflow velocity (ft/s; the ratio of design inflow to basin surface area), $V_s(d)$ is the settling velocity for the representative diameter of the bin (ft/s, from Stokes or Rubey), and $A_s$ is the basin water-surface area (ft$^2$).

The overall weighted trap efficiency is the sum over the 7 USDA bins:

$$\eta_{total} = \sum_{i=1}^{7} f_i \cdot \eta_i$$

where $f_i$ is the incoming fraction of the $i$-th bin (from buildPSDFromSiteData) and $\eta_i$ is the per-bin trap efficiency. The per-bin results, overflow velocity, total efficiency, and PSD provenance are all returned in the calculateCampEfficiency() output object and are surfaced in the analysis report.

Camp’s equation — assumptions and conservatism

The Camp equation assumes an ideal basin: no short-circuiting, perfect plug flow, uniform particle entry across the full depth, and no re-suspension. Real basins under-perform Camp because short-circuiting, wind-driven surface currents, inlet jets, and flocculation all reduce the effective residence time. Real basins can also over-perform Camp for very fine material because flocculation turns individual clay particles into larger aggregates that settle faster than Stokes predicts for a single particle. In most engineering practice the Camp efficiency is treated as a conservative upper bound on the achievable design-basis trap efficiency of a properly baffled basin.

Worked example 3.4 — Camp efficiency for a Charlotte NC sediment basin

Given: Design inflow $Q = 10$ cfs; basin surface area $A_s = 10 \times 435 = 4{,}350$ ft$^2$ (NCDEQ rule); water temperature 20°C; SSURGO soil series with 34% sand / 32% silt / 34% clay (a clay-loam upland soil, representative of the Piedmont). No SSURGO sand subclass data; Kilmer-Alexander defaults apply.
Step 1 — Overflow velocity: $V_o = Q / A_s = 10 / 4{,}350 = 2.30\times 10^{-3}$ ft/s.
Step 2 — 7-bin PSD (Kilmer-Alexander defaults): clay 0.34, silt 0.32, sandVFS 0.051, sandFS 0.085, sandMS 0.102, sandCS 0.068, sandVCS 0.034. Sum = 1.000.
Step 3 — Per-bin settling velocities (at 20°C, SG 2.65, converted from m/s to ft/s): clay $V_s \approx 2.0\times 10^{-6}$ ft/s; silt $V_s \approx 2.9\times 10^{-4}$ ft/s; VFS $V_s \approx 2.6\times 10^{-2}$ ft/s; FS $V_s \approx 7.3\times 10^{-2}$ ft/s; MS $V_s \approx 1.7\times 10^{-1}$ ft/s; CS $V_s \approx 2.8\times 10^{-1}$ ft/s; VCS $V_s \approx 4.0\times 10^{-1}$ ft/s.
Step 4 — Per-bin efficiency $\eta_i = \min(1, V_s/V_o)$: clay 0.001; silt 0.126; VFS 1.0; FS 1.0; MS 1.0; CS 1.0; VCS 1.0. The 5 sand bins are all trapped fully; silt is partially trapped; clay is essentially untrapped.
Step 5 — Overall efficiency: $\eta_{total} = 0.34 \times 0.001 + 0.32 \times 0.126 + (0.051 + 0.085 + 0.102 + 0.068 + 0.034) \times 1.0$ $\approx 0.000 + 0.040 + 0.340 = 38.0\%.$
Interpretation: The clay-loam upland soil is clay-dominated, and clay is essentially immobile in the basin at this design flow. A NCDEQ-sized basin (435 sf/cfs) traps only ~38% of the incoming sediment on a mass basis when the source is clay-rich. The classical hardcoded 70% efficiency would have over-estimated trap performance by a factor of two for this case. This is precisely why SEDCAD4 has always used the full PSD approach and why the 2026 release of HydroComplete adopts it.

USDA SSURGO integration

Site soil data is pulled from USDA-NRCS Soil Data Access (SDA) through server/routes/soilData.js. The backend builds a WKT point or polygon from the project location and issues a POST to the SDA tabular service endpoint at sdmdataaccess.nrcs.usda.gov/Tabular/SDMTabularService/post.rest. The SDA query joins the four SSURGO tables required to retrieve surface-horizon soil properties for the dominant component of each map unit:

SELECT mapunit.mukey, mapunit.muname,
       component.compname, component.comppct_r, component.hydgrp,
       chorizon.hzdept_r, chorizon.hzdepb_r,
       chorizon.sandtotal_r, chorizon.silttotal_r, chorizon.claytotal_r,
       chorizon.sandvc_r, chorizon.sandco_r, chorizon.sandmed_r,
       chorizon.sandfine_r, chorizon.sandvf_r,
       chorizon.kwfact, chorizon.kffact, chorizon.om_r, chorizon.dbthirdbar_r,
       chtexturegrp.texture
FROM mapunit
INNER JOIN component ON component.mukey = mapunit.mukey
LEFT OUTER JOIN chorizon ON chorizon.cokey = component.cokey AND chorizon.hzdept_r = 0
LEFT OUTER JOIN chtexturegrp ON chtexturegrp.chkey = chorizon.chkey AND chtexturegrp.rvindicator = 'Yes'
WHERE component.majcompflag = 'Yes'
  AND mapunit.mukey IN (SELECT * FROM SDA_Get_Mukey_from_intersection_with_WktWgs84('__WKT__'))
ORDER BY mapunit.mukey, component.comppct_r DESC

The query is restricted to the surface horizon of the dominant component (majcompflag = 'Yes', hzdept_r = 0) so that sediment calculations reflect the erodible topsoil and not a deeper subsoil layer. The fields used by downstream calculations are:

The multiple-row SDA response is aggregated by map unit; fractions across multiple map units in a polygon AOI are area-weighted. The resulting soil properties replace the default SEDCAD4Engine lookup values and flow through both RUSLE and the Camp-equation basin calculations, so a project’s soil loss and basin efficiency reflect the actual SSURGO soil series rather than a generic textbook entry.

Sediment control structure design

Sediment basin (NCDEQ method)

Sediment basin surface area is sized to the North Carolina Erosion and Sediment Control Planning and Design Manual rule of 435 ft$^2$ of water surface per cfs of design peak flow (NCDEQ, 2013). Minimum depth is 3 ft, length-to- width ratio 2:1 minimum, forebay 25% of total volume, dewatering no more than 48 hours.

$$A_s = 435 \cdot Q_{design}, \quad V_{water} = A_s \cdot d_{min}$$

Six-month sediment storage is added to the water storage by converting the estimated sediment yield to volume at the specified bulk density. When SSURGO dbthirdbar_r is available it overrides the 80 lb/ft$^3$ default.

$$V_{sed} = \dfrac{Y \cdot A_{drain} \cdot 2000}{\gamma_{bulk}} \cdot 0.5$$

where $Y$ is sediment yield (tons/ac/yr), $A_{drain}$ is drainage area (ac), $\gamma_{bulk}$ is bulk density (lb/ft$^3$), and the 0.5 factor represents the 6-month accumulation. Trap efficiency is computed by the Camp equation (§3.4) whenever site PSD data is provided; otherwise the engine falls back to a weighted 3-bin method and, as a last resort, to the NCDEQ manual’s default 70%. All three methods are tagged in the output so the reviewer can identify the source of the reported efficiency.

Sediment trap (small drainage areas)

Sediment traps serve drainage areas up to 5 acres at 3,600 ft$^3$ per acre of wet storage, minimum depth 2 ft, length-to-width ratio 2:1, perforated-riser outlet. Dewatering time is 72 hours. These are temporary structures intended for the active phase of construction.

Silt fence

Silt fence is sized for sheet flow from small disturbed areas. The NCDEQ rule used by designSiltFence() is 100 linear feet of fence per 0.25 acre of contributing drainage area. Slope length is limited to 100 ft and maximum slope to 50% (2:1). The design output includes the fence length, post count at 6-ft spacing, embedment trench dimensions, and a TSS removal estimate based on Barrett et al. (1998) and the weighted 3-bin efficiency hardcoded for the silt-fence structure type.

Rock check dams

Rock check dams are sized for concentrated flow in temporary diversions, ditches, and channels draining disturbed areas. Maximum height is 2 ft. Spacing is computed so the toe of the upstream dam meets the crest elevation of the downstream dam: $S = H \times 100 / s\%$. The center notch is 1/3 of the channel width and 1/3 of the dam height; weir capacity of the notch is computed by the broad-crested weir form:

$$Q_{notch} = C_w\,L\,h^{3/2}, \quad C_w \approx 2.65 \text{ (rock check)}$$

The rock-check $C_w$ of 2.65 is lower than the 3.0–3.33 sharp-crested weir coefficient because of the porosity and roughness of the rock face. The engine computes rock quantity per dam assuming a trapezoidal cross-section at channel width and height, 3-ft effective thickness, and 165 lb/ft$^3$ rock unit weight.

Skimmer outlets

Basin dewatering is assumed through a floating skimmer that draws water from the top of the water column so that settled sediment is not re-entrained at the outlet. Design drawdown time is 48 hours for sediment basins and 72 hours for sediment traps. The engine does not size the skimmer orifice directly; it reports the required drawdown time as a design constraint.

Riprap sizing (Isbash method)

Riprap lining is sized by the Isbash method (Isbash, 1936; FHWA HEC-11, Brown & Clyde, 1989):

$$d_{50} = \dfrac{V^{2}}{2\,g\,(S_s - 1)\,C_s^{2}\,\mathrm{SF}}$$

where $d_{50}$ is the median stone size (ft), $V$ is design velocity (ft/s), $g = 32.2$ ft/s$^2$, $S_s = 2.65$ is the specific gravity of rock, $C_s$ is the Isbash stability coefficient (0.86 for high-turbulence conditions, 1.20 for low-turbulence), and $\mathrm{SF}$ is the safety factor. The engine defaults are $C_s = 0.86$ and $\mathrm{SF} = 1.2$, which are the conservative choice for concentrated-flow and outlet conditions. Riprap thickness is $2\,d_{50}$, with a minimum of 12 in.

Channel stability

The SEDCAD4 Engine’s channel stability routine (in the diversion channel analysis) compares applied tractive shear $\tau = \gamma\,R\,S$ against critical shear from one of two sources:

Required $d_{50}$ is obtained by rearranging the Shields form to a target safety factor, and the engine reports whether the proposed lining is stable, marginal, or requires an upsized riprap class.

Water Quality — The IDEAL Engine

The IDEAL Engine (source: src/engines/IDEALEngine.js) computes runoff pollutant loads, sizes BMPs for the water quality volume, evaluates treatment-train effects, and reports pollutant removal for fifteen BMP types. It is inspired by the Woolpert IDEAL methodology (“Integrated Design and Evaluation Assessment of Loadings”), adapted to the event-based data structures already produced by the Hydraflow Engine.

Water Quality Volume (WQV)

The water quality volume is the volume of runoff produced by the water-quality storm (typically 1.0” in North Carolina, 0.5” in the drier West, or per the applicable state rule). HydroComplete computes WQV using the Schueler (1987) volumetric runoff coefficient:

$$R_v = 0.05 + 0.009\,I$$
$$WQV = \dfrac{P \cdot R_v \cdot A \cdot 43{,}560}{12}$$

where $R_v$ is the dimensionless volumetric runoff coefficient, $I$ is site percent impervious (0–100), $P$ is the water-quality design rainfall depth (inches), $A$ is the drainage area (acres), and $WQV$ is the water quality volume (cubic feet). The 43,560 factor converts acre-inches to cubic feet.

Worked example 4.1 — WQV for a 5-ac, 60%-impervious site (1” storm)

$R_v = 0.05 + 0.009 \times 60 = 0.59.$
$WQV = (1.0 \times 0.59 \times 5 \times 43{,}560) / 12 = 10{,}701$ ft$^3 = 0.246$ ac-ft.

Buildup and washoff

Between storms, pollutants accumulate on impervious surfaces; each storm washes off a fraction of the accumulated mass. The IDEAL Engine implements the Sartor-Boyd style power-function buildup and power-function washoff (Sartor & Boyd, 1972; Alley & Smith, 1981):

$$M_{buildup}(t) = M_{max}\,(1 - e^{-k\,t})$$
$$W = M \cdot \min(1,\; a\,r^{b})$$

where $M_{buildup}$ is accumulated mass per unit area, $M_{max}$ is the saturation mass, $k$ is a land-use-specific buildup rate constant, $t$ is the antecedent dry period (days), $W$ is washoff mass, $M$ is the available buildup mass, $r$ is runoff depth (inches), and $a$, $b$ are pollutant- and land-use-specific washoff coefficients.

The engine’s default buildup and washoff parameters are calibrated for the southeastern Piedmont land-cover classes. Parameters can be overridden per project. The washoff formulation uses a fractional-washoff variant capped at 1.0 for storms large enough to remove the full accumulated load.

First flush analysis

analyzeFirstFlush() computes the fraction of the total storm pollutant load that appears in the first $f$ of the runoff volume (default $f = 0.20$). This supports sizing decisions for BMPs that target the first flush rather than the full WQV.

Treatment train effects

When two or more BMPs are arranged in series (either automatically by the BMPOptimizer search or by the engineer in the diagram), the combined removal for each pollutant is computed by the sequential-removal rule:

$$\eta_{total} = 1 - \prod_{i=1}^{n}(1 - \eta_i)$$

This rule assumes the residual concentration leaving one BMP is the untreated influent to the next and that no pollutant is added between BMPs. It is the standard treatment-train aggregation used by NCDEQ (2020) Section 3.3, ASCE/EWRI (2012), and the Int'l BMP Database (Geosyntec & Wright Water Engineers, 2020). It is conservative in the sense that it ignores any synergistic effects of upstream pretreatment, and it over-credits downstream BMPs when the upstream effluent is already at irreducible concentration (below which most BMPs cannot treat further; see Schueler, 2000).

Fifteen BMP types

HydroComplete’s BMP library combines the IDEALEngine.bmpLibrary catalog with the ConveyanceEngine BMP conveyance entries and the BMPOptimizer cost library. The list below gives the removal efficiencies actually implemented in the code, with the primary citation for each.

BMP removal efficiencies implemented in IDEALEngine (median values, as decimals).
BMPTSSTNTPBacteriaMetalsPrimary source
Dry extended detention0.600.250.350.500.45Int'l BMP DB (2020); Barrett et al. (2004)
Wet retention pond0.800.400.500.700.65NCDEQ (2020); Int'l BMP DB
Bioretention cell0.850.450.600.750.80Davis et al. (2009); Hunt & Lord (2006)
Rain garden0.850.450.600.750.80Davis et al. (2009)
Sand filter0.850.350.500.550.75Urbonas (1999); Int'l BMP DB
Constructed wetland0.850.350.450.750.60Hunt & Doll (2000); Kadlec & Wallace (2009)
Infiltration trench/basin0.900.400.550.700.85Schueler (1987); EPA (2021)
Permeable pavement0.900.450.600.650.85Brattebo & Booth (2003); Bean et al. (2007)
Green roof0.800.400.450.500.65Mentens et al. (2006); Berndtsson (2010)
Vegetated filter strip0.700.300.450.400.50Int'l BMP DB (2020); NCDEQ
Vegetated swale0.650.350.400.450.55Hunt et al. (2006); Int'l BMP DB
Grassed swale0.550.250.300.350.45Stagge et al. (2012); Int'l BMP DB
Bioswale (engineered media)0.800.450.550.600.70Davis et al. (2012)
Level spreader — filter0.750.300.400.450.55Hunt et al. (2006); Winston et al. (2011)
Cistern / harvesting (volume)Jones & Hunt (2010)

These are median values from the literature. Real BMP performance is highly site-, soil-, and storm-dependent, and the cited distributions have interquartile ranges of roughly ±15 percentage points around the medians. For regulatory submittals the engineer should verify that the state agency accepts these values (most do; NCDEQ Table 3-1 is the primary reference for North Carolina).

Sizing constraints

Each BMP in the library carries a set of sizing constraints that the engine checks before reporting a design. Examples include:

Annual probabilistic simulation

The IDEAL Engine ships with a 30-year historical rainfall statistics table (derived from NOAA GHCN-Daily summaries) for the same 19 cities as the Atlas-14 database. For each city the engine stores rain days per month, mean event depth, event-depth standard deviation, maximum observed dry-day count, and annual peak depths by return period. A stochastic series of rainfall events generated from these statistics can be used to run an event-by-event long-record simulation through a BMP under design evaluation.

The stochastic simulation is an event-series approximation, not a true continuous simulation. It produces annualized pollutant load reductions that are suitable for early-design screening and state water-quality compliance reporting, but it does not track soil moisture, antecedent precipitation between events at sub-daily resolution, or snow processes. For a full continuous simulation with soil moisture tracking and ET, see §4.10.

Land-use-specific buildup/washoff library

The original IDEAL Engine (§4.2) uses a single set of buildup/washoff coefficients calibrated to the southeastern Piedmont. Phase 1 replaces this with a differentiated library of 11 land-use categories, each carrying NSQD-calibrated parameters for six pollutants: TSS, TN, TP, bacteria, copper, and zinc. Five new EMC categories are introduced (parking, institutional, open-space, construction, agricultural) alongside the six original categories (residential-low, residential-medium, residential-high, commercial, industrial, roadway).

The buildup model is exponential saturation (Sartor & Boyd, 1972; Alley & Smith, 1981):

$$B(t) = B_{max}\bigl(1 - e^{-k\,t}\bigr)$$

where $B(t)$ is the accumulated pollutant mass per unit area at time $t$ (days of dry weather), $B_{max}$ is the saturation buildup mass, and $k$ is a first-order accumulation rate constant (day$^{-1}$). Each land-use/pollutant pair carries its own $B_{max}$ and $k$.

The washoff model is a power-law fraction of available buildup:

$$W = B_{avail} \cdot \min\!\bigl(1,\; a\,R^{\,b}\bigr)$$

where $B_{avail}$ is the mass available at the start of the event (from the buildup equation), $R$ is the runoff depth (inches), and $a$, $b$ are land-use- and pollutant-specific washoff coefficients. The $\min(1, \cdot)$ cap ensures washoff cannot exceed available mass.

Table 4.2 gives the calibrated parameters for four representative land uses. The full 11-category library is coded in createBuildupWashoffLibrary().

Buildup/washoff parameters for four representative land uses (six pollutants). Units: $B_{max}$ in lbs/ac, $k$ in day$^{-1}$, $a$ dimensionless, $b$ dimensionless.
Land usePollutant$B_{max}$$k$$a$$b$
Open-space TSS100.080.061.2
TN0.50.060.041.1
TP0.100.050.031.2
Bacteria80,0000.120.101.5
Cu0.020.050.021.0
Zn0.080.050.021.0
Residential-medium TSS400.180.151.4
TN2.00.120.081.2
TP0.380.100.061.3
Bacteria400,0000.250.201.9
Cu0.080.090.041.1
Zn0.400.090.041.1
Commercial TSS800.250.201.5
TN2.80.150.101.3
TP0.420.120.081.4
Bacteria350,0000.220.201.8
Cu0.120.120.051.2
Zn0.600.120.051.2
Roadway TSS1200.300.251.6
TN3.20.160.121.4
TP0.550.120.091.4
Bacteria400,0000.300.252.0
Cu0.180.120.061.2
Zn0.900.120.061.2

The gradient across land uses reflects physical reality: open-space sites have low $B_{max}$ values (little impervious accumulation) with slow buildup rates, while roadways and parking lots have high $B_{max}$ and fast buildup. Metal loadings (Cu, Zn) increase with traffic volume as expected from tire and brake-pad wear. Bacteria loading is highest in residential areas (pet waste) and agricultural land (livestock).

Sources: NSQD (Pitt et al., 2004; Maestre & Pitt, 2005/2008), Sartor & Boyd (1972) Table IV-1, USEPA (2002) NURP results, Alley & Smith (1981), USDA-NRCS agricultural NPS handbook, Novotny & Chesters (1981). Where published data were sparse (institutional, construction), parameters were interpolated from bracketing categories.

Worked example 4.2 — TSS load from a 3-ac commercial site, 5 dry days, 1.2” runoff

Buildup: $B(5) = 80 \times (1 - e^{-0.25 \times 5}) = 80 \times 0.713 = 57.1$ lbs/ac.
Washoff fraction: $\min(1,\; 0.20 \times 1.2^{1.5}) = \min(1,\; 0.263) = 0.263$.
Event TSS load: $W = 57.1 \times 0.263 \times 3 = 45.0$ lbs from the site.

BMP internal hydraulics

Phase 2 adds physics-based routing through three BMP types, replacing the flat percentage-removal model with methods that account for storage capacity, hydraulic residence time, and pollutant-specific kinetics. A dispatcher (routeThroughBMP()) routes bioretention, wet ponds, and constructed wetlands to their respective physics methods; all other BMP types fall back to the percentage-box model described in §4.5.

4.9.1  Bioretention — Darcy infiltration with underdrain

Bioretention routing (routeThroughBioretention()) computes three hydraulic components: media infiltration via Darcy’s law, underdrain outflow via the orifice equation, and overflow when ponding exceeds the maximum depth.

Media infiltration (Darcy):

$$Q_{media} = K_{sat} \times A \times \dfrac{h_{pond} + d_{media}}{d_{media}}$$

where $K_{sat}$ is the saturated hydraulic conductivity of the bioretention soil media (in/hr), $A$ is the filter surface area (ft$^2$), $h_{pond}$ is the ponding head (ft), and $d_{media}$ is the media depth (ft). The engine uses an average head of $h_{pond}/2 + d_{media}$ for the event.

Underdrain outflow (orifice):

$$Q_{ud} = C_d \times A_{orifice} \times \sqrt{2\,g\,h}$$

where $C_d$ is the orifice discharge coefficient (default 0.6), $A_{orifice}$ is the underdrain pipe cross-sectional area (ft$^2$), $g = 32.2$ ft/s$^2$, and $h$ is the head above the underdrain (approximated as $d_{media}/2$).

Storage and overflow: Available storage is the sum of media pore space (above current moisture content) and ponding volume:

$$V_{cap} = A \times d_{media} \times (\phi - \theta_{current}) + A \times h_{pond,\,max}$$

where $\phi$ is the media porosity and $\theta_{current}$ is the current media moisture content (tracked between events during continuous simulation; defaults to field capacity for single-event analysis). Inflow exceeding $V_{cap}$ is routed as untreated overflow.

Pollutant removal: Removal efficiency is a function of residence time per Davis (2008):

$$E = E_{max}\bigl(1 - e^{-\alpha\,t_{res}}\bigr)$$

where $t_{res}$ is the hydraulic residence time (hr) computed as treated volume divided by total outflow rate, $E_{max}$ is the asymptotic removal for the pollutant (e.g., 0.92 for TSS, 0.50 for TN), and $\alpha$ is a pollutant-specific rate constant. The blended removal for the whole event accounts for the untreated overflow fraction:

$$E_{blended} = E_{treated} \times \dfrac{V_{treated}}{V_{total}}$$

The engine returns treated/bypassed volumes, drawdown time, media storage, ponding storage, and post-event media moisture for continuous-simulation inter-event recovery tracking.

Bioretention residence-time removal parameters (from Davis, 2008).
Pollutant$E_{max}$$\alpha$ (hr$^{-1}$)
TSS0.920.50
TN0.500.20
TP0.650.30
Bacteria0.800.40
Metals0.900.45

Worked example 4.3 — Bioretention routing for a 1.0” WQV event

Given: 500 sf bioretention cell, $K_{sat} = 1.0$ in/hr, media depth 2.5 ft, max ponding 1.0 ft, porosity 0.40, field capacity 0.20, 6-in underdrain ($C_d = 0.6$), design volume 3,000 cf.
Media storage: $500 \times 2.5 \times (0.40 - 0.20) = 250$ cf.
Ponding storage: $500 \times 1.0 = 500$ cf.
Total capacity: $250 + 500 = 750$ cf < 3,000 cf → overflow = 2,250 cf.
Darcy rate: $Q_{media} = (1.0/12) \times 500 \times (0.5 + 2.5)/2.5 = 50.0$ cf/hr.
Underdrain rate: $A_{orifice} = \pi(0.25)^2 = 0.196$ ft$^2$; $Q_{ud} = 0.6 \times 0.196 \times \sqrt{2 \times 32.2 \times 1.25} = 1.06$ cf/hr.
Residence time: $t_{res} = 750 / (50.0 + 1.06) = 14.7$ hr.
TSS removal (treated fraction): $E = 0.92 \times (1 - e^{-0.50 \times 14.7}) = 0.92 \times 0.9994 = 91.9\%$.
TSS removal (blended): $91.9\% \times (750/3000) = 23.0\%$.

4.9.2  Wet pond — first-order decay

Wet pond routing (routeThroughWetPond()) uses the Kadlec & Knight (1996) first-order decay model. The treatment mechanism is sedimentation and biological uptake during the permanent-pool residence time. For each pollutant:

$$E = 1 - e^{-k\,t_{res}}$$

where $k$ is the first-order decay rate constant (min$^{-1}$) and $t_{res}$ is the hydraulic residence time (min). Default decay rates are:

First-order decay rates for wet pond routing (Kadlec & Knight, 1996).
Pollutant$k$ (min$^{-1}$)
TSS0.0015
TN0.0005
TP0.0008
Bacteria0.0020
Metals0.0010

Overflow occurs when the event inflow volume exceeds 1.5 times the permanent pool volume. The 1.5× factor reflects the live-storage zone above the permanent pool that is available before the emergency spillway activates. Overflow bypasses treatment and is blended with the treated fraction in the same manner as bioretention (§4.9.1).

The residence time for the permanent pool is estimated from the pool volume and the steady-state drawdown rate: $t_{res} = V_{pool} / Q_{out}$, where $Q_{out} = V_{pool} / (t_{drawdown,\,days} \times 24)$ and the default drawdown period is 14 days (the typical wet-pond design residence time).

4.9.3  Constructed wetland — Kadlec k-C* model (4 zones)

Constructed wetland routing (routeThroughWetland()) implements the Kadlec & Wallace (2009) k-C* model through four treatment zones in series: forebay (10% of area), deep pool (15%), shallow marsh (40%), and shallow land (35%). The governing equation for each zone is:

$$C_{out} = C^{*} + (C_{in} - C^{*})\,e^{-k\,A_{zone}/Q}$$

where $C^{*}$ is the irreducible background concentration (mg/L) below which the wetland cannot treat, $C_{in}$ is the influent concentration, $k$ is the areal decay rate constant (m/yr), $A_{zone}$ is the wetland zone area (m$^2$), and $Q$ is the hydraulic loading rate (m$^3$/yr). The effluent from one zone becomes the influent to the next.

Wetland k-C* parameters (Kadlec & Wallace, 2009).
Pollutant$k$ (m/yr)$C^{*}$ (mg/L)Default $C_{in}$ (mg/L)
TSS205.0150
TN101.02.5
TP120.050.40
Bacteria3010020,000
Metals150.0050.05

The four-zone series configuration captures the distinct treatment mechanisms that occur at different depth profiles in a properly designed constructed wetland: coarse sediment removal in the forebay, further settling in the deep pool, biological uptake and filtration in the shallow marsh, and polishing/denitrification in the shallow land zone. The zone-by-zone concentration trace is included in the result output so the engineer can evaluate the marginal benefit of each zone.

Worked example 4.4 — TSS removal through a 10,000-sf constructed wetland

Given: $C_{in,TSS} = 150$ mg/L, $C^{*} = 5.0$ mg/L, $k = 20$ m/yr, total area = 10,000 sf = 929 m$^2$, Q = 52 events/yr × 250 cf per event = 13,000 cf/yr = 368 m$^3$/yr.
Forebay (10%, $A = 92.9$ m$^2$): $C_{out} = 5.0 + (150 - 5.0) \times e^{-20 \times 92.9 / 368} = 5.0 + 145 \times e^{-5.05} = 5.0 + 145 \times 0.0064 = 5.93$ mg/L.
Deep pool (15%, $A = 139.4$ m$^2$): $C_{out} = 5.0 + 0.93 \times e^{-20 \times 139.4 / 368} = 5.0 + 0.93 \times 0.00049 = 5.0005$ mg/L.
Result: After just two zones the concentration is essentially at the irreducible limit. Overall TSS removal = $(1 - 5.0/150) \times 100 = 96.7\%$.

4.9.4  Routing dispatcher

The routeThroughBMP() dispatcher inspects the BMP type and routes accordingly:

This design allows physics-based routing to be added incrementally for additional BMP types without breaking existing analyses. The dispatcher merges BMP-library defaults with user-supplied overrides before passing the configuration to the routing method.

Continuous simulation with evapotranspiration

Phase 3 adds a multi-year continuous simulation mode (runContinuousSimulation()) that replaces the event-series approximation (§4.7) with a daily time-step model tracking soil moisture, evapotranspiration, moisture-adjusted curve numbers, land-use kinetics, and inter-event BMP recovery. This mode is appropriate for annualized load estimates that account for seasonal ET variation, antecedent conditions, and BMP drying between storms.

4.10.1  Hargreaves & Samani (1985) reference ET

Daily reference evapotranspiration ($ET_0$) is computed from the Hargreaves & Samani (1985) temperature-based method as recommended by FAO-56 (Allen et al., 1998) for situations where only temperature data are available:

$$ET_0 = 0.0023\,(T_{mean} + 17.8)\,(T_{max} - T_{min})^{0.5}\,R_a$$

where $T_{mean}$, $T_{max}$, $T_{min}$ are in °C (converted internally from the NOAA data stored in °F), and $R_a$ is the extraterrestrial radiation in mm/day equivalent. The engine stores monthly $T_{min}$/$T_{max}$ normals from NOAA GHCN-Daily (1991–2020 period) for 18 US cities.

Extraterrestrial radiation $R_a$ is computed from solar geometry following FAO-56 equations 21–25:

$$R_a = \dfrac{24 \times 60}{\pi}\,G_{sc}\,d_r\,\bigl[\omega_s\,\sin\varphi\,\sin\delta + \cos\varphi\,\cos\delta\,\sin\omega_s\bigr]$$

where $G_{sc} = 0.0820$ MJ/m$^2$/min is the solar constant, $d_r = 1 + 0.033\cos(2\pi J/365)$ is the inverse relative Earth–Sun distance (with $J$ = day of year), $\delta = 0.409\sin(2\pi J/365 - 1.39)$ is solar declination, $\varphi$ is station latitude (radians), and $\omega_s = \arccos[-\tan\varphi\,\tan\delta]$ is the sunset hour angle. The result in MJ/m$^2$/day is converted to mm/day by the factor 0.408.

Selected city temperature normals (NOAA GHCN-Daily 1991–2020, °F) and latitude.
CityLatitudeJan $T_{min}$/$T_{max}$Jul $T_{min}$/$T_{max}$
Charlotte, NC35.23°N30 / 5169 / 91
Chicago, IL41.88°N18 / 3267 / 84
Dallas, TX32.78°N36 / 5777 / 98
Seattle, WA47.61°N36 / 4756 / 76
Phoenix, AZ33.45°N44 / 6783 / 107
Minneapolis, MN44.98°N6 / 2465 / 84

4.10.2  Daily soil moisture balance

The daily soil moisture balance (dailySoilMoistureBalance()) tracks the volumetric water content $\theta$ of the root zone:

$$\theta_{t+1} = \theta_t + \dfrac{I_{inf}}{D_r} - \dfrac{ET_{act}}{D_r} - \dfrac{P_{erc}}{D_r}$$

where $I_{inf}$ is infiltration (in), $ET_{act}$ is actual evapotranspiration (in), $P_{erc}$ is deep percolation (in), and $D_r$ is the root-zone depth (in). Actual ET is scaled from reference ET by a crop coefficient and moisture availability factor:

$$ET_{act} = ET_0 \times K_{crop} \times \min\!\left(1,\;\dfrac{\theta - \theta_{wp}}{\theta_{fc} - \theta_{wp}}\right)$$

where $\theta_{wp}$ is the wilting point and $\theta_{fc}$ is field capacity. When $\theta \leq \theta_{wp}$, ET ceases. Infiltration is limited by the sum of the soil deficit below field capacity and the daily $K_{sat}$ capacity. Deep percolation drains at 50% of the excess above field capacity per time step.

Soil parameters are assigned per land use from Rawls et al. (1983):

Soil parameters per land use for continuous simulation (Rawls et al., 1983; ASCE Manual 87).
Land use$\phi$$\theta_{fc}$$\theta_{wp}$$K_{sat}$ (in/hr)$D_r$ (in)$K_{crop}$
Open-space0.450.300.121.0181.00
Residential-medium0.400.260.110.5120.70
Commercial0.350.220.100.280.30
Roadway0.300.200.100.160.10
Agricultural0.440.280.120.8160.90

4.10.3  Continuous CN adjustment

The traditional SCS CN method uses discrete antecedent moisture conditions (AMC I/II/III). The continuous simulation replaces this with a smooth, moisture-dependent CN scaling that responds to the actual soil moisture state each day:

$$CN_{adj} = CN \times \left(1 + \alpha\,\dfrac{\theta - \theta_{fc}}{\phi - \theta_{fc}}\right), \quad \theta > \theta_{fc}$$
$$CN_{adj} = CN \times \left(1 - \beta\,\dfrac{\theta_{fc} - \theta}{\theta_{fc} - \theta_{wp}}\right), \quad \theta \leq \theta_{fc}$$

where $\alpha = 0.4$ and $\beta = 0.3$ are calibration constants. The adjusted CN is clamped to the range [30, 98]. When the soil is saturated ($\theta \to \phi$), $CN_{adj}$ increases by up to 40%, producing higher runoff. When the soil is dry ($\theta \to \theta_{wp}$), $CN_{adj}$ decreases by up to 30%, reflecting higher infiltration capacity. This eliminates the discontinuous AMC jumps that plague event-series models.

4.10.4  Inter-event BMP recovery

Between storms, bioretention media dries via ET and gravity drainage, recovering storage capacity for the next event. The engine tracks a bmpMediaMoisture state variable that is updated on both event and dry days:

The drainage rate is $K_{sat} / d_{media}$ (moisture fraction per day) and the ET draw on the media is half the site $ET_0$ rate (reflecting partial exposure of the bioretention surface). This mechanism captures the seasonal variation in BMP performance: in summer, inter-event ET rapidly restores storage capacity, improving capture of the next storm. In winter, slow drying means the media may still be partially saturated when the next event arrives, reducing effective storage and increasing overflow.

4.10.5  Simulation output

The continuous simulation returns:

Worked example 4.5 — Continuous simulation, 3-year, Charlotte NC commercial site

Given: 5-ac commercial site, 50% impervious, CN = 75, Charlotte NC climate, 3-year simulation with bioretention BMP.
Method: Hargreaves ET from Charlotte monthly normals ($T_{min}$ = 30–69°F, $T_{max}$ = 51–91°F, lat = 35.23°N), daily soil moisture with Rawls (1983) commercial parameters ($\phi = 0.35$, $\theta_{fc} = 0.22$, $K_{sat} = 0.2$ in/hr), continuous CN adjustment ($\alpha = 0.4$, $\beta = 0.3$).
Output (typical): ~140 rain events over 3 years, annual average runoff ~22 ac-in, annual average ET ~38 in, overall TSS removal with bioretention ~55–65% (lower than single-event design because inter-event recovery is imperfect in wet seasons).

When to use continuous vs. event-based simulation

The single-event analysis (§4.7) is appropriate for regulatory submittals that evaluate BMP performance against the design water-quality storm. The continuous simulation (§4.10) is appropriate when the engineer needs annualized load estimates, seasonal performance variation, or wants to account for antecedent conditions and BMP recovery. Both modes share the same underlying buildup/washoff library (§4.8) and BMP routing methods (§4.9).

Conveyance and Open Channel Hydraulics

The Conveyance Engine (source: src/engines/ConveyanceEngine.js) handles 14 conveyance types: four closed conduits (RCP, CMP, HDPE, PVC), three open channels (concrete-lined, riprap-lined, earthen), five BMP conveyances (grassed swale, vegetated swale, bioswale, filter strip), and two overland flow types (sheet flow, shallow concentrated flow). Each type carries its Manning’s roughness coefficient, shape, and (where applicable) a pollutant removal profile.

Manning’s equation

All closed-conduit and open-channel flow uses Manning’s equation in its US-customary form (Chow, 1959; FHWA HDS-5, Schall et al., 2012):

$$V = \dfrac{1.486}{n}\,R^{2/3}\,S^{1/2}, \quad Q = V\,A$$

where $V$ is flow velocity (ft/s), $n$ is Manning’s roughness coefficient, $R$ is hydraulic radius (ft), $S$ is friction slope (ft/ft), and $A$ is cross-sectional area (ft$^2$). The 1.486 (often written 1.49 in the literature) is the unit-conversion factor from SI.

Typical $n$ values coded in the conveyance type library:

Manning’s n by conveyance type (from ConveyanceEngine.getConveyanceTypes()).
Type$n$ (typical)Source
RCP (smooth concrete)0.013Chow (1959); ASTM C76
CMP (corrugated metal)0.024AASHTO M36
HDPE (smooth interior)0.012AASHTO M294
PVC0.010ASTM D3034
Concrete-lined channel0.013Chow (1959)
Riprap-lined channel0.035FHWA HEC-15
Earthen channel (unlined)0.025Chow (1959)
Grassed swale0.035NRCS TR-55
Vegetated swale (dense)0.150Int'l BMP DB
Bioswale (engineered media)0.200Davis et al. (2012)
Sheet flow (dense grass)0.400NRCS TR-55 Table 3-1

Manning’s n is a range, not a point

Published Manning’s n values carry an intrinsic uncertainty of roughly ±20%. For RCP, Chow (1959) gives 0.011–0.015 depending on age, joint condition, and sediment. HydroComplete uses a single tabulated value per conveyance type for defaulting, but the engineer can override $n$ on a per-segment basis in the diagram. For flood studies or design velocity calculations the engineer should consider sensitivity to $n$ rather than treating the default as a fixed constant.

Pipe full-flow capacity

For a circular pipe flowing full, $A = \pi D^2 / 4$ and $R = D / 4$. Manning’s equation collapses to:

$$Q_{full} = \dfrac{1.486}{n}\,\dfrac{\pi D^{2}}{4}\,\left(\dfrac{D}{4}\right)^{2/3}\,S^{1/2}$$

Partial flow and normal depth

Partial-flow depth in a circular pipe is found by iteratively solving Manning’s equation with the partial-area and partial-hydraulic-radius relations. The engine uses a bisection solver over depth ratio $d/D$; it terminates on either flow convergence within 1% or after a fixed number of iterations.

For trapezoidal channels the HydraulicEngine core solves normal depth by bisection on the full Manning’s equation (see src/core/HydraulicEngine.js):

$$f(y) = \dfrac{1.486}{n}\,A(y)\,R(y)^{2/3}\,S^{1/2} - Q_{target}$$

with $A(y) = y(b + zy)$, $P(y) = b + 2y\sqrt{1 + z^2}$, $R(y) = A/P$. The bisection tolerance is $10^{-8}$ on relative flow error.

Critical depth and Froude number

The HydraulicEngine reports the Froude number for every normal-depth calculation as a flow-regime indicator. For a trapezoidal section:

$$\mathrm{Fr} = \dfrac{V}{\sqrt{g\,D_h}}, \quad D_h = \dfrac{A}{T}$$

where $D_h$ is hydraulic depth (ft) and $T$ is top width (ft). $\mathrm{Fr} < 1$ indicates subcritical flow; $\mathrm{Fr} > 1$ indicates supercritical flow; $\mathrm{Fr} = 1$ is critical flow. The engine computes critical depth $y_c$ by solving $Q^2\,T = g\,A^3$ for the channel geometry.

Hydraulic grade line (HGL) profile

The Conveyance Engine computes HGL and EGL profiles through a pipe network by walking upstream from a user-supplied tailwater boundary (FHWA HDS-5, Schall et al., 2012). For each pipe segment, friction loss is computed from Manning’s form:

$$h_f = \left(\dfrac{n\,Q}{1.486\,A\,R^{2/3}}\right)^{2}\,L$$

Minor losses (entrance, exit, bend, junction) are added where specified. Each pipe end is tagged as surcharged if the computed HGL exceeds the pipe crown elevation. The engine reports $HGL_{up}$, $HGL_{down}$, $EGL_{up}$, $EGL_{down}$, velocity head, and surcharge status for every segment.

Gutter flow and inlet capacity

Inlet hydraulics follow FHWA HEC-22 (Brown et al., 2013) for street drainage design. Gutter flow uses the modified Izzard form of Manning’s equation for a triangular gutter section:

$$Q_g = \dfrac{0.56}{n}\,S_x^{5/3}\,S_L^{1/2}\,T^{8/3}$$

where $S_x$ is cross slope, $S_L$ is longitudinal slope, $T$ is spread width (ft), and $n$ is gutter Manning’s n (typically 0.016 for concrete per HEC-22). The grate-inlet capture efficiency is built from the front-gutter fraction $E_o$:

$$E_o = 1 - \left(1 - \dfrac{W}{T}\right)^{8/3}$$

where $W$ is grate width (ft) and $T$ is spread. The engine also implements the splash-over velocity check and the side-flow factor $R_s$ per HEC-22 Equations 4-19 and 4-20. Curb-opening inlet capacity and inlet-in-sag forms are included with HEC-22 standard coefficients.

Worked example 5.1 — 18-inch RCP partial flow

Given: 18” RCP, $n = 0.013$, slope $S = 0.010$ ft/ft, design flow $Q = 12$ cfs.
Full-flow capacity: $D = 1.5$ ft, $A_{full} = \pi (1.5)^2 / 4 = 1.767$ ft$^2$, $R_{full} = D/4 = 0.375$ ft, $Q_{full} = (1.486/0.013)(1.767)(0.375^{2/3})(0.010^{1/2}) = 114.3 \times 1.767 \times 0.520 \times 0.1000 = 10.5$ cfs.
Result: The design flow (12 cfs) exceeds the full-flow capacity (10.5 cfs); the pipe will surcharge. The engine’s HGL profile will flag this segment as surcharged and the engineer should upsize to 24” RCP or steepen the slope.

Hydraulic Stability and Riprap

Channel and riprap stability analysis appears in both the SEDCAD4Engine (diversion channel and outlet protection designs) and the HydraulicEngine core. This chapter consolidates the relevant formulas.

Applied tractive shear stress

For steady uniform flow the applied bed shear stress is (Chow, 1959):

$$\tau_0 = \gamma\,R\,S$$

where $\tau_0$ is applied shear stress (lb/ft$^2$), $\gamma = 62.4$ lb/ft$^3$ for water, $R$ is hydraulic radius (ft), and $S$ is the energy slope (ft/ft). On the outside of channel bends the local shear is amplified; FHWA HEC-15 (Kilgore & Cotton, 2005) uses the bend factor $K_b = 2.0\,(R_c/T)^{-0.39}$ for radius-of-curvature-to-top-width ratios between 2 and 10.

Critical shear for granular beds — Shields parameter

For a non-cohesive granular bed the Shields (1936) criterion gives the critical tractive force at which particles begin to move:

$$\tau_c = \tau^{*}_{c}\,(\gamma_s - \gamma)\,d_{50}$$

where $\tau^{*}_c$ is the dimensionless critical Shields parameter (0.03–0.06 for natural sand and gravel depending on particle Reynolds number; HydroComplete uses 0.06 as the conservative design value), $\gamma_s = 165$ lb/ft$^3$ for riprap, and $d_{50}$ is the median stone size (ft).

Rearranging for the required stone size at a target safety factor $\mathrm{SF}$ yields:

$$d_{50,\,req} = \dfrac{\mathrm{SF}\,\tau_0}{\tau^{*}_{c}\,(\gamma_s - \gamma)}$$

Isbash velocity form

For velocity-controlled riprap sizing (outlet aprons, plunge pools, concentrated-flow dissipators) the Isbash (1936) velocity form is more convenient than the shear form because the primary input is design velocity rather than energy slope. The Isbash equation is given in §3.7; the default stability coefficient $C_s = 0.86$ and safety factor $\mathrm{SF} = 1.2$ correspond to high-turbulence outlet conditions.

Permissible velocity — Fortier & Scobey

For grass-lined, earthen, and cohesive-lined channels HydroComplete uses the classic Fortier & Scobey (1926) permissible velocity table (as adopted by USDA-SCS). Permissible velocities range from roughly 1.5 ft/s (fine sand) to 6 ft/s (cemented gravel with colloids). The engine checks design velocity against the permissible value for the specified lining type and flags any exceedance.

Plunge pool and outlet protection

HydroComplete’s designPlungePool() implements the USBR Engineering Monograph No. 25 scour depth formula and the FHWA HEC-14 (Thompson & Kilgore, 2006) outlet protection guidelines:

$$D_p = 4.26\,\dfrac{Q^{0.22}}{W^{0.04}}\,H_d^{0.225}$$

where $D_p$ is the scour pool depth (ft), $Q$ is design discharge (cfs), $W$ is jet width at impact (ft; for a circular pipe, the pipe diameter), and $H_d$ is the drop height from invert to pool floor (ft). The pool length is taken as $L_p = \max(10\,D_p,\ 4D)$ and the width as $W_p = \max(3D,\ L_p/3)$. Pool floor riprap is sized by the Isbash form from the pipe outlet velocity.

For riprap aprons at pipe outlets under subcritical tailwater, the apron length uses the FHWA HEC-14 Froude-number dependency:

$$L_a = \begin{cases} \max(5D,\ 6\text{ ft}), & \mathrm{Fr} \leq 2.5 \\ 5D + D(\mathrm{Fr} - 2.5), & \mathrm{Fr} > 2.5 \end{cases}$$

with downstream apron width $W_a = \max(3D + 0.4 L_a,\ 6\text{ ft})$. The engine reports the apron length, flared width, and riprap gradation requirements (AASHTO M288 Class 2 geotextile under-layer, trapezoidal flared shape, full channel with 2-ft extensions beyond the toe).

BMP Optimization

The BMPOptimizer (source: src/core/BMPOptimizer.js) provides cost-effective BMP selection: single-BMP ranking, two- and three-BMP treatment train search, and lifecycle cost analysis. All monetary values are in 2024 US dollars, escalated from the original literature using the ENR Construction Cost Index (CCI ratio of approximately 1.18 applied to pre-2020 sources).

Cost library

Each BMP in the optimizer carries three cost components: construction cost per square foot of BMP footprint, annual maintenance as a percent of construction cost, and opportunity cost of the land it occupies. The default values are drawn from Weiss et al. (2007), US EPA (2021), NCDEQ (2020), and the Int'l BMP Database (Geosyntec & Wright Water Engineers, 2020).

BMP default cost components (2024 USD; from BMPOptimizer.defaultBMPLibrary).
BMPConstr. $/sfAnnual maint. (%)Land $/sfSizing factor
Bioretention28.005%5.001.0
Constructed wetland12.002%5.002.5
Wet pond8.503%5.003.0
Dry pond5.503%5.002.0
Sand filter35.008%5.000.8
Permeable pavement18.004%0.000.0 (pavement is the BMP)
Grassed swale4.006%3.001.5
Green roof30.002%0.000.0
Infiltration basin10.006%5.001.2
Level spreader — filter15.004%4.001.8

Lifecycle cost (net present value)

BMP lifecycle cost is reported as the net present value of capital plus maintenance over a 20-year analysis period at a 5% discount rate (defaults; both are user-adjustable):

$$\mathrm{NPV} = C_{const} + C_{land} + M \cdot \dfrac{1 - (1 + r)^{-T}}{r}$$

where $C_{const}$ is construction cost, $C_{land}$ is the opportunity cost of the land occupied, $M$ is annual maintenance cost, $r$ is the annual discount rate, and $T$ is the analysis period in years. The annuity factor $[1 - (1 + r)^{-T}]/r$ is the standard present-worth-of-annuity factor for a uniform-payment series.

Cost-effectiveness ranking

The optimizer ranks single BMPs by cost per pound of TSS removed over the full lifecycle:

$$\dfrac{\$}{\text{lb TSS}} = \dfrac{\mathrm{NPV}}{L_{TSS} \cdot \eta_{TSS} \cdot T}$$

where $L_{TSS}$ is the annual TSS load entering the BMP (lbs/yr) and $\eta_{TSS}$ is the BMP’s TSS removal efficiency. The result is a ranked table from lowest to highest cost per lb removed.

Treatment train search

For treatment trains of two or three BMPs in series, the optimizer enumerates candidate pairs (and triplets), computes combined sequential removal efficiencies using the $1 - \prod(1 - \eta_i)$ rule (Chapter 4), and evaluates the total lifecycle cost. Each BMP in a train is sized at 60% of the WQV footprint (a split sizing heuristic that reflects the reduced load on each stage). The best train is the one that meets the removal targets at the lowest NPV.

The optimizer respects a set of compatibility constraints (e.g., an infiltration basin will not be placed downstream of a pond whose effluent is already effectively treated; see the code for the full set). Trains that violate these constraints are filtered before the search.

Regulatory Compliance

The ComplianceChecker (source: src/core/ComplianceChecker.js) evaluates analysis results against state regulatory configurations. The currently configured states are North Carolina (NCDEQ), South Carolina (DHEC), and Virginia (DEQ). Each state configuration defines the regulatory authority, the minimum removal targets by pollutant and development type, volume-control and peak-flow requirements, and analysis-storm requirements.

Checks performed

  1. TSS removal — computed from treatment-train sequential removal and compared against the state minimum (e.g., NC 85% for post-construction in the 20-coastal-counties rule area).
  2. TN and TP removal — per state nutrient criteria (e.g., NC Jordan Lake / Falls Lake targets).
  3. Volume control for the water-quality storm — typically 1” for North Carolina. The checker verifies that an infiltration- credited BMP is present and flags sites with no volume-reduction credit for review.
  4. Peak flow attenuation — for each required return-period storm in the state configuration (e.g., 1-yr, 10-yr, 25-yr), the checker verifies that detention is provided and that post-development peaks do not exceed pre-development peaks.
  5. Erosion control — tolerable soil loss — computed RUSLE loss is compared against the USDA NRCS tolerable T of 5 tons/ac/yr; a higher limit is flagged as failing.
  6. BMP drawdown times — bioretention 48 hr; infiltration trench 72 hr; sand filter 40 hr; sediment basin dewatering 48–72 hr. Each is checked against the state-accepted maximum.

Output

The compliance report is a structured object: state name, regulatory authority, development type, list of criteria (each with required value, actual value, PASS/FAIL/REVIEW/INCOMPLETE status, and the authority citation), list of warnings, and list of recommendations. For failing criteria the checker generates actionable recommendations (e.g., “Treatment train with bioretention + grassed swale can increase combined TSS removal to 90%”).

Limitations of the compliance module

The ComplianceChecker evaluates against published state rules as of the configuration file date. State rules change; the engineer is responsible for verifying that the state configuration reflects the latest regulatory language. HydroComplete does not substitute for a regulatory pre-submittal meeting with the permitting agency. A PASS from the ComplianceChecker is necessary but not sufficient for permit approval.

Known Limitations and Scope

This chapter is deliberately blunt. HydroComplete Pro is a competent event-based stormwater analysis platform built on published methods. It is not a full-featured hydraulic or sediment-transport modeling suite. The items below are the most important boundaries of what the tool can and cannot do.

Not implemented in the current release

Where other tools are more authoritative

Professional judgment required

Every engineering analysis in HydroComplete Pro needs professional judgment to interpret. Specifically:

Not a substitute

HydroComplete Pro is not a substitute for a site-specific geotechnical investigation, a topographic survey, a field reconnaissance of the drainage network, or a regulatory pre-submittal meeting. It is a calculation engine. The engineer is responsible for the physical reality behind the numbers.

References

  1. Ackers, P., & White, W. R. (1973). Sediment transport: new approach and analysis. Journal of the Hydraulics Division, ASCE, 99(HY11), 2041–2060.
  2. Allen, R. G., Pereira, L. S., Raes, D., & Smith, M. (1998). Crop Evapotranspiration: Guidelines for Computing Crop Water Requirements. FAO Irrigation and Drainage Paper No. 56, Food and Agriculture Organization, Rome.
  3. Alley, W. M., & Smith, P. E. (1981). Estimation of accumulation parameters for urban runoff quality modeling. Water Resources Research, 17(6), 1657–1664.
  4. ASCE/EWRI. (2012). International Stormwater BMP Database. American Society of Civil Engineers.
  5. Barrett, M. E., Walsh, P. M., Malina, J. F., & Charbeneau, R. J. (1998). Performance of vegetative controls for treating highway runoff. Journal of Environmental Engineering, 124(11), 1121–1128.
  6. Barrett, M. E. (2004). Performance and design of vegetated BMPs in the highway environment. Center for Research in Water Resources, University of Texas at Austin, Report 4605-1.
  7. Bean, E. Z., Hunt, W. F., & Bidelspach, D. A. (2007). Field survey of permeable pavement surface infiltration rates. Journal of Irrigation and Drainage Engineering, 133(3), 249–255.
  8. Berndtsson, J. C. (2010). Green roof performance towards management of runoff water quantity and quality: a review. Ecological Engineering, 36(4), 351–360.
  9. Bonnin, G. M., Martin, D., Lin, B., Parzybok, T., Yekta, M., & Riley, D. (2006–2011). NOAA Atlas 14: Precipitation-Frequency Atlas of the United States, Volumes 1–11. NOAA National Weather Service, Silver Spring, MD.
  10. Boyce, R. C. (1975). Sediment routing with sediment delivery ratios. In Present and Prospective Technology for Predicting Sediment Yields and Sources, USDA Agricultural Research Service, ARS-S-40, 61–65.
  11. Brattebo, B. O., & Booth, D. B. (2003). Long-term stormwater quantity and quality performance of permeable pavement systems. Water Research, 37(18), 4369–4376.
  12. Brown, S. A., & Clyde, E. S. (1989). Design of Riprap Revetment. FHWA Hydraulic Engineering Circular No. 11 (HEC-11), FHWA-IP-89-016, Federal Highway Administration.
  13. Brown, S. A., Schall, J. D., Morris, J. L., Doherty, C. L., Stein, S. M., & Warner, J. C. (2013). Urban Drainage Design Manual, 3rd edition. FHWA Hydraulic Engineering Circular No. 22 (HEC-22), FHWA-NHI-10-009, Federal Highway Administration.
  14. Camp, T. R. (1946). Sedimentation and the design of settling tanks. Transactions of the American Society of Civil Engineers, 111, 895–936.
  15. Chow, V. T. (1959). Open-Channel Hydraulics. McGraw-Hill, New York.
  16. Chow, V. T., Maidment, D. R., & Mays, L. W. (1988). Applied Hydrology. McGraw-Hill, New York.
  17. Cunge, J. A. (1969). On the subject of a flood propagation computation method (Muskingum method). Journal of Hydraulic Research, 7(2), 205–230.
  18. Davis, A. P. (2008). Field performance of bioretention: hydrology impacts. Journal of Hydrologic Engineering, 13(2), 90–95.
  19. Davis, A. P., Hunt, W. F., Traver, R. G., & Clar, M. (2009). Bioretention technology: overview of current practice and future needs. Journal of Environmental Engineering, 135(3), 109–117.
  20. Davis, A. P., Stagge, J. H., Jamil, E., & Kim, H. (2012). Hydraulic performance of grass swales for managing highway runoff. Water Research, 46(20), 6775–6786.
  21. Dietrich, W. E. (1982). Settling velocity of natural particles. Water Resources Research, 18(6), 1615–1626.
  22. Fair, G. M., & Geyer, J. C. (1954). Water Supply and Waste-Water Disposal. John Wiley & Sons, New York. (Table 29-2 used for settling-velocity benchmarks.)
  23. Federal Aviation Administration (FAA). (1970). Airport Drainage. Advisory Circular AC 150/5320-5B, US Department of Transportation.
  24. Fortier, S., & Scobey, F. C. (1926). Permissible canal velocities. Transactions of the American Society of Civil Engineers, 89, 940–984.
  25. Gee, G. W., & Bauder, J. W. (1986). Particle-size analysis. In A. Klute (Ed.), Methods of Soil Analysis, Part 1, 2nd edition, American Society of Agronomy, 383–411.
  26. Geosyntec Consultants & Wright Water Engineers. (2020). International Stormwater BMP Database Summary Statistics. Water Research Foundation.
  27. Hunt, W. F., & Doll, B. A. (2000). Designing stormwater wetlands for small watersheds. North Carolina State University Cooperative Extension, AG-588-2.
  28. Hunt, W. F., & Lord, W. G. (2006). Bioretention performance, design, construction, and maintenance. North Carolina State University Cooperative Extension, AG-588-5.
  29. Hargreaves, G. H., & Samani, Z. A. (1985). Reference crop evapotranspiration from temperature. Applied Engineering in Agriculture, 1(2), 96–99.
  30. Hunt, W. F., Jarrett, A. R., Smith, J. T., & Sharkey, L. J. (2006). Evaluating bioretention hydrology and nutrient removal at three field sites in North Carolina. Journal of Irrigation and Drainage Engineering, 132(6), 600–608.
  31. Isbash, S. V. (1936). Construction of dams by depositing rock in running water. Transactions, Second Congress on Large Dams, Washington DC, 5, 123–136.
  32. Jones, M. P., & Hunt, W. F. (2010). Performance of rainwater harvesting systems in the southeastern United States. Resources, Conservation and Recycling, 54(10), 623–629.
  33. Kadlec, R. H., & Knight, R. L. (1996). Treatment Wetlands. CRC Press, Boca Raton, FL.
  34. Kadlec, R. H., & Wallace, S. D. (2009). Treatment Wetlands, 2nd edition. CRC Press, Boca Raton, FL.
  35. Kilgore, R. T., & Cotton, G. K. (2005). Design of Roadside Channels with Flexible Linings, 3rd edition. FHWA Hydraulic Engineering Circular No. 15 (HEC-15), FHWA-NHI-05-114, Federal Highway Administration.
  36. Kilmer, V. J., & Alexander, L. T. (1949). Methods of making mechanical analyses of soils. Soil Science, 68(1), 15–24.
  37. Kindsvater, C. E., & Carter, R. W. (1957). Discharge characteristics of rectangular thin-plate weirs. Journal of the Hydraulics Division, ASCE, 83(HY6). Also published as USGS Water-Supply Paper 1453.
  38. King, H. W., & Brater, E. F. (1996). Handbook of Hydraulics, 7th edition. McGraw-Hill, New York.
  39. Kirpich, Z. P. (1940). Time of concentration of small agricultural watersheds. Civil Engineering, 10(6), 362.
  40. Lane, E. W., & Koelzer, V. A. (1953). Density of sediments deposited in reservoirs. Report No. 9, St. Paul U.S. Engineer District Subcommittee on Sedimentation.
  41. Maestre, A., & Pitt, R. (2005). The National Stormwater Quality Database, Version 1.1: a compilation and analysis of EPA rain zone 3 and 5 data. Report to US EPA, University of Alabama.
  42. McCool, D. K., Brown, L. C., Foster, G. R., Mutchler, C. K., & Meyer, L. D. (1987). Revised slope steepness factor for the Universal Soil Loss Equation. Transactions of the ASAE, 30(5), 1387–1396.
  43. Mentens, J., Raes, D., & Hermy, M. (2006). Green roofs as a tool for solving the rainwater runoff problem in the urbanized 21st century? Landscape and Urban Planning, 77(3), 217–226.
  44. Meyer-Peter, E., & Müller, R. (1948). Formulas for bed-load transport. Proceedings of the 2nd Meeting of the IAHR, Stockholm, 39–64.
  45. North Carolina Department of Environmental Quality (NCDEQ). (2013). Erosion and Sediment Control Planning and Design Manual. NCDEQ Division of Energy, Mineral & Land Resources.
  46. North Carolina Department of Environmental Quality (NCDEQ). (2020). Stormwater Design Manual. NCDEQ Division of Energy, Mineral & Land Resources.
  47. NRCS (Natural Resources Conservation Service). (1986). Urban Hydrology for Small Watersheds, TR-55, 2nd edition. USDA-NRCS, Washington DC.
  48. NRCS. (2004). National Engineering Handbook, Part 630, Chapter 10: Estimation of Direct Runoff from Storm Rainfall. USDA-NRCS, Washington DC.
  49. Novotny, V., & Chesters, G. (1981). Handbook of Nonpoint Pollution: Sources and Management. Van Nostrand Reinhold, New York.
  50. NRCS. (2007). National Engineering Handbook, Part 630, Chapter 16: Hydrographs. USDA-NRCS, Washington DC.
  51. Perica, S., Martin, D., Pavlovic, S., Roy, I., St. Laurent, M., Trypaluk, C., Unruh, D., Yekta, M., & Bonnin, G. (2013). NOAA Atlas 14, Volume 9 — Southeastern States. NOAA National Weather Service.
  52. Pitt, R., & Voorhees, J. (2010). SLAMM, the Source Loading and Management Model. University of Alabama.
  53. Pitt, R., Maestre, A., & Morquecho, R. (2004). The National Stormwater Quality Database (NSQD), version 1.1. In Proceedings, 1st Annual Stormwater Management Research Symposium, University of Central Florida, Orlando, 13–51.
  54. Ponce, V. M. (1989). Engineering Hydrology: Principles and Practices. Prentice Hall, Englewood Cliffs, NJ.
  55. Rawls, W. J., Brakensiek, D. L., & Saxton, K. E. (1983). Estimation of soil water properties. Transactions of the ASAE, 25(5), 1316–1320 & 1328.
  56. Renard, K. G., Foster, G. R., Weesies, G. A., McCool, D. K., & Yoder, D. C. (1997). Predicting Soil Erosion by Water: A Guide to Conservation Planning with the Revised Universal Soil Loss Equation (RUSLE). USDA Agriculture Handbook No. 703.
  57. Roehl, J. W. (1962). Sediment source areas, delivery ratios and influencing morphological factors. International Association of Scientific Hydrology Publication 59, 202–213.
  58. Rossman, L. A. (2015). Storm Water Management Model User’s Manual, Version 5.1. EPA/600/R-14/413b, US Environmental Protection Agency.
  59. Rouse, H. (1938). Fluid Mechanics for Hydraulic Engineers. McGraw-Hill, New York. (Reprinted Dover, 1961.)
  60. Rubey, W. W. (1933). Settling velocities of gravel, sand, and silt particles. American Journal of Science, 25, 325–338.
  61. Sartor, J. D., & Boyd, G. B. (1972). Water Pollution Aspects of Street Surface Contaminants. EPA-R2-72-081, US Environmental Protection Agency.
  62. Schall, J. D., Thompson, P. L., Zerges, S. M., Kilgore, R. T., & Morris, J. L. (2012). Hydraulic Design of Highway Culverts, 3rd edition. FHWA Hydraulic Design Series No. 5 (HDS-5), FHWA-HIF-12-026, Federal Highway Administration.
  63. Schueler, T. R. (1987). Controlling Urban Runoff: A Practical Manual for Planning and Designing Urban BMPs. Metropolitan Washington Council of Governments.
  64. Schueler, T. R. (2000). Irreducible Pollutant Concentrations Discharged from Stormwater Practices. Center for Watershed Protection.
  65. Sherman, L. K. (1932). Streamflow from rainfall by the unit-graph method. Engineering News-Record, 108, 501–505.
  66. Shields, A. (1936). Application of Similarity Principles and Turbulence Research to Bed-Load Movement. Mitteilungen der Preussischen Versuchsanstalt für Wasserbau und Schiffbau, Berlin. (English translation, Ott & van Uchelen, Caltech.)
  67. Soil Survey Staff. (2017). Soil Survey Manual. USDA Agriculture Handbook No. 18. US Government Printing Office.
  68. Stagge, J. H., Davis, A. P., Jamil, E., & Kim, H. (2012). Performance of grass swales for improving water quality from highway runoff. Water Research, 46(20), 6731–6742.
  69. Stokes, G. G. (1851). On the effect of the internal friction of fluids on the motion of pendulums. Transactions of the Cambridge Philosophical Society, 9, 8–106.
  70. Thompson, P. L., & Kilgore, R. T. (2006). Hydraulic Design of Energy Dissipators for Culverts and Channels, 3rd edition. FHWA Hydraulic Engineering Circular No. 14 (HEC-14), FHWA-NHI-06-086, Federal Highway Administration.
  71. UNHSC (University of New Hampshire Stormwater Center). (2012). UNHSC Annual Report.
  72. Urbonas, B. R. (1999). Design of a sand filter for stormwater quality enhancement. Water Environment Research, 71(1), 102–113.
  73. US Army Corps of Engineers (USACE). (1994). Flood-Runoff Analysis. Engineering Manual EM 1110-2-1417.
  74. US Army Corps of Engineers (USACE). (2000). Hydrologic Modeling System HEC-HMS Technical Reference Manual. CPD-74B.
  75. US Army Corps of Engineers (USACE). (2024). HEC-RAS Hydraulic Reference Manual, Version 6.5. Hydrologic Engineering Center, Davis CA.
  76. US Environmental Protection Agency (US EPA). (2021). Stormwater Best Management Practice Cost Model.
  77. Warner, R. C., Schwab, P. J., & Marshall, D. J. (1998). SEDCAD4 for Windows User's Manual. Civil Software Design, Lexington KY.
  78. Weiss, P. T., Gulliver, J. S., & Erickson, A. J. (2007). Cost and pollutant removal of storm-water treatment practices. Journal of Water Resources Planning and Management, 133(3), 218–229.
  79. White, F. M. (2006). Viscous Fluid Flow, 3rd edition. McGraw-Hill. (Water property tables.)
  80. Williams, J. R. (1975). Sediment-yield prediction with Universal Equation using runoff energy factor. In Present and Prospective Technology for Predicting Sediment Yields and Sources, USDA-ARS, ARS-S-40, 244–252.
  81. Winston, R. J., Hunt, W. F., Osmond, D. L., Lord, W. G., & Woodward, M. D. (2011). Field evaluation of four level spreader-vegetative filter strips to improve urban storm-water quality. Journal of Irrigation and Drainage Engineering, 137(3), 170–182.
  82. Yang, C. T. (1973). Incipient motion and sediment transport. Journal of the Hydraulics Division, ASCE, 99(HY10), 1679–1704.

Appendix A — Software Architecture

HydroComplete Pro is a single-page web application with an optional server backend. The layout as of build 2026.04 is:

No single engine file exceeds ~2,500 lines. All calculation methods return a formulaSteps array alongside numerical results; each step carries the equation (as a LaTeX string), the substituted values, the computed result, and a citation. This is the data structure that the frontend displays with KaTeX on every analysis page.

Appendix B — Glossary of Symbols and Abbreviations

Symbols used in this manual.
SymbolMeaningTypical units
$A$Area (drainage area, cross-section area, surface area)ac, ft$^2$, mi$^2$
$A_s$Basin surface areaft$^2$
$B_{max}$Saturation pollutant buildup mass per unit arealbs/ac
$C$RUSLE cover and management factor; or weir coefficient $C_w$; or concentration—, mg/L
$C^{*}$Irreducible background concentration (Kadlec k-C* model)mg/L
$C_d$Orifice discharge coefficient
$C_v$V-notch weir discharge coefficient
$C_s$Isbash riprap stability coefficient
$c$Kinematic wave celerityft/s
$CN$SCS curve number
$D$Pipe diameterft, in
$d$Particle diameter; flow depthmm, ft
$D_r$Root-zone depthin
$d_{50}$Median riprap or bed-material sizeft, in
$E_{max}$Asymptotic maximum BMP removal efficiency
$ET_0$Reference evapotranspiration (Hargreaves)mm/day, in/day
$\eta$Trap or removal efficiency%
$f_i$Fraction of PSD in bin $i$
$\mathrm{Fr}$Froude number
$g$Gravitational accelerationft/s$^2$, m/s$^2$
$\gamma$Unit weight of water, 62.4lb/ft$^3$
$\gamma_s$Unit weight of rock or sediment solidslb/ft$^3$
$HW$Headwater depth above culvert invertft
$I$Percent impervious cover; or inflow rate%, cfs
$I_a$Initial abstraction in the SCS runoff methodin
$K$RUSLE soil erodibility factor; or Muskingum storage constant—, hr
$K_e$Culvert entrance loss coefficient
$K_{crop}$Crop coefficient for actual ET
$K_{sat}$Saturated hydraulic conductivityin/hr
$L$Slope length (RUSLE); or channel reach lengthft
$LS$Combined slope length and steepness factor
$\mu$Dynamic viscosity of waterPa·s
$n$Manning’s roughness coefficient
$\nu$Kinematic viscosity of waterm$^2$/s
$O$Outflow ratecfs
$P$Rainfall depth; or RUSLE support-practice factor; or wetted perimeterin, —, ft
$Q$Discharge / flow rate; or runoff depth (in SCS method)cfs, in
$Q_{threshold}$Diversion threshold flow for flow splittercfs
$q_p$Unit-hydrograph peak (SCS)cfs/in
$R$RUSLE rainfall erosivity factor; or hydraulic radius—, ft
$R_a$Extraterrestrial radiationMJ/m$^2$/day
$R_v$Volumetric runoff coefficient (Schueler)
$\mathrm{Re}_p$Particle Reynolds number
$\rho_s, \rho_w$Density of sediment, waterkg/m$^3$
$S$Slope (bed or energy); or retention parameter in SCS methodft/ft, in
$SDR$Sediment delivery ratio
$SG, S_s$Specific gravity of sediment solids (2.65 for quartz)
$\mathrm{SF}$Safety factor
$\tau_0, \tau_c$Applied and critical shear stresslb/ft$^2$
$\tau^*_c$Dimensionless critical Shields parameter
$T$Top width; or analysis period (years)ft, yr
$TW$Tailwater depth at culvert outlet or downstream pondft
$\theta$Volumetric soil moisture content
$\theta_{fc}$Field capacity (volumetric)
$\theta_{wp}$Wilting point (volumetric)
$t_c$Time of concentrationhr
$t_{res}$Hydraulic residence timehr, min
$T_p$Time to peakhr
$V$Flow velocityft/s
$V_s$Particle settling velocitym/s, ft/s
$V_o$Overflow velocity (Camp) = $Q / A_s$ft/s
$WQV$Water quality volumeft$^3$, ac-ft
$X$Muskingum weighting factor (0 to 0.5)
$y, y_c, y_n$Flow depth, critical depth, normal depthft
$z$Trapezoidal side slope (H:V)
Abbreviations used in this manual.
Abbrev.Meaning
ASCEAmerican Society of Civil Engineers
BMPBest Management Practice
CNCurve Number (NRCS method)
EGLEnergy Grade Line
EMCEvent Mean Concentration
ENR CCIEngineering News-Record Construction Cost Index
ETEvapotranspiration
FAOFood and Agriculture Organization of the United Nations
FHWAFederal Highway Administration
GHCNGlobal Historical Climatology Network (NOAA)
HDS-5Hydraulic Design Series No. 5 — Hydraulic Design of Highway Culverts (FHWA)
HECHydraulic Engineering Circular (FHWA) / Hydrologic Engineering Center (USACE)
HGLHydraulic Grade Line
IDEALIntegrated Design and Evaluation Assessment of Loadings
MUSLEModified Universal Soil Loss Equation (Williams, 1975)
NCDEQNorth Carolina Department of Environmental Quality
NSQDNational Stormwater Quality Database (Pitt et al.)
NEHNational Engineering Handbook (USDA-NRCS)
NPVNet Present Value
NRCSNatural Resources Conservation Service (USDA)
PSDParticle Size Distribution
RUSLERevised Universal Soil Loss Equation
SCSSoil Conservation Service (now NRCS)
SDASoil Data Access (USDA-NRCS web service)
SDRSediment Delivery Ratio
SSURGOSoil Survey Geographic Database (USDA-NRCS)
SWMMStorm Water Management Model (US EPA)
TSSTotal Suspended Solids
TN, TPTotal Nitrogen, Total Phosphorus
USACEUS Army Corps of Engineers
USDAUS Department of Agriculture
WQVWater Quality Volume

Appendix C — Validation Tests

HydroComplete Pro ships with a comprehensive regression test suite built on Vitest. The suite comprises 35 test files containing approximately 1,190+ individual assertions, all passing as of build 2026.04. Tests are organized into two tiers: unit tests (formula-level) and integration tests (multi-engine and end-to-end scenarios).

To run the full suite from the project root:

npx vitest run

Vitest unit tests (15 files, ~290 assertions)

Unit tests validate individual formulas and helper functions in isolation: SCS runoff, RUSLE/MUSLE factors, Manning’s equation, Stokes/Rubey settling velocities, Camp basin efficiency, orifice and weir equations, and unit-hydrograph convolution. Each test compares computed output to a hand-calculated or published-reference value within a stated tolerance.

Integration tests (20 files, ~900+ assertions)

Integration tests exercise multi-engine workflows and realistic design scenarios. The table below summarizes the coverage domains and assertion counts.

Integration test coverage by domain (20 files, ~900+ assertions).
DomainKey testsApprox. assertions
Core formulasSCS CN, unit hydrograph, RUSLE, MUSLE, Manning’s normal/critical depth~80
Multi-outlet routingOrifice + weir + spillway composite, per-outlet hydrograph tracking, mass balance~50
Conveyance14 pipe/channel types, HGL profiles, gutter/inlet capacity~60
Treatment trains2- and 3-BMP series removal for TSS, TN, TP, bacteria, metals; $\eta_{total} = 1 - \prod(1 - \eta_i)$~40
SSURGO soil integrationSand-subclass → 7-bin PSD builder, K-factor propagation into RUSLE and Camp~35
Stokes/Camp settlingFive benchmark diameters, regime selection, Camp efficiency vs. Fair & Geyer (1954)~30
Multi-storm MUSLEStorm-sequence sediment yield accumulation, per-event volume tracking~25
Forebay sizingForebay volume, area, and depth checks against state minimums~20
Lane-Koelzer compactionReservoir sediment compaction over 25-yr and 50-yr horizons~15
Land-use-specific kineticsBuildup/washoff rates for 12 land-use categories, EMC regression~310
BMP hydraulicsInternal routing for bioretention, sand filter, wet pond, constructed wetland~40
Continuous simulation30-day ET draw-down, soil moisture accounting, inter-event recovery~25
HydroCAD parityElev-area input, pre/post peak comparison, auto-size detention pond~30
Advanced hydrologyFlow diversions (splitter), culvert HDS-5 inlet/outlet control, interconnected pond backwater~35
Cross-engine consistencyMass balance across Hydraflow → SEDCAD4 → IDEAL; formula transparency audit; no NaN checks~74
Flow diversion integrationSplit → WQ + sediment mass conservation across primary and bypass paths~28

Test suite summary

Regression test inventory as of build 2026.04.
TierFilesAssertionsStatus
Unit tests (Vitest)15~290All passing
Integration tests (Vitest)20~900+All passing
Total35~1,190+All passing

A reviewer or regulator can execute npx vitest run against the current release to reproduce all benchmark numbers cited throughout this manual. Each test file prints a pass/fail summary; Vitest reports total assertions, failures, and elapsed time.


End of HydroComplete Pro Technical Reference Manual, Version 1.0.