↑ ↓ to move · enter to open

E06 · Physics · Waves, drag, planing

hull speed & planing

A heavy boat pushing through the water makes a wave at its bow, and that wave has to keep pace with the boat. Longer waves travel faster, so as the boat speeds up its own wave stretches until it is as long as the boat. Past that point the boat is trying to climb its own bow wave, and the power needed shoots up. That speed is called hull speed. Three labs: watch a hull make its wave, see the wall of drag (and how a light planing boat gets over it), and find out why longer boats are faster.

LAB 1

a boat makes its own wave

A displacement hull is one that floats by pushing water aside, like a canoe, a sailing yacht or a fishing trawler. Moving forward, it shoves water up at the bow and leaves a train of waves behind. The waves directly behind the boat stay in step with it, so they must travel exactly as fast as the boat does. On open water a wave's speed depends on its wavelength (the distance from one crest to the next): longer waves run faster. So the faster the boat goes, the longer its wave. The waterline length (LWL) is the length of the hull where it meets the water.

displacement hull
—
—

How to read this: the top picture is the boat's view: the hull stays put while water streams past, and the wave pattern holds still beside it. The chart below shows how fast a wave of each length travels on deep water; the boat's wave sits on that curve at the boat's speed.

  • water surface (height exaggerated)
  • wave crests
  • one wavelength λ of the boat's wave
  • waterline length L
  • wave speed curve
  • the boat's wave now
  • a wave as long as the hull

Try this: slide Boat speed up slowly and watch the second crest walk back along the hull until it reaches the stern, then slips behind it and the bow tips up.

Idealized model: deep water, a single 2D wave train along the hull's centerline. Real boats also make a V-shaped spread of diverging waves (the Kelvin wake), and real wave height depends on hull shape. Wave heights here are a toy, drawn exaggerated.
—
Boat speed
—
Waterline length L
—
Bow-wave wavelength λ
—
λ / L
—
Froude number Fr
—
Hull speed (λ = L)

Deep-water waves

c = √( g·λ / 2π ) (wave speed, deep water)
c = v ⇒ λ = 2π·v² / g (the wave keeps pace with the boat)
λ = L ⇒ vhull = √( g·L / 2π )
vhull ≈ 1.34·√LWL (LWL in ft, v in knots)
vhull ≈ 2.43·√LWL (LWL in m, v in knots)
Fr = v / √( g·L ) Frhull = 1/√(2π) ≈ 0.40

g = 9.81 m/s² is gravity, λ the wavelength in meters, c and v speeds in m/s. A knot is one nautical mile (1,852 m) per hour, so 1 kn = 0.514 m/s. Plug in λ = L and convert units and the two rules of thumb fall out: √(9.81 / 2π) = 1.249 m/s per √m, which is 2.43 knots per √m, or 1.34 knots per √ft. The Froude number Fr compares a boat's speed to the speed of gravity waves on its own length scale. Boats of any size with the same Fr make the same shape of wave pattern, and hull speed is always Fr ≈ 0.40.

Why the boat gets stuck

Below hull speed the hull spans several short waves and sits nearly level. At hull speed one crest sits at the bow and the next at the stern, with a trough in between. Go faster and the second crest slides behind the stern. The stern drops into the trough, the bow points up, and the boat is pushing uphill against its own bow wave. Lab 2 shows what that costs.

"Deep" water means deeper than about half a wavelength. In shallow water every wave travels at about √(g·depth) whatever its length, which is why tides, with wavelengths of thousands of miles, behave so differently: see W10 · Tides. For how waves add up and what sets their speed on a string or in air, see S00 · Waves & harmonics.

CodePython

import math
g  = 9.81                     # m/s²
KN = 1852 / 3600              # m/s per knot

def wave_speed(lam):           # deep water, wavelength m -> m/s
    return math.sqrt(g*lam / (2*math.pi))

def bow_wavelength(v):        # the wave that keeps pace: c = v
    return 2*math.pi*v**2 / g

