Chapter 5

Fluid Mechanics & Hydraulics

Open channel flow, pipe networks, and hydrology.

Fluid Mechanics & Hydraulics

Fluid mechanics and hydraulics form the scientific foundation for water resources engineering. Understanding fluid behavior is essential for designing water supply systems, storm drainage, irrigation networks, and hydraulic structures like dams and spillways.

Fluid Properties

Density and Specific Weight

Density (ρ\rho): Mass per unit volume

ρ=mV\rho = \frac{m}{V}

For water at 20°C: ρ998\rho \approx 998 kg/m3^3

Specific Weight (γ\gamma): Weight per unit volume

γ=ρg\gamma = \rho g

For water: γ9.81\gamma \approx 9.81 kN/m3^3

Viscosity

Dynamic Viscosity (μ\mu): Resistance to shear

τ=μdudy\tau = \mu \frac{du}{dy}

For water at 20°C: μ1.002×103\mu \approx 1.002 \times 10^{-3} Pa·s

Kinematic Viscosity (ν\nu):

ν=μρ\nu = \frac{\mu}{\rho}

For water at 20°C: ν1.004×106\nu \approx 1.004 \times 10^{-6} m2^2/s

Compressibility

Bulk Modulus (EvE_v):

Ev=ΔpΔV/VE_v = -\frac{\Delta p}{\Delta V / V}

For water: Ev2.2E_v \approx 2.2 GPa (nearly incompressible)

Fluid Statics

Pressure Variation with Depth

For incompressible fluid:

p=p0+γhp = p_0 + \gamma h

Pressure on Submerged Surfaces

Hydrostatic Force on Plane Surface:

F=γhcAF = \gamma h_c A

Where hch_c is the depth to the centroid of the surface.

Center of Pressure:

yp=yc+IxcycAy_p = y_c + \frac{I_{xc}}{y_c A}

Where IxcI_{xc} is the moment of inertia about the centroidal axis.

Buoyancy

Archimedes' Principle:

Fb=γVdisplacedF_b = \gamma V_{displaced}

Fluid Dynamics Fundamentals

Continuity Equation

For steady flow:

Q=A1V1=A2V2=constantQ = A_1 V_1 = A_2 V_2 = \text{constant}

Mass flow rate:

m˙=ρAV=constant\dot{m} = \rho A V = \text{constant}

Bernoulli's Equation

For steady, incompressible, frictionless flow:

p1γ+V122g+z1=p2γ+V222g+z2\frac{p_1}{\gamma} + \frac{V_1^2}{2g} + z_1 = \frac{p_2}{\gamma} + \frac{V_2^2}{2g} + z_2

Or in terms of head:

H=pγ+V22g+z=constantH = \frac{p}{\gamma} + \frac{V^2}{2g} + z = \text{constant}

Where:

  • p/γp/\gamma = pressure head
  • V2/2gV^2/2g = velocity head
  • zz = elevation head

Energy Equation

With head losses:

p1γ+V122g+z1=p2γ+V222g+z2+hL\frac{p_1}{\gamma} + \frac{V_1^2}{2g} + z_1 = \frac{p_2}{\gamma} + \frac{V_2^2}{2g} + z_2 + h_L

Where hLh_L is the total head loss.

Momentum Equation

F=ρQ(VoutVin)\sum F = \rho Q (V_{out} - V_{in})

Pipe Flow

Reynolds Number

Re=ρVDμ=VDνRe = \frac{\rho V D}{\mu} = \frac{V D}{\nu}

Flow regimes:

  • Laminar: Re<2300Re < 2300
  • Transitional: 2300<Re<40002300 < Re < 4000
  • Turbulent: Re>4000Re > 4000

Head Losses

Major Losses (Friction):

Darcy-Weisbach equation:

hf=fLDV22gh_f = f \frac{L}{D} \frac{V^2}{2g}

Where ff is the Darcy friction factor.

For laminar flow:

f=64Ref = \frac{64}{Re}

For turbulent flow, use Moody diagram or Colebrook-White equation:

