Translated from the author's Korean original. Read the original (한국어)
To Go Supersonic, Widen the Pipe — The De Laval Nozzle and Choking
Lowering the back pressure past 0.0298 does not raise the mass flow. It only decides whether a normal shock stays inside the diverging section.
Pinch a garden hose and the water comes out harder. Narrower, faster. A rocket nozzle does the opposite past the throat: it flares like a trumpet. Gas that has already passed the speed of sound speeds up only if the duct gets wider.
Push the area-ratio slider above 1 and the two Mach roots that share one area split apart, one to each side.
The subsonic root falls toward 0 and the supersonic root climbs. If the supersonic root sits near 2.94 when the area ratio is near 4, the printed design point later in the page is just one point on this curve.
Narrow to Speed Up, Then Flip Past Mach 1#
In compressible flow, where density changes, the link between area and velocity flips with Mach number. The area-velocity relation for one-dimensional isentropic flow writes that flip in one line.
Here is the cross-sectional area, the velocity, and the Mach number (velocity over the speed of sound). The sign decides which way the area has to move.
At , . A 1% faster flow needs 0.75% less area. At , , so that same 1% needs 3% more area. The ratio 3/0.75 is 4, and the sign flips. A hose only knows 0.75.
Below Mach 1 (), . Raising the speed () means shrinking the area (). That is the hose.
Above Mach 1 (), . Going faster means enlarging the area. The sign flips.
Read that same sign flip next to a shock jump and it continues into why a wider duct speeds the flow up past Mach 1.
So the gas has to be narrowed until it hits , and widened only after that. The narrow-then-wide shape is the converging-diverging, or de Laval, nozzle. The narrowest station is the throat.
One Area, Two Mach Numbers#
The area-Mach relation ties cross-sectional area to Mach number in isentropic flow.
is the critical area where (the throat area), and is the ratio of specific heats (constant pressure over constant volume; about 1.4 for air).
The right-hand side is a U with a minimum of 1 at . Every area ratio above 1 carries two Mach roots, one subsonic and one supersonic.
The area-ratio slider above already pulls those roots apart. A larger ratio pins the subsonic root near 0 and lifts the supersonic one. For the same shape, the exit back pressure picks the branch.
Choking — When the Throat Can Take No More#
Lower the back pressure and the mass flow rises. Not without a ceiling. The rise stops when the throat speed reaches the speed of sound ().
A pressure disturbance travels upstream at the speed of sound. Once the throat is sonic, a downstream pressure signal cannot cross it. The flow upstream of the throat never hears that the back pressure fell again. Mass flow locks at its maximum. That state is choking.
The maximum mass flow of a choked nozzle is written from the throat area and the stagnation state alone.
Here is the stagnation pressure, the stagnation temperature, and the gas constant.
The -only factor is . At it is , and , so 0.5787 is rounded at the fourth digit. is absent. Once the throat is sonic, , , , , and 0.5787 lock the mass flow. Back pressure only chooses whether the diverging section swallows a shock or pushes it out.
A rocket's thrust is sized from the throat because of this formula. Back pressure sits outside the factor.
The Seven Stages as Back Pressure Falls#
The story inside the nozzle starts after choking. Lower the back pressure from the stagnation pressure and the internal flow changes bins. The bins run from a back-pressure ratio of 1.0 down to 0.05. The slider waits until the printed design pressure ratio is on the page.
(a) Subsonic venturi. With the back pressure high enough, the whole flow stays subsonic. It peaks in speed at the throat, then slows again in the diverging section. Pressure bottoms out at the throat and nearly recovers at the exit.
(b) First critical point. Drop the back pressure further and the throat reaches exactly . Choking begins here.
(c)–(d) Shock inside the nozzle. Lower it more and the flow accelerates supersonically in the diverging section until it hits a normal shock — a discontinuity that snaps the flow abruptly back to subsonic. Behind the shock the flow is subsonic, so it decelerates and matches the back pressure. The lower the back pressure, the further downstream the shock is pushed.
(e) Overexpanded. Once the shock leaves the exit, the inside of the nozzle is fully supersonic. But the exit pressure is below the back pressure, so oblique shocks outside the nozzle reconcile the difference. This is the overexpanded regime.
(f) Design point. A single point where the exit pressure exactly equals the back pressure. No shocks inside or outside. It is the most efficient operating condition.
(g) Underexpanded. When the back pressure drops below the design value, the exiting gas keeps expanding through expansion waves outside the nozzle. This is the underexpanded regime.
As a rocket climbs and the ambient pressure (back pressure) falls, it passes through (e) → (f) → (g) in order. That is why a nozzle that is overexpanded at sea level passes through its design point and becomes underexpanded at high altitude.
Solving the Nozzle in Code#
Bisection finds the supersonic root of the area-Mach relation and the design pressure for an exit area ratio of 4.0.
import numpy as np
def area_ratio(mach, gamma=1.4):
"""isentropic area ratio A/A* as a function of Mach"""
t = 1.0 + 0.5 * (gamma - 1.0) * mach**2
expo = (gamma + 1.0) / (2.0 * (gamma - 1.0))
return (1.0 / mach) * (2.0 / (gamma + 1.0) * t) ** expo
def invert_area_ratio(target, gamma=1.4, branch="sub"):
"""Mach root for a given A/A* (subsonic or supersonic branch)"""
lo, hi = (1e-4, 1.0) if branch == "sub" else (1.0, 8.0)
for _ in range(80):
mid = 0.5 * (lo + hi)
f = area_ratio(mid, gamma)
# subsonic branch decreases, supersonic branch increases
ascending = (branch == "sup")
if (f < target) == ascending:
lo = mid
else:
hi = mid
return 0.5 * (lo + hi)
def pressure_ratio(mach, gamma=1.4):
"""static/stagnation pressure ratio p/p0"""
return (1.0 + 0.5 * (gamma - 1.0) * mach**2) ** (-gamma / (gamma - 1.0))
# design condition of a nozzle with exit area ratio 4.0
ae_over_astar = 4.0
m_exit = invert_area_ratio(ae_over_astar, branch="sup")
p_design = pressure_ratio(m_exit)
print(f"design exit Mach = {m_exit:.3f}")
print(f"design pe/p0 = {p_design:.4f}")
print(f"area-ratio check = {area_ratio(m_exit):.3f}")The output:
design exit Mach = 2.940
design pe/p0 = 0.0298
area-ratio check = 4.000Drag the back-pressure-ratio slider from 1.0 down to 0.05 and the color inside the nozzle (Mach number) plus the pressure curve underneath move from (a) to (g). Near 0.0298, exit pressure meets the back pressure. Above that, a normal shock stays inside the diverging section. Lower still, and the expansion continues outside the exit.
With at , the bracket is 1 and is 1. That is the throat. The printed design point is the supersonic branch. Putting back into the area formula returns 3.9993 and a pressure ratio 0.029795, against the printed 4.000 and 0.0298. The other root of area ratio 4 is subsonic: near 0.1465 and near 0.985. The listing keeps branch on sup and does not print that root.
The printed design point is Mach 2.940 and a pressure ratio of 0.0298. Exit pressure is about 3% of stagnation pressure. When the area ratio comes back as 4.000, the two functions are inverses of each other.
Leave the back pressure above 0.0298 and the diverging section swallows the shock#
0.0298 is where exit static pressure equals the back pressure. Above it, the supersonic stretch in the diverging section ends on a normal shock, and the extra area slows the flow.
Below it, the shock leaves as an oblique wave. Is that outside wave the same pressure ratio as a train trapped in a duct? A train of oblique shocks in a supersonic inlet carries the question.
Related
Share if you found it helpful.