CIV-470 · Lesson 6 of 12 · 20 min

Culvert hydraulics and fish passage

CIV-370 ended with a recommendation: replace the undersized Ridgeway Road culvert with a 12 × 7 ft concrete box, which passes the 100-year flow of 640 cfs with 2.7 ft of freeboard. The fisheries reviewers' first comment on that recommendation was short: the box must pass fish. Kestrel Creek holds brook trout, and the existing culvert, perched above the downstream pool with a smooth, fast barrel, has blocked their upstream movement for decades. This lesson revisits the culvert with the full set of criteria: hydraulic capacity across the whole range of flows, fish passage, ice and debris, and the shape of the stream bed.

Culvert flow types revisited

FHWA's Hydraulic Design of Highway Culverts (HDS-5), in its third edition of 2012, is the standard North American reference, and its framework is the one used in CIV-370. A culvert operates under inlet control when the barrel can carry more than the entrance admits, so the headwater depends only on the entrance geometry and the flow; it operates under outlet control when the barrel friction, the exit loss or the tailwater set the headwater. At any flow both are computed and the larger headwater governs. HDS-5 gives inlet control equations and charts for many entrance shapes, fitted to laboratory tests; the simplified forms used in this course, weir-like flow at the entrance when unsubmerged and orifice flow when submerged, capture the same behavior.

Control often switches as the flow rises. At low flows a box on a mild slope runs partly full and the tailwater or barrel friction controls; at intermediate flows the entrance may control; at high flows, with the outlet submerged by a high tailwater, outlet control returns. A performance curve, headwater plotted against flow across the full range, shows these changes and the flow at which the road overtops, and it is a better basis for decisions than a single design point.

Performance curves for the Ridgeway Road crossing: headwater against discharge for the 3.6 by 2.1 meter box without embedment, the same box embedded 0.4 meter, and a 4.5 by 2.4 meter box embedded 0.4 meter. The road overtopping level is a horizontal line. The embedded 3.6 meter box crosses it just above the 100-year flow; the larger box stays below it beyond the climate-check flow.
Culvert performance curves for the three Ridgeway Road options.

Why culverts block fish

Fish need to move up and down streams to spawn, find cold water in summer, reach winter refuges and recolonize reaches after droughts or spills. Culverts block them in four ways. A perched outlet, where the barrel discharges above the downstream pool after the bed has scoured, presents a jump that small fish cannot make. High velocity in a smooth barrel exceeds the speed fish can sustain over the barrel length. Shallow depth at low flow, spread thinly across a wide flat invert, leaves too little water to swim in. And turbulence, debris and ice at the entrance add barriers. A culvert that passes the 100-year flood can still block fish at every flow they need to move.

In Minnesota, culverts in public waters need a DNR permit, and the DNR's guidance for crossings favors designs that maintain the natural channel width, slope and bed: bankfull-width openings, barrels recessed below the streambed, and multiple barrels that keep low flows concentrated in one. Nationally, the U.S. Forest Service's stream simulation approach to crossing design, which aims to reproduce the natural channel through the structure, has become a common standard for fish passage, and federal agencies fund the replacement of barrier culverts.

Design approaches for fish passage

Three approaches are used. The hydraulic design approach sets limits on velocity and depth through the barrel at specified fish passage flows, from a low flow at which depth must be adequate to a high flow above which fish are not expected to move, based on the swimming ability of the target species. The stream simulation approach makes the crossing wide enough, typically at least the bankfull width of the channel, with a bed of natural material at the natural slope, so that conditions inside match those outside and no swimming criteria are needed. The no-slope approach places an oversized culvert flat and embedded, so that the bed inside fills naturally. Stream simulation is the most robust for fish and for sediment and debris, but the widest and most costly.

Embedment, setting the culvert invert below the streambed and filling the bottom with bed material, is common to all three. Practice commonly embeds a box or pipe by 20 to 40 % of its rise, with a minimum of about 1 ft, and adds a low-flow channel and boulders to keep depth at low flow and provide resting places. Embedment costs hydraulic capacity: the opening is smaller, and the natural bed is far rougher than concrete.