L, knots = 7.6, 5.0           # waterline length m, boat speed kn
v   = knots * KN
lam = bow_wavelength(v)
Fr  = v / math.sqrt(g*L)
hull_kn = wave_speed(L) / KN  # speed where lam == L
print(f"lambda {lam:.2f} m = {lam/L:.2f} L, Fr {Fr:.3f}, hull speed {hull_kn:.2f} kn")

# the rule-of-thumb constants
print(wave_speed(1.0) / KN)       # 2.43 kn per sqrt(m)
print(wave_speed(0.3048) / KN)    # 1.34 kn per sqrt(ft)
print(1 / math.sqrt(2*math.pi))   # Fr at hull speed, 0.399
LAB 2

the wall of drag

Water holds a boat back in two main ways. Friction drag is water rubbing along the wetted skin of the hull; it grows roughly with speed squared. Wave-making drag is the energy the boat pours into the waves it makes. For a heavy displacement hull, wave drag is small at low speed and then climbs like a wall around hull speed. A light planing hull has a flat, wide bottom. Driven hard enough, water pressure under that bottom lifts the boat up so it skims on top of the water instead of plowing through it. Its wave drag peaks (the hump) and then eases. Two boats here share a waterline: a heavy displacement launch and a light planing runabout.

illustrative shapes
—

How to read this: each curve shows how hard the water pushes back, as a percent of the boat's own weight, so a light and a heavy boat can share one chart. These are toy-model shapes, not measured data. The strip below shows how each hull sits in the water at the chosen speed.

  • displacement: friction part
  • displacement: total (friction + wave)
  • planing hull: total
  • hull speed for this waterline
  • current speed on each curve

Try this: drag Boat speed from 5 to 10 knots. The red curve runs off the top of the chart while the green one peaks and then drops as the planing hull rises.

—
Froude number Fr
—
Planing hull: weight carried by lift
—
Displacement: resistance
—
Displacement: power R·v
—
Planing: resistance
—
Planing: power R·v

Toy resistance model

R = RF + RW P = R·v
RF = ½·ρ·v²·S·CF CF = 0.075 / (log₁₀Re − 2)² Re = v·L/ν
displacement (toy): RW = W · 0.04·(Fr/0.4)⁶
planing (toy): RW = W · [ (1−s)·0.04·(Fr/0.4)⁶ + s·0.07/Fr ]
s = planing share, 0 → 1 around Fr ≈ 0.5 lift carries 0.8·s of W wetted area S·(1 − 0.6·s)

ρ = 1025 kg/m³ is seawater density, ν = 1.19×10⁻⁶ m²/s its kinematic viscosity, S the wetted area, W = m·g the weight. CF is the ITTC-1957 friction line, a standard engineering formula for the friction of a smooth hull. The wave terms are made up to have the right shapes: a steep wall near Fr 0.4 to 0.5 for the displacement hull, and for the planing hull a hump followed by a falling "riding tilted" drag once lift takes over. P = R·v is the power that actually pushes the hull; propellers waste a good share, so an engine must deliver more, often 1.5 to 2 times as much.

Why planing escapes the wall

A displacement hull has to shove its full weight of water aside the whole time, and the faster it goes the more of that work goes into making waves. A planing hull uses speed to make lift, like a water ski. As lift carries more of the weight, the hull rises, less of it touches the water, and it stops making the big waves. The price is a hump of drag on the way up, so a planing boat needs a large engine for its weight, and below the hump it is no better than a displacement boat.

Sailboats meet the same wall. Most cruising keelboats are too heavy to plane, so their top speed sits near hull speed whatever the wind does: see E05 · Sailing upwind for where the push comes from and E07 · Sailboat stability for what keeps them upright under it.

CodePython

import math
g, rho, nu = 9.81, 1025, 1.19e-6      # seawater
KN = 1852 / 3600
L = 6.0                                # both hulls, waterline m
DISP = dict(m=3000, S=16)              # heavy launch: kg, wetted m²
PLAN = dict(m=1200, S=11)              # light runabout

def cf_ittc(v):                        # ITTC-1957 friction line
    Re = v*L/nu
    return 0.075 / (math.log10(Re) - 2)**2

