Flow Pro

Open-channel hydraulics, on the web

A water channel designer
built by a civil engineer.

I wrote the original Flow Pro in Visual Basic in 1997 to help design the juvenile fish bypass channel at Bonneville Dam on the Columbia River. Thirty years later I ported it to the web so the next generation of civil engineers can use it too — no install, no license, no cost.

What it does

Gradually-varied flow

Water-surface profiles via the standard-step method. Four cross-sections: trapezoidal, circular, U-shaped, elongated circular. Mild, steep, adverse, horizontal slopes all handled.

Manning's equation

Solve for normal depth, flow, slope, or roughness — any three knowns get the fourth. Rating-curve generator with CSV export for any channel geometry.

Critical depth & orifice flow

Critical depth and critical slope for any shape. Orifice discharge (circular or square) with configurable discharge coefficient.

Save & export

Save profiles to your account, reopen them anytime. Export results as CSV, XLSX, or the classic .FLO file format compatible with the 1997 original.

Who it's for

  • Civil and water-resources engineers sizing channels, culverts, spillways, and fish passages
  • Students learning open-channel hydraulics without paying for commercial software
  • Field crews who want a phone-friendly calculator with saved channel presets
  • Anyone who remembers Flow Pro from the ’90s and wants it back

Free forever

FlowPro is ad-free and donation-supported. Your data stays on your account; nothing is sold or shared. Create an account to start solving problems — takes 30 seconds.

Methods after Roland W. Jeppson, Open Channel Flow Utilizing Computers (1994) · cross-validated against the original 1997 sample files.

Sign in

Create an account · Forgot password

Create an account

Back to sign in

Reset password

Enter your email and we'll send a reset link.

Back to sign in

Set a new password

Resetting password for .

Back to sign in

port of Flow Pro by Rick Palmer (1997) · methods after Jeppson (1994) · free worldwide

Flow Pro
FlowPro · Water-surface profile calculation

—

Engineer—
Date—
Units—
01 / Water-surface profile

Gradually-varied flow

Enter channel inputs and press Compute.

Longitudinal profile

Profile data

# Station Depth Energy Area Velocity Top Momentum Froude Vel head Rh Perim
02 / Manning's equation

Solve for depth, flow, slope, or roughness

Pick a mode and fill in the known fields.

Rating curve — Q vs Y for this channel + slope + n

y A V Q
03 / Critical depth

Critical depth & critical slope

Enter flow and channel dimensions.
04 / Orifice flow

Q = C·A·√(2gH)

Enter orifice size, coefficient, and head.
05 / Saved profiles

Your library

Name Shape Units Updated
You haven't saved any profiles yet. Compute a profile on the Profile tab and press Save.
06 / Reference

Formulas & assumptions

Channel shapes Governing equations Profile types Step method Critical depth Orifice flow Assumptions & limits References About & credits

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:

\[ V = \dfrac{k}{n}\,R_h^{2/3}\,S_0^{1/2}, \qquad Q = A \cdot V \]

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

\[ Q^2 \cdot \text{CON} = \dfrac{A^{10/3}}{P^{4/3}}, \qquad \text{CON} = \dfrac{(n/k)^2}{S_0} \]

iteratively (bracket-doubled bisection).

Typical Manning's n values

Surface\(n\)
Concrete, finished0.011 – 0.013
Concrete, unfinished0.013 – 0.017
Brickwork, mortar0.013 – 0.017
Corrugated metal0.021 – 0.030
Gravel bed0.020 – 0.035
Natural stream, clean0.025 – 0.045
Natural stream, weedy0.050 – 0.150
HDPE, smooth interior0.009 – 0.011
Vitrified clay0.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:

\[ \mathrm{Fr}^2 = \dfrac{Q^2\,T}{g\,A^3} = 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\):

\[ S_c = \dfrac{(Q n/k)^2}{A^2\,(A/P)^{4/3}} \]

Specific energy & momentum

\[ E = y + \dfrac{V^2}{2g} = y + \dfrac{Q^2}{2 g A^2}, \qquad M = A\overline{h} + \dfrac{Q^2}{g A} \]

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

TypeSlope categoryDepth zoneTypical occurrence
M-1mild (\(Y_n > Y_c\))\(y > Y_n\)Backwater behind a dam or weir; subcritical control raised above normal.
M-2mild\(Y_c \le y \le Y_n\)Drawdown to a free overfall; pipe flowing partly full that discharges to a larger space.
M-3mild\(y < Y_c\)Supercritical flow entering a mild reach — e.g. downstream of a sluice gate — usually terminates in a hydraulic jump.
S-1steep (\(Y_c > Y_n\))\(y > Y_c\)Subcritical pool at the top of a steep channel backed up by a control.
S-2steep\(Y_n \le y \le Y_c\)Acceleration from critical at a slope-break entering a steep reach.
S-3steep\(y < Y_n\)Supercritical control (e.g. gate) upstream of normal steep flow, asymptotic to \(Y_n\).
C-1critical (\(Y_n = Y_c\))\(y > Y_c\)Rare — subcritical pool on a channel exactly at critical slope.
C-3critical\(y < Y_c\)Supercritical on a channel exactly at critical slope.
A-2adverse (\(S_0 < 0\))\(y \ge Y_c\)Subcritical flow up a short adverse reach; only \(Y_c\) is defined (no \(Y_n\)).
A-3adverse\(y < Y_c\)Supercritical approach reaching an adverse stretch.
H-2horizontal (\(S_0 = 0\))\(y \ge Y_c\)Subcritical, e.g. pool at the end of a level flume.
H-3horizontal\(y < Y_c\)Supercritical across a horizontal stretch.
Direction of computation. Subcritical profiles (M-1, M-2, S-1, C-1, A-2, H-2) are computed from the downstream control upstream. Supercritical profiles (M-3, S-2, S-3, C-3, A-3, H-3) are computed from the upstream control downstream. FlowPro picks the direction automatically based on the flow regime at the control depth.

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:

\[ \dfrac{dx}{dy} = \dfrac{1 - \mathrm{Fr}^2}{S_0 - S_f} \]

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:

  1. Solves \(Y_c\) at the channel by bisection on \(Q^2 T/(g A^3) = 1\).
  2. If \(S_0 > 0\), solves \(Y_n\) similarly from Manning's equation.
  3. Classifies the flow regime and picks step direction + sign of \(\Delta y\).
  4. Partitions the depth range \(|Y_\text{control} - Y_\text{target}|\) into \(N\) sub-steps (default 30; configurable via the Integration steps input).
  5. 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\).
  6. 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.

Free to use worldwide. No license fee, no usage restriction, no ads. If FlowPro helps you build safer or more reliable water infrastructure — especially in regions where commercial hydraulic software is out of reach — that's the return on the investment.

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.

FlowPro · port of Flow Pro by Rick Palmer (1997) · methods after Jeppson (1994) · free worldwide

Save profile

Account settings

Profile

Change password

Delete account

Permanently deletes your account, all saved profiles, and any feedback you've submitted. This cannot be undone.