Performance curve of the embedded box, the overtopping flow, alternatives at the 100-year and climate-check flows, and fish passage depths and velocities.
# Kestrel Creek crossing: culvert performance curve and a fish passage check
from math import sqrt
UNITS = "US"
SI = UNITS == "SI"
g, k = 9.81, 1.0
Lb, S0, ke = 24.0, 0.004, 0.5
crest = 3.2                          # road low point above the original inlet invert, m
def tailwater(Q):                    # creek normal depth, trapezoid b 3.0 m, z 2, n 0.035, S 0.004 (CIV-370)
    lo, hi = 0.01, 5.0
    for _ in range(60):
        y = (lo + hi) / 2; A = y * (3 + 2 * y); P = 3 + 2 * y * sqrt(5)
        if A * (A / P) ** (2 / 3) * S0 ** 0.5 / 0.035 > Q: hi = y
        else: lo = y
    return y
def headwater(Q, B, D, nb, emb=0.0):
    Dn = D - emb                         # open height above an embedded bed
    q = Q / B; yc = min((q * q / g) ** (1 / 3), Dn); Vc = Q / (B * yc)
    hi = yc + (1 + ke) * Vc ** 2 / (2 * g)
    if hi > 1.2 * Dn: hi = max(Dn / 2 + (Q / (0.6 * B * Dn)) ** 2 / (2 * g), 1.2 * Dn)
    A = B * Dn; R = A / (2 * (B + Dn)); V = Q / A
    h0 = max(tailwater(Q) - emb, (yc + Dn) / 2)
    ho = h0 + (1 + ke + 2 * g * nb ** 2 * Lb / (k ** 2 * R ** (4 / 3))) * V * V / (2 * g) - Lb * S0
    return max(hi, ho) + emb, ("inlet" if hi >= ho else "outlet")
cv = (lambda q: f"{q:5.1f} m3/s", lambda h: f"{h:4.2f} m") if SI else (lambda q: f"{q*35.315:5.0f} cfs", lambda h: f"{h/0.3048:5.2f} ft")
print("Performance curve, 3.6 x 2.1 m box, bed embedded 0.40 m (n 0.013 walls/roof, 0.030 composite)" if SI else
      "Performance curve, 12 x 7 ft box, bed embedded 1.3 ft (n 0.013 walls/roof, 0.030 composite)")
for Q in (2, 6, 12, 18, 24, 30):
    hw, ctl = headwater(Q, 3.6, 2.1, 0.030, 0.40)
    print(f"  Q {cv[0](Q)}  HW {cv[1](hw)}  {ctl:6s} control  {'OVERTOPS' if hw > crest else 'freeboard ' + cv[1](crest - hw)}")
lo, hi = 10.0, 60.0
for _ in range(50):
    m = (lo + hi) / 2
    if headwater(m, 3.6, 2.1, 0.030, 0.40)[0] > crest: hi = m
    else: lo = m
print(f"Road overtops at about {cv[0](lo)}")
print("\nAlternatives at the 100-year and climate-check flows (18 and 24 m3/s):" if SI else "\nAlternatives at the 100-year and climate-check flows (640 and 850 cfs):")
for name, B, D, emb, nb in (("3.6 x 2.1 m, not embedded (CIV-370)" if SI else "12 x 7 ft, not embedded (CIV-370)", 3.6, 2.1, 0.0, 0.013),
                            ("3.6 x 2.1 m, embedded 0.40 m" if SI else "12 x 7 ft, embedded 1.3 ft", 3.6, 2.1, 0.40, 0.030),
                            ("4.5 x 2.4 m, embedded 0.40 m" if SI else "15 x 8 ft, embedded 1.3 ft", 4.5, 2.4, 0.40, 0.030)):
    r = [crest - headwater(Q, B, D, nb, emb)[0] for Q in (18.0, 24.0)]
    print(f"  {name:36s} freeboard {cv[1](r[0])} and {cv[1](r[1])}")
# fish passage at the design low and high passage flows: depth and mean velocity in the embedded barrel
for name, Q, Bw in (("low passage flow", 0.08, 4.5), ("  in a 1.0 m low-flow channel" if SI else "  in a 3 ft low-flow channel", 0.08, 1.0), ("high passage flow", 1.6, 4.5)):
    lo2, hi2 = 0.005, 2.0
    for _ in range(60):
        y = (lo2 + hi2) / 2; A = Bw * y; R = A / (Bw + 2 * y)
        if A * R ** (2 / 3) * S0 ** 0.5 / 0.035 > Q: hi2 = y
        else: lo2 = y
    V = Q / (Bw * y)
    if SI: print(f"{name:30s} Q {Q:4.2f} m3/s: depth {y:.2f} m, velocity {V:.2f} m/s")
    else:  print(f"{name:30s} Q {Q*35.315:4.1f} cfs: depth {y/0.3048:.2f} ft, velocity {V/0.3048:.2f} ft/s")
