—
Gradually-varied flow
Longitudinal profile
Profile data
| # | Station | Depth | Energy | Area | Velocity | Top | Momentum | Froude | Vel head | Rh | Perim |
|---|
Solve for depth, flow, slope, or roughness
Rating curve — Q vs Y for this channel + slope + n
| y | A | V | Q |
|---|
Critical depth & critical slope
Q = C·A·√(2gH)
Your library
| Name | Shape | Units | Updated |
|---|
Formulas & assumptions
Channel shapes
FlowPro supports four cross-sections. All geometry formulas below are evaluated server-side and cross-validated against the sample .FLO files shipped with the original Flow Pro 3.0.
Notation used throughout: \(y\) is the water depth measured from the channel invert (lowest point). \(A\), \(P\), \(T\), \(R_h\) are the wetted area, wetted perimeter, top width of the water surface, and hydraulic radius (\(A/P\)). \(\overline{h}\) is the centroidal depth of the wetted area below the water surface, so \(A\overline{h}\) is the first moment of area used in the momentum / specific-force equation.
Governing equations
Manning's equation (uniform flow)
Average velocity and discharge at normal depth:
where \(k = 1.486\) in English units (ft, cfs) or \(k = 1.0\) in SI (m, m³/s). FlowPro's Normal depth \(Y_n\) is found by solving
iteratively (bracket-doubled bisection).
Typical Manning's n values
| Surface | \(n\) |
|---|---|
| Concrete, finished | 0.011 – 0.013 |
| Concrete, unfinished | 0.013 – 0.017 |
| Brickwork, mortar | 0.013 – 0.017 |
| Corrugated metal | 0.021 – 0.030 |
| Gravel bed | 0.020 – 0.035 |
| Natural stream, clean | 0.025 – 0.045 |
| Natural stream, weedy | 0.050 – 0.150 |
| HDPE, smooth interior | 0.009 – 0.011 |
| Vitrified clay | 0.011 – 0.015 |
Values from Chow (1959) and ASCE/USACE references. Use the upper end for conservatism when sizing.
Critical flow
At critical depth \(Y_c\), the specific energy is minimum (and specific force, for a given \(Q\)). The Froude number equals 1:
\(g = 32.2\) ft/s² (English) or \(9.806\) m/s² (SI). \(\mathrm{Fr}<1\): subcritical, downstream control. \(\mathrm{Fr}>1\): supercritical, upstream control.
Critical slope
The slope at which normal depth equals critical depth. Evaluated at \(Y_c\):
Specific energy & momentum
Energy is conserved between sections where no major local losses occur; specific force (momentum) is conserved across a hydraulic jump. The Energy and Momentum columns in the profile grid are these quantities.
Profile types
Any water-surface profile in a prismatic channel falls into one of ten classified regimes, set by (a) the bed slope category (mild, steep, critical, adverse, horizontal) and (b) whether the water depth sits above, between, or below \(Y_n\) and \(Y_c\). FlowPro classifies the result automatically — shown in the summary as e.g. "mild, M-2".
| Type | Slope category | Depth zone | Typical occurrence |
|---|---|---|---|
| M-1 | mild (\(Y_n > Y_c\)) | \(y > Y_n\) | Backwater behind a dam or weir; subcritical control raised above normal. |
| M-2 | mild | \(Y_c \le y \le Y_n\) | Drawdown to a free overfall; pipe flowing partly full that discharges to a larger space. |
| M-3 | mild | \(y < Y_c\) | Supercritical flow entering a mild reach — e.g. downstream of a sluice gate — usually terminates in a hydraulic jump. |
| S-1 | steep (\(Y_c > Y_n\)) | \(y > Y_c\) | Subcritical pool at the top of a steep channel backed up by a control. |
| S-2 | steep | \(Y_n \le y \le Y_c\) | Acceleration from critical at a slope-break entering a steep reach. |
| S-3 | steep | \(y < Y_n\) | Supercritical control (e.g. gate) upstream of normal steep flow, asymptotic to \(Y_n\). |
| C-1 | critical (\(Y_n = Y_c\)) | \(y > Y_c\) | Rare — subcritical pool on a channel exactly at critical slope. |
| C-3 | critical | \(y < Y_c\) | Supercritical on a channel exactly at critical slope. |
| A-2 | adverse (\(S_0 < 0\)) | \(y \ge Y_c\) | Subcritical flow up a short adverse reach; only \(Y_c\) is defined (no \(Y_n\)). |
| A-3 | adverse | \(y < Y_c\) | Supercritical approach reaching an adverse stretch. |
| H-2 | horizontal (\(S_0 = 0\)) | \(y \ge Y_c\) | Subcritical, e.g. pool at the end of a level flume. |
| H-3 | horizontal | \(y < Y_c\) | Supercritical across a horizontal stretch. |
Direct-step method
FlowPro integrates the gradually-varied-flow equation using a direct-step formulation identical to the original Flow Pro 3.0 (1996). The governing ODE is written in terms of depth instead of distance:
where \(S_f = (Qn/k)^2 \cdot P^{4/3}/A^{10/3}\) is the friction slope. Starting at the control depth \(Y_\text{control}\), the program:
- Solves \(Y_c\) at the channel by bisection on \(Q^2 T/(g A^3) = 1\).
- If \(S_0 > 0\), solves \(Y_n\) similarly from Manning's equation.
- Classifies the flow regime and picks step direction + sign of \(\Delta y\).
- Partitions the depth range \(|Y_\text{control} - Y_\text{target}|\) into \(N\) sub-steps (default 30; configurable via the Integration steps input).
- Integrates \(dx/dy\) over each pair of sub-steps using Simpson's 1/3 rule and accumulates station \(\mathrm{SL} \leftarrow \mathrm{SL} + \sigma \cdot \Delta x\).
- Stops when \(\mathrm{SL}\) crosses the opposite-end station; the last row is interpolated back to the station boundary.
Worked example (TEST.FLO)
Circular 3 m pipe, \(Q = 35\) m³/s, \(n = 0.014\), \(S_0 = 0.001\), control depth 2.56 m at the downstream end (0+100).
Step 1. Critical depth: \(Y_c = 2.56\) m, \(A_c = 6.425\) m², \(T_c = 2.123\) m.
Step 2. \(Q\,n/k = 35 \times 0.014 / 1.0 = 0.49\). Required \(A^{10/3}/P^{4/3} = Q^2/(S_0) \cdot (n/k)^2 = 35^2/0.001 \cdot 0.014^2 = 240.1\). Even at \(y = D\) (full pipe, \(A = 7.07, P = 9.42\)), \(A^{10/3}/P^{4/3} = 34.1 < 240.1\). The channel is over-capacity at this slope — FlowPro flags capacity exceeded and clamps \(Y_n = D = 3.0\).
Step 3. At control, \(\mathrm{Fr}(Y_c) = 1\). Since \(Y_c \le Y_\text{control}\) and \(Y_n \ge Y_c\), this is a mild, M-2 profile (subcritical, control downstream).
Step 4. \(\Delta y = (Y_\text{control} - Y_n) \cdot 0.998 / N = (2.56 - 3.0) \cdot 0.998/30 = -0.01464\) m per half-step (the \(0.998\) factor prevents the integration from reaching exactly \(Y_n\) where \(dx/dy \to \infty\)).
Step 5. Starting at \(\mathrm{SL} = 100\), \(y = 2.56\), the first Simpson pair moves \(y\) to \(2.56 + 2\Delta y = 2.589\) and SL decreases to about 99.85. Continuing until SL crosses 0 produces 16 rows — matching the reference output byte-for-byte.
Picking the step count
30 steps is plenty for most engineering work — profile resolution is ~3% of \(|Y_\text{control}-Y_n|\) per row. Push to 60–100 when:
- The channel is long (profile rarely reaches both ends),
- The control is very close to \(Y_n\) (profile asymptotes slowly),
- You're scrubbing live and want smooth transitions.
Critical depth
Critical depth \(Y_c\) is the water depth at which specific energy is minimized for a given discharge \(Q\). It's a fundamental reference state: the boundary between subcritical flow (\(y > Y_c\), slow and deep) and supercritical flow (\(y < Y_c\), fast and shallow).
Governing condition
Critical depth is where the Froude number equals 1:
\[ \mathrm{Fr} = \frac{V}{\sqrt{gD_h}} = 1 \quad\text{where}\quad D_h = \frac{A}{T} \]
Equivalently, at critical depth the discharge satisfies:
\[ \frac{Q^2 T}{g A^3} = 1 \]
where \(A\) is wetted area, \(T\) is top width, and both are evaluated at \(y = Y_c\).
Solution method
Because \(A\) and \(T\) are shape-dependent non-linear functions of \(y\), critical depth is solved iteratively. FlowPro uses Newton-Raphson on \(F(y) = Q^2 T(y) - g A(y)^3\), converging typically in 3–6 iterations.
Critical slope
The critical slope \(S_c\) is the bed slope at which uniform (normal) flow occurs exactly at critical depth — meaning \(Y_n = Y_c\). It's computed by plugging \(Y_c\) into Manning's equation and solving for slope:
\[ S_c = \left(\frac{n Q}{k \, A_c \, R_c^{2/3}}\right)^{2} \]
where \(A_c\) and \(R_c\) are evaluated at \(y=Y_c\), and \(k = 1.486\) (English) or \(1.0\) (SI). Slopes steeper than \(S_c\) are "steep" (supercritical normal flow); slopes milder than \(S_c\) are "mild" (subcritical). This classification drives the profile types discussed above.
Why it matters
Critical depth marks the hydraulic control in most gradually-varied flow problems. It's the boundary condition at free overfalls, the depth at the crest of weirs, and the transition point in hydraulic jumps. It's also the minimum energy state: no channel can carry \(Q\) at less specific energy than \(E_c = y_c + V_c^2/2g\).
Orifice flow
Orifice flow is discharge through an opening in a wall or plate, driven by the head difference across the opening. Classic applications: culvert inlets under high tailwater, dam outlet works, tank drainage, pipe flow-control orifices.
Governing equation
FlowPro implements the standard submerged-orifice equation derived from Bernoulli:
\[ Q = C \cdot A \sqrt{2 g H} \]
where \(Q\) is discharge, \(C\) is the discharge coefficient, \(A\) is the orifice cross-sectional area, \(g\) is gravitational acceleration (32.174 ft/s² or 9.81 m/s²), and \(H\) is the head measured from the water surface to the centerline of the orifice.
Supported shapes
Circular
Input: diameter \(D\). Area: \(A = \tfrac{\pi D^2}{4}\). Typical for culverts, outlet pipes, and manufactured orifice plates.
Square
Input: side length \(s\). Area: \(A = s^2\). Common in gates, vertical slots, and custom cutouts.
Discharge coefficient C
\(C\) accounts for contraction of the jet and viscous losses. Typical values:
- 0.61 — sharp-edged orifice, ideal free efflux (textbook reference)
- 0.70 — moderately rounded entrance, FlowPro's default starting value
- 0.80–0.85 — well-rounded bellmouth or trumpet entry
- 0.95–0.98 — fully streamlined nozzle
For critical design work, choose \(C\) from a reference specific to the orifice geometry and flow regime rather than accepting the default.
Limits of validity
The equation above assumes: (a) the orifice is fully submerged on the upstream side, (b) the downstream jet discharges freely to atmosphere (or into a reservoir where the tailwater is below the orifice), and (c) head \(H\) is steady. For partially submerged, weir-like, or submerged-outlet conditions, different formulations apply.
Assumptions & limits
The same assumptions underpinning open-channel hydraulics in any standard reference (Chow, Henderson, Sturm) apply here. They all matter; results are meaningful only when the physical setup respects them.
Steady flow
Discharge is constant in time. The program computes no unsteady effects (flood waves, gate operations, tide).
Prismatic channel
Shape and dimensions are constant along the reach. For a non-prismatic reach, break it into prismatic segments and chain them.
1-D flow
Velocity is uniform across the cross-section. Real channels with strong transverse variation (bends, pools) need a 2-D/3-D code.
Hydrostatic pressure
Pressure distribution across the depth is hydrostatic. Violated in curvilinear or steep-slope flows (cos θ not ≈ 1) and at abrupt transitions.
Free-surface flow
The channel is not pressurized. If the capacity exceeded warning fires (r02+), the actual flow would pressurize and the computation is for reference only.
Gradually varied
Depth varies slowly enough that frictional resistance obeys Manning's equation locally. Hydraulic jumps, drops, weirs, and other rapidly-varied features are not modeled — the program will produce a continuous profile across them.
Small-slope approximation
\(y_\text{depth} \approx y_\text{vertical}\). For slopes shallower than about 10% (\(S_0 \lesssim 0.1\)) the error is negligible. Steeper channels need the \(\cos\theta\) correction which the program does not apply.
Single-phase flow
No sediment, no air entrainment, no mixture effects. For highly aerated or sediment-laden flows, use Manning's \(n\) values calibrated for those regimes.
References
The hydraulic methods implemented in FlowPro follow standard open-channel hydraulics practice as developed in the following works. Jeppson (1994) was the primary mathematical source for the original 1997 Flow Pro.
- Jeppson, Roland W. (1994). Open Channel Flow Utilizing Computers. Utah State University. — The computational methods for critical-depth bisection, gradually-varied-flow step integration, and the treatment of four channel cross-sections are all drawn from Jeppson's treatment. The original Flow Pro was built on this foundation; this port preserves those methods.
- Chow, V. T. (1959). Open-Channel Hydraulics. McGraw-Hill. The canonical reference for profile classification (M-1 through A-3).
- Henderson, F. M. (1966). Open Channel Flow. Macmillan.
- Sturm, T. W. (2010). Open Channel Hydraulics, 2nd ed. McGraw-Hill.
- USACE (1990). HEC-2 Water Surface Profiles User's Manual. U.S. Army Corps of Engineers — standard-step implementation reference.
- ProSoft Apps (1996, rev. 2004). Flow Pro 3.0 Source (Visual Basic 6). The program this web app is ported from.
About FlowPro
FlowPro is the web port of Flow Pro, an open-channel hydraulics tool originally written in 1997 by Rick Palmer, then a licensed civil engineer at the U.S. Army Corps of Engineers.
Flow Pro was first used by the Corps to help design the juvenile fish bypass channel at Bonneville Dam on the Columbia River in Oregon — part of the ongoing effort to let salmon and steelhead migrate past the hydroelectric facilities of the lower Columbia without passing through the turbines. Good open-channel hydraulics means fish get home.
With permission from USACE legal counsel, Flow Pro was released as shareware and sold for many years to engineering firms, universities, and DOTs across North America. This 2026 web port takes that codebase forward and makes it free, with a particular hope that engineers in developing regions will find it useful for designing the open-channel infrastructure that communities depend on — irrigation networks, drainage works, storm conveyance, and water-supply systems.
A small career origin story
Writing Flow Pro — the integration algorithms, the DOS-and-then-Windows UI, the user manuals, the customer support — is what made Rick realize he'd fallen in love with software development rather than civil engineering. Shortly after that realization he left the Corps to join STEP Technology, a software consulting company in Portland, as a developer. From there the path went through software engineering, technical training, technical sales, and now partner enablement, channel development, and solution development. Flow Pro is the thing that started it.
Bringing it back in 2026 — as a modern multi-user web app, ported line-by-line from the original Visual Basic source, with the same math row-for-row validated against the 1997 reference outputs — is equal parts engineering homage and gift to the next generation of civil engineers who need this kind of tool and can't afford commercial alternatives.
Credits
- Original design & implementation (1997): Rick Palmer, licensed civil engineer, U.S. Army Corps of Engineers.
- Mathematical foundations: Roland W. Jeppson, Open Channel Flow Utilizing Computers (1994). Jeppson's treatment of gradually-varied flow, critical-depth analysis, and Manning's equation — with practical computer-based solution methods — was the direct mathematical foundation of the original Flow Pro, and through that inheritance remains the foundation for this port.
- Original project context: juvenile fish bypass channel, Bonneville Dam, Columbia River, Oregon.
- 2026 web port: Rick Palmer, with AI pair-programming assistance from Claude (Anthropic).
Safety disclaimer
FlowPro's calculations are provided for reference only. Results are only as good as the assumptions and inputs behind them (see the Assumptions & limits section). For any safety-critical work — anywhere failure could cause loss of life or significant property damage — verify results independently with a second method and have the design reviewed by a qualified professional engineer.
No warranty of fitness for any particular purpose is expressed or implied. Use at your own professional judgment.