1f=2log(ε/D3.7+2.51Ref)\frac{1}{\sqrt{f}} = -2 \log\left(\frac{\varepsilon/D}{3.7} + \frac{2.51}{Re\sqrt{f}}\right)

Minor Losses:

hm=KV22gh_m = K \frac{V^2}{2g}
FittingK
Entrance (sharp)0.5
Entrance (rounded)0.04
Exit1.0
90° elbow0.3-0.9
Gate valve (open)0.2
Check valve2.5

Hazen-Williams Equation

Empirical formula for water pipes:

V=0.849CRh0.63S0.54V = 0.849 C R_h^{0.63} S^{0.54}

Or for head loss:

hf=10.67LQ1.85C1.85D4.87h_f = \frac{10.67 L Q^{1.85}}{C^{1.85} D^{4.87}}

Where CC is the Hazen-Williams coefficient (120-150 for new pipes).

Pipe Networks

Hardy Cross Method: For each loop:

ΔQ=hfdhfdQ\Delta Q = -\frac{\sum h_f}{\sum \left|\frac{dh_f}{dQ}\right|}

Conservation laws:

  1. Continuity at nodes: Qin=Qout\sum Q_{in} = \sum Q_{out}
  2. Energy around loops: hf=0\sum h_f = 0

Open Channel Flow

Channel Geometry

Hydraulic Radius:

R=APR = \frac{A}{P}

Where AA = flow area, PP = wetted perimeter.

For rectangular channel: R=byb+2yR = \frac{by}{b + 2y}

For wide channel (b>>yb >> y): RyR \approx y

Manning's Equation

V=1nR2/3S1/2V = \frac{1}{n} R^{2/3} S^{1/2} Q=1nAR2/3S1/2Q = \frac{1}{n} A R^{2/3} S^{1/2}

Where:

  • nn = Manning's roughness coefficient
  • SS = channel slope
Channel Typen
Concrete (finished)0.012-0.014
Concrete (unfinished)0.014-0.017
Earth (clean)0.022-0.025
Earth (with vegetation)0.030-0.035
Natural streams0.030-0.070

Specific Energy

E=y+V22g=y+Q22gA2E = y + \frac{V^2}{2g} = y + \frac{Q^2}{2gA^2}

Critical Flow

At critical depth:

Fr=Vgy=1Fr = \frac{V}{\sqrt{gy}} = 1

For rectangular channel:

yc=(Q2gb2)1/3=(q2g)1/3y_c = \left(\frac{Q^2}{gb^2}\right)^{1/3} = \left(\frac{q^2}{g}\right)^{1/3} Ec=32ycE_c = \frac{3}{2} y_c

Flow Classification

ConditionFroude NumberFlow Type
Fr<1Fr < 1SubcriticalTranquil, deep, slow
Fr=1Fr = 1CriticalTransition
Fr>1Fr > 1SupercriticalRapid, shallow, fast

Hydraulic Jump

For rectangular channel:

y2y1=12(1+8Fr121)\frac{y_2}{y_1} = \frac{1}{2}\left(\sqrt{1 + 8Fr_1^2} - 1\right)

Energy loss:

hL=(y2y1)34y1y2h_L = \frac{(y_2 - y_1)^3}{4y_1 y_2}

Hydrology Basics

Rational Method

Peak discharge for small watersheds:

Q=CiAQ = C i A

Where:

  • QQ = peak discharge (m3^3/s or cfs)
  • CC = runoff coefficient
  • ii = rainfall intensity for time = tct_c
  • AA = drainage area
Land UseC
Pavement0.85-0.95
Roofs0.75-0.95
Lawns0.10-0.35
Parks0.10-0.25
Industrial0.50-0.90

Time of Concentration

Kirpich formula:

tc=0.0195L0.77S0.385t_c = 0.0195 L^{0.77} S^{-0.385}

Where LL = length in meters, SS = slope, tct_c = minutes.

Intensity-Duration-Frequency (IDF)

i=a(tc+b)ci = \frac{a}{(t_c + b)^c}

