Note
Go to the end to download the full example code or to run this example in your browser via JupyterLite.
Pelton’s water wheel (1880)#
Lester Pelton, a millwright in the California gold country, patented in
1880 a wheel whose buckets split the jet in two and turn each half almost
back on itself. By the momentum equation a vane that turns a jet through
\(\theta\) is pushed with \(\rho A (V - u)^2 (1 - \cos\theta)\)
(jet_force()); a wheel, which
always has a bucket in the jet, takes
\(\rho Q u (V - u)(1 - \cos\theta)\)
(pelton_wheel_power()). Turning
the jet through nearly 180° and running the buckets at half the jet speed
leaves the water with almost no speed at all. This example compares
Pelton’s buckets with the flat paddles of the hurdy-gurdy wheels they
replaced.
import matplotlib.pyplot as plt
import numpy as np
from engineeringkit.fluid_engineering import G, jet_force, pelton_wheel_power
A jet from 300 m of head#
A 0.1 m nozzle with velocity coefficient 0.98.
H, d_jet, rho = 300.0, 0.1, 1000.0
V = 0.98 * np.sqrt(2 * G * H)
A = np.pi * d_jet**2 / 4
Q = A * V
jet_power = 0.5 * rho * Q * V**2
print(f"jet speed {V:.1f} m/s, flow {Q:.3f} m³/s, jet power {jet_power / 1e6:.2f} MW")
jet speed 75.2 m/s, flow 0.590 m³/s, jet power 1.67 MW
Power against bucket speed#
Flat paddles turn the jet through 90°; Pelton’s buckets through 165°.
u = np.linspace(0, V, 200)
fig, ax = plt.subplots(figsize=(6, 4))
for label, theta in [("flat paddles, 90°", np.pi / 2), ("Pelton buckets, 165°", np.radians(165))]:
eta = pelton_wheel_power(rho, Q, V, u, theta) / jet_power
ax.plot(u / V, eta, label=label)
print(f"{label}: best efficiency {eta.max():.3f} at u/V = {u[eta.argmax()] / V:.2f}")
ax.set(xlabel="bucket speed / jet speed", ylabel="hydraulic efficiency", title="Pelton wheel")
ax.legend()
fig.tight_layout()

flat paddles, 90°: best efficiency 0.500 at u/V = 0.50
Pelton buckets, 165°: best efficiency 0.983 at u/V = 0.50
The force on a single vane#
One bucket held still feels the full reversal force; one running away at half the jet speed feels a quarter of it, since it receives water at half the rate and turns it at half the relative speed.
theta = np.radians(165)
held, _ = jet_force(rho, A, V, theta)
running, _ = jet_force(rho, A, V, theta, vane_speed=V / 2)
print(f"bucket held still {held / 1e3:.1f} kN, running at V/2 {running / 1e3:.1f} kN")
assert np.isclose(pelton_wheel_power(rho, Q, V, V / 2, theta) / jet_power, (1 - np.cos(theta)) / 2)
assert np.isclose(running, held / 4)
assert pelton_wheel_power(rho, Q, V, V / 2, theta) > 1.9 * pelton_wheel_power(rho, Q, V, V / 2, np.pi / 2)
plt.show()
bucket held still 87.3 kN, running at V/2 21.8 kN
Total running time of the script: (0 minutes 0.064 seconds)