def wave_disp(Fr):                     # toy wall, per unit weight
    return 0.04 * (Fr/0.4)**6

S0 = 1/(1 + math.exp(0.5/0.06))
def plane_share(Fr):                   # 0 -> 1 around Fr 0.5 (toy)
    return (1/(1 + math.exp(-(Fr - 0.5)/0.06)) - S0) / (1 - S0)

def resistance(v, boat, planing):
    W, Fr = boat["m"]*g, v/math.sqrt(g*L)
    s = plane_share(Fr) if planing else 0.0
    Rw = W*((1 - s)*wave_disp(Fr) + s*0.07/Fr)
    Rf = 0.5*rho*v**2*boat["S"]*(1 - 0.6*s)*cf_ittc(v)
    return Rf + Rw

for kn in (4, 6, 8, 10, 15, 22):
    v = kn*KN
    Rd, Rp = resistance(v, DISP, False), resistance(v, PLAN, True)
    print(f"{kn:2} kn  disp {Rd:7.0f} N {Rd*v/1e3:6.1f} kW   plan {Rp:5.0f} N {Rp*v/1e3:5.1f} kW")
LAB 3

longer is faster

Hull speed grows with the square root of waterline length: a boat four times as long has twice the hull speed. That is why long boats are fast and why sailors say "length is speed". Pick a length, or race two displacement boats of different sizes, each sailing at its own hull speed. A nautical mile (nmi) is 1,852 m, and one knot is one nautical mile per hour.

rule of thumb
—
— —

How to read this: the curve gives hull speed for each waterline length; the length axis is stretched (log scale) so a dinghy and a ship both fit. The shaded zone above the curve is where boats that don't play by the displacement rules can go. The race below runs both boats at their hull speeds.

  • hull speed ≈ 1.34·√LWL(ft)
  • example boats
  • your pick
  • a big ship's typical cruising speed
  • planing, multihulls, foilers
  • boat A
  • boat B

Try this: set boat B to four times boat A's length and press Start race: B should cover twice the distance in the same time.

—
Hull speed at this length
—
Distance in 24 h at hull speed
—
Boat A hull speed
—
Boat B hull speed
—
Finish times, 10 nmi course
—
Lead after 1 hour

Square-root scaling

vhull ≈ 1.34·√LWL kn (ft) = 2.43·√LWL kn (m)
vB / vA = √( LB / LA )
time = distance / speed

The speed ratio of two boats depends only on the ratio of their lengths. Double the length and hull speed rises by √2, about 41%.

A rule of thumb, not a law

Nothing stops a hull at exactly Fr 0.40. Heavy displacement boats can be pushed a little past it with a lot of power, and drag rises smoothly rather than hitting a hard limit. Boats built differently beat it easily: planing dinghies and powerboats ride up on top of their bow wave, catamarans and trimarans have long, very narrow hulls that make much smaller waves, and hydrofoil boats lift their hulls clear of the water altogether.

Big ships sit far below their hull speed. A container ship's hull speed is over 40 knots, but pushing that much hull fast burns fuel at a ruinous rate, so they cruise at roughly 15 to 25 knots, around Fr 0.13 to 0.22.

CodePython

import math
KN = 1852 / 3600
def hull_speed_kn(L_m):            # deep-water wave speed with lambda = L
    return math.sqrt(9.81*L_m / (2*math.pi)) / KN

boats = {"dinghy": 4.0, "30 ft cruiser": 7.6,
         "70 ft yacht": 18.3, "container ship": 350}
for name, L in boats.items():
    print(f"{name:15} LWL {L:6.1f} m  hull speed {hull_speed_kn(L):5.1f} kn")

# race two displacement boats over 10 nautical miles
A, B, course = 7.6, 18.3, 10.0       # waterline m, m, nmi
vA, vB = hull_speed_kn(A), hull_speed_kn(B)
print(f"A {course/vA:.2f} h, B {course/vB:.2f} h, lead after 1 h {vB - vA:.2f} nmi")
print(f"speed ratio {vB/vA:.3f} = sqrt({B/A:.2f})")