Constants aa, bb, cc depend on location and return period.

Unit Hydrograph

Synthetic unit hydrograph peak:

Qp=2.08AtpQ_p = \frac{2.08 A}{t_p}

Where:

  • QpQ_p = peak discharge (m3^3/s)
  • AA = watershed area (km2^2)
  • tpt_p = time to peak (hours)

Real-World Application: Storm Drainage Design

Designing a storm sewer system for an urban area.

Drainage Analysis Example

import math

# Watershed and design parameters
drainage_params = {
    'area': 2.5,              # hectares
    'runoff_coeff': 0.75,     # weighted average
    'time_of_conc': 15,       # minutes
    'return_period': 10,      # years
    'pipe_slope': 0.005,      # m/m
    'manning_n': 0.013,       # concrete pipe
}

# IDF curve parameters (example: i = a / (t + b)^c)
idf_params = {
    'a': 2800,
    'b': 10,
    'c': 0.8
}

# Calculate rainfall intensity
tc = drainage_params['time_of_conc']
i = idf_params['a'] / (tc + idf_params['b'])**idf_params['c']  # mm/hr

# Convert to m/s
i_ms = i / (1000 * 3600)

# Calculate peak discharge using rational method
C = drainage_params['runoff_coeff']
A = drainage_params['area'] * 10000  # convert to m^2
Q = C * i_ms * A  # m^3/s

print(f"Storm Drainage Design")
print(f"=" * 40)
print(f"\nWatershed Data:")
print(f"  Area: {drainage_params['area']} hectares")
print(f"  Runoff coefficient: {C}")
print(f"  Time of concentration: {tc} minutes")

print(f"\nRainfall Analysis:")
print(f"  Return period: {drainage_params['return_period']} years")
print(f"  Intensity: {i:.1f} mm/hr")

print(f"\nPeak Discharge:")
print(f"  Q = {Q:.3f} m^3/s = {Q*1000:.1f} L/s")

# Design pipe size using Manning's equation
# Q = (1/n) * A * R^(2/3) * S^(1/2)
# For circular pipe flowing full: A = pi*D^2/4, R = D/4
n = drainage_params['manning_n']
S = drainage_params['pipe_slope']

# Solve for diameter: D = (Q * n * 4^(5/3) / (pi * S^0.5))^(3/8) * (4/pi)^...
# Simplified: D = 1.33 * (n * Q / S^0.5)^(3/8)
D_calculated = 1.548 * (n * Q / S**0.5)**0.375  # meters

# Round up to standard size
standard_sizes = [0.300, 0.375, 0.450, 0.525, 0.600, 0.750, 0.900, 1.050, 1.200]
D_selected = min([d for d in standard_sizes if d >= D_calculated])

print(f"\nPipe Design:")
print(f"  Calculated diameter: {D_calculated*1000:.0f} mm")
print(f"  Selected diameter: {D_selected*1000:.0f} mm")

# Verify capacity
A_pipe = math.pi * D_selected**2 / 4
R_pipe = D_selected / 4
Q_capacity = (1/n) * A_pipe * R_pipe**(2/3) * S**0.5

print(f"  Pipe capacity: {Q_capacity:.3f} m^3/s")
print(f"  Utilization: {Q/Q_capacity*100:.1f}%")

# Calculate flow velocity
V = Q_capacity / A_pipe
print(f"  Flow velocity: {V:.2f} m/s")

if 0.6 <= V <= 3.0:
    print(f"  Velocity: OK (self-cleaning and non-erosive)")
elif V < 0.6:
    print(f"  WARNING: Low velocity - sediment may deposit")
else:
    print(f"  WARNING: High velocity - erosion risk")

Your Challenge: Open Channel Design

Design a trapezoidal channel to carry a specified discharge.

Goal: Determine the optimal channel dimensions for minimum excavation (most efficient section).

Problem Setup

import math

# Channel requirements
channel_config = {
    'discharge': 15.0,        # m^3/s
    'slope': 0.0015,          # m/m
    'manning_n': 0.025,       # earthen channel
    'side_slope': 2,          # horizontal:vertical (2:1)
    'freeboard': 0.5,         # meters
}