Output
Performance curve, 12 x 7 ft box, bed embedded 1.3 ft (n 0.013 walls/roof, 0.030 composite)
  Q    71 cfs  HW  4.35 ft  outlet control  freeboard  6.15 ft
  Q   212 cfs  HW  5.25 ft  outlet control  freeboard  5.25 ft
  Q   424 cfs  HW  7.30 ft  inlet  control  freeboard  3.20 ft
  Q   636 cfs  HW  9.47 ft  outlet control  freeboard  1.03 ft
  Q   848 cfs  HW 12.62 ft  outlet control  OVERTOPS
  Q  1059 cfs  HW 16.14 ft  outlet control  OVERTOPS
Road overtops at about   710 cfs

Alternatives at the 100-year and climate-check flows (640 and 850 cfs):
  12 x 7 ft, not embedded (CIV-370)    freeboard  2.66 ft and  1.89 ft
  12 x 7 ft, embedded 1.3 ft           freeboard  1.03 ft and -2.13 ft
  15 x 8 ft, embedded 1.3 ft           freeboard  2.43 ft and  1.27 ft
low passage flow               Q  2.8 cfs: depth 0.21 ft, velocity 0.92 ft/s
  in a 3 ft low-flow channel   Q  2.8 cfs: depth 0.57 ft, velocity 1.51 ft/s
high passage flow              Q 56.5 cfs: depth 1.32 ft, velocity 2.90 ft/s

Reading the results

Embedding the 12 × 7 ft box by 1.3 ft and lining its bottom with stream gravel changes its performance sharply. The composite roughness rises from 0.013 to about 0.030 and the opening falls to 5.6 ft. Freeboard at the 100-year flow drops from 2.7 ft to 1.0 ft, the road overtops at about 710 cfs, and the climate-check flow of 850 cfs from CIV-370 would overtop it by 2.1 ft. A 15 × 8 ft box embedded 1.3 ft restores the capacity: 2.4 ft of freeboard at the 100-year flow and 1.3 ft at the climate-check flow.

For fish, the wider box gives a mean velocity of 2.9 ft/s at the high passage flow, within the 3 ft/s the team adopts as an illustrative limit for adult brook trout over an 80 ft barrel. At the low passage flow of 2.8 cfs, however, water spread across the 15 ft bed is only 0.2 ft deep. A 3 ft wide low-flow channel formed in the bed raises the depth to about 0.6 ft, above the 0.5 ft target. The recommended crossing is therefore the 15 × 8 ft box, embedded 1.3 ft, with a natural gravel bed, a meandering low-flow channel, boulder clusters for resting, and the bed graded to match the channel upstream and downstream so that no perch can form.

Worked problem

Low-flow depth in the embedded barrel

At the low passage flow of 2.8 cfs, find the uniform depth on a 15 ft wide gravel bed (\(n = 0.035\), \(S = 0.004\)) and in a 3 ft wide low-flow channel.

Show solution
  1. For a wide shallow flow \(R \approx y\), so \(Q = (1.49/n)\,b\,y^{5/3}S^{1/2}\).
  2. \[y = \Big(\frac{nQ}{1.49\,b\sqrt{S}}\Big)^{3/5} = \Big(\frac{0.035 \times 2.8}{1.49 \times 15 \times 0.0632}\Big)^{3/5} = 0.20\ \text{ft}\]
  3. In the 3 ft channel, solving Manning's equation with \(R = by/(b + 2y)\) gives \(y = 0.57\) ft and \(V = 1.5\) ft/s.

Answer: The low-flow channel nearly triples the depth for fish without changing the flood capacity.

Ice, debris and sediment

Northern culverts face ice. Frazil ice formed in turbulent open water can accumulate at entrances; in very cold weather, aufeis, sheets of ice built up layer by layer from overflow, can fill a culvert entirely; and spring break-up drives ice and debris into the entrance just as flows rise. Larger openings, embedded natural beds and avoiding culverts in reaches prone to icing all help. Debris, including beaver activity, is a common cause of culvert overtopping in forested watersheds; a debris rack can make it worse by concentrating blockage, so many designers prefer a larger opening and regular inspection, and on Kestrel Creek a beaver management plan.