# For most efficient trapezoidal section:
# R = y/2 (hydraulic radius = half the depth)
# b = 2y(sqrt(1+m^2) - m) where m = side slope

Q = channel_config['discharge']
n = channel_config['manning_n']
S = channel_config['slope']
m = channel_config['side_slope']

# Using Manning's equation and best hydraulic section relationships
# Q = (1/n) * A * R^(2/3) * S^(1/2)
# For best section: R = y/2, A = y^2(sqrt(1+m^2) + m)

# Solve for depth
# This requires iteration or closed-form solution for specific case

def calculate_channel_flow(y, b, m, n, S):
    """Calculate discharge for trapezoidal channel"""
    A = (b + m * y) * y
    P = b + 2 * y * math.sqrt(1 + m**2)
    R = A / P
    V = (1/n) * R**(2/3) * S**0.5
    Q = A * V
    return Q, V, A, P, R

# Iterate to find depth for best section
# Best section: b = 2y(sqrt(1+m^2) - m)
for y in [x * 0.1 for x in range(5, 50)]:
    b_best = 2 * y * (math.sqrt(1 + m**2) - m)
    Q_calc, V, A, P, R = calculate_channel_flow(y, b_best, m, n, S)

    if Q_calc >= Q:
        y_normal = y
        b_normal = b_best
        break

# Final dimensions
y_design = y_normal
b_design = b_normal
Q_actual, V_actual, A_actual, P_actual, R_actual = calculate_channel_flow(
    y_design, b_design, m, n, S
)

# Add freeboard
y_total = y_design + channel_config['freeboard']
top_width = b_design + 2 * m * y_total

print(f"Trapezoidal Channel Design")
print(f"=" * 40)
print(f"\nDesign Requirements:")
print(f"  Discharge: {Q} m^3/s")
print(f"  Slope: {S}")
print(f"  Manning's n: {n}")
print(f"  Side slope: {m}:1 (H:V)")

print(f"\nOptimal Dimensions (Best Hydraulic Section):")
print(f"  Bottom width: {b_design:.2f} m")
print(f"  Normal depth: {y_design:.2f} m")
print(f"  Total depth (with freeboard): {y_total:.2f} m")
print(f"  Top width: {top_width:.2f} m")

print(f"\nHydraulic Properties:")
print(f"  Flow area: {A_actual:.2f} m^2")
print(f"  Wetted perimeter: {P_actual:.2f} m")
print(f"  Hydraulic radius: {R_actual:.3f} m")
print(f"  Velocity: {V_actual:.2f} m/s")

# Check Froude number
Fr = V_actual / math.sqrt(9.81 * y_design)
print(f"  Froude number: {Fr:.3f} ({'Subcritical' if Fr < 1 else 'Supercritical'})")

# Cross-sectional area for excavation
excavation_area = (b_design + m * y_total) * y_total
print(f"\nExcavation:")
print(f"  Cross-section area: {excavation_area:.2f} m^2 per meter length")

How would you modify the design if the channel must handle a range of flows while maintaining self-cleaning velocity?

ELI10 Explanation

Simple analogy for better understanding

Think about water flowing through a garden hose or a river - that's what hydraulics is all about! When you put your thumb over the hose end, the water sprays farther because it's under more pressure. Rivers flow faster when they're narrow and steeper. Engineers who design water supply systems, dams, and drainage need to understand exactly how water behaves - how fast it flows, how much pressure it has, and where it goes. It's like being able to predict exactly what water will do in any situation!

Self-Examination

Q1.

How does the Bernoulli equation relate pressure, velocity, and elevation in fluid flow?

Q2.

What is the difference between laminar and turbulent flow, and how does Reynolds number characterize them?

Q3.

How do you analyze flow in open channels using Manning's equation and the specific energy concept?

Q4.

What methods are used to design pipe networks and calculate head losses?

Q5.

How does the rational method estimate peak runoff for storm drainage design?