Sediment continuity matters as well. A culvert narrower or steeper than the channel accelerates flow and scours its outlet, perching it over time, while one that backs up flow causes deposition upstream. The stream simulation idea, matching the channel's width, slope and bed, keeps sediment moving through the crossing as it did before.

Crossing options for Ridgeway Road.
OptionFreeboard at Q100 / climate checkFish passageRelative cost
12 × 7 ft box, not embedded2.7 ft / 1.9 ftbarrier: shallow, fast, smooth1.0
12 × 7 ft box, embedded 1.3 ft1.0 ft / overtopspassable1.1
15 × 8 ft box, embedded 1.3 ft2.4 ft / 1.3 ftpassable with low-flow channel1.32
20 ft open-bottom archlargerstream simulation1.6

The open-bottom arch on footings would leave the natural bed untouched and is the fishery reviewers' preference, but it needs deep footings protected against scour, the subject of lesson 8, on the soft ground near the creek identified in CIV-341. The team recommends the embedded 4.5 m box as the best balance of capacity, fish passage, foundations and cost, and records the arch as the alternative if the agencies require stream simulation.

Practical points

  • Draw the performance curve over the full range of flows, not just one design point.
  • Check fish passage at a low and a high passage flow, as well as flood capacity.
  • Embed the barrel and allow for the lost opening and the rougher bed in the hydraulics.
  • Form a low-flow channel and resting places in the embedded bed.
  • Match the channel's width, slope and bed where possible, to keep fish and sediment moving.

Common mistakes

  • MistakeEmbedding a culvert without recalculating its capacity.

    InsteadThe opening shrinks and the roughness rises; check the headwater again.

  • MistakeChecking fish passage only at the design flood.

    InsteadFish move at low and moderate flows; check depth at low flow and velocity at the high passage flow.

  • MistakeFitting a debris rack to protect a small culvert.

    InsteadRacks concentrate debris and can block; a larger opening is usually better.

  • MistakePlacing the invert at the existing scoured outlet level.

    InsteadGrade the bed to the natural channel profile so that no perch forms.

Summary and key terms

  • Culverts operate under inlet or outlet control, and control can change with flow; performance curves show the whole range.
  • Culverts block fish by perched outlets, high velocity, shallow depth and turbulence.
  • Hydraulic design, stream simulation and no-slope approaches are used for fish passage; embedment is common to all.
  • Embedding the 12 × 7 ft box cuts its 100-year freeboard to 1.0 ft; a 15 × 8 ft embedded box gives 2.4 ft.
  • A low-flow channel provides depth for fish at low flow without reducing flood capacity.
  • Ice, debris and sediment continuity also shape the crossing design.
Inlet control
Culvert flow in which the entrance limits the discharge.
Outlet control
Culvert flow in which barrel friction, exit loss or tailwater limit the discharge.
Performance curve
A plot of culvert headwater against discharge over the full range of flows.
Perched outlet
A culvert outlet above the downstream water surface, creating a drop that blocks fish.
Embedment
Setting the culvert invert below the streambed and filling the bottom with bed material.
Stream simulation
A crossing design approach that reproduces the natural channel width, slope and bed through the structure.
Fish passage flows
The range of flows, from low to high, at which a crossing must allow fish to move.
Aufeis
Layered ice formed by repeated overflow and freezing, which can fill channels and culverts.

Practice problems

Work each problem on paper first, then reveal the answer to check.

  1. A culvert with no embedment has a 100-year headwater of 7.9 ft and a road crest at 10.5 ft. After embedment the headwater is 9.7 ft. What happened to the freeboard?

    Show answer

    It fell from 2.6 ft to 0.8 ft.

  2. Find the uniform depth of a flow of 3.5 cfs on a 10 ft wide gravel bed with \(n = 0.035\) and \(S = 0.005\), treating it as wide.

    Show answer

    \(y = (0.035 \times 3.5/(1.49 \times 10 \times 0.0707))^{0.6} = 0.28\) ft.

  3. Give two reasons why an open-bottom arch may be preferred over a box for fish.

    Show answer

    It keeps the natural bed and slope, so velocities, depths and sediment movement match the stream.

  4. Why does a culvert's control often switch from inlet to outlet control at high flows?

    Show answer

    A rising tailwater submerges the outlet and barrel losses grow with the square of velocity, so outlet control headwater overtakes inlet control.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz