Rocket Turbopump (propulsion/turbomachinery/rocket-turbopump)
Use when the task is pump-level sizing of the turbopump in a liquid
rocket engine: turning a required discharge pressure rise and propellant
flow into the pump head, the dimensionless specific speed, the impeller
tip speed and diameter from the design head coefficient, the pump power
at the pump efficiency, and the suction performance picture from the
available net positive suction head and the suction specific speed. This
leaf implements the standard pump sizing relations in pure Python,
stdlib only, SI units throughout. It pairs with
propulsion/rocket/rocket-engine-cycle, which fixes the feed architecture
and the cycle-level discharge pressure and flow this pump must deliver,
and with propulsion/axial-compressor/turbine-stage, which models the
drive turbine on the same shaft. Boundary: this leaf owns pump geometry,
efficiency bookkeeping, and cavitation; the cycle leaf owns the power
balance. Air compressor stages belong to
propulsion/turbomachinery/centrifugal-compressor.
Domain quick reference
- Shaft speed: omega = 2 * pi * rpm / 60 (rad/s) from the rotational
speed in rpm (omega_from_rpm).
- Pump head rise: H = dp / (rho * G0), with dp the discharge pressure
rise in Pa, rho the propellant density, G0 = 9.80665 m/s^2
(head_rise_m).
- Dimensionless specific speed: N_s = omega * sqrt(Q) / (G0 * H)^0.75,
with Q the volume flow in m^3/s (specific_speed). This is the pump
type number that tells whether an impeller, mixed-flow, or axial pump
suits the duty.
- Impeller tip speed from the head coefficient: u2 = sqrt(G0 * H / psi)
with the design head coefficient psi = 0.55 for a centrifugal pump
impeller (impeller_tip_speed). The head coefficient compares the
Euler head to the blade speed squared.
- Impeller diameter from the tip speed and shaft speed: D = 2 * u2 /
omega (impeller_diameter).
- Pump power: P = Q * dp / eta, the hydraulic power at the pump
efficiency eta, in W (pump_power).
- Available NPSH: NPSH = (p_inlet - p_vapor) / (rho * G0) in meters,
the suction head above vapor pressure at the pump inlet
(npsh_available).
- Dimensionless suction specific speed: S = omega * sqrt(Q) / (G0 *
NPSH)^0.75, the suction analogue of N_s (suction_specific_speed).
- Cavitation verdict: acceptable when S >= S_CRIT, cavitation-risk
otherwise, with S_CRIT = 3.0 the conventional suction specific speed
limit for a rocket turbopump stage (cavitation_verdict).
- Units are SI throughout: rad/s, m, m^3/s, Pa, kg/m^3, W.
- ECSS frames the space propulsion context; the relations above are
standard engineering methodology, summary-only.
Workflow
- Fix the pump duty: rpm, volume flow Q, discharge pressure rise dp,
density rho, and efficiency eta (from the rocket-engine-cycle output
for the discharge pressure and flow).
- Convert the shaft speed with omega_from_rpm and the head with
head_rise_m.
- Compute the dimensionless specific speed with specific_speed to
confirm the centrifugal pump type for the duty.
- Get the impeller tip speed with impeller_tip_speed at the design head
coefficient, then the diameter with impeller_diameter; compare D with
the geometric envelope of the engine.
- Compute the pump power with pump_power and carry it back to the cycle
power balance (rocket-engine-cycle owns the balance itself).
- Assess suction performance: npsh_available from the inlet and vapor
pressures, then suction_specific_speed from omega, Q, and the
available NPSH.
- Judge the cavitation margin with cavitation_verdict against S_CRIT.
- Run the whole chain in one call with size_pump, which returns the
dict with omega, head_m, specific_speed, tip_speed_ms, diameter_m,
power_W, npsh_m, suction_specific_speed, and verdict.
- Confirm the deterministic checks with the contract test
scripts/test_rocket_turbopump.py.
Worked example
LOX pump: rpm 18000, Q = 0.04 m^3/s, dp = 10 MPa, rho = 1141 kg/m^3,
eta = 0.68, p_inlet = 0.5 MPa, p_vapor = 0.03 MPa.
- Shaft speed: omega = 2 * pi * 18000 / 60 = 1884.96 rad/s.
- Head: H = 10e6 / (1141 * 9.80665) = 893.70 m.
- Specific speed: N_s = 1884.96 * 0.2 / (9.80665 * 893.70)^0.75 =
0.4162, a low specific speed typical of a high-head centrifugal
turbopump stage.
- Tip speed: u2 = sqrt(9.80665 * 893.70 / 0.55) = 126.23 m/s, a
moderate tip speed for a LOX pump.
- Diameter: D = 2 * 126.23 / 1884.96 = 0.1339 m, about 134 mm.
- Pump power: P = 0.04 * 10e6 / 0.68 = 588235 W, about 588 kW for the
oxidizer pump.
- Available NPSH: NPSH = (0.5e6 - 0.03e6) / (1141 * 9.80665) = 42.00 m.
- Suction specific speed: S = 1884.96 * 0.2 / (9.80665 * 42.00)^0.75 =
4.123, above the 3.0 limit, so the verdict is acceptable.
- Flip case: the verdict flips to cavitation-risk when S drops below
3.0. With the inlet pressure raised to 1.0 MPa the available NPSH
grows to 86.69 m, S falls to 2.394, and size_pump returns
cavitation-risk. Model note: in this sizing model S is computed from
the available NPSH, so S falls as the available suction head grows;
the deterministic flip case in the contract test raises the inlet
pressure accordingly.
Verification
- Confirm omega_from_rpm(18000) returns 1884.96 rad/s within 0.1 and
that 3000 rpm returns exactly 100 * pi rad/s.
- Confirm head_rise_m(10e6, 1141) returns 893.70 m within 0.1 and is
linear in the pressure difference.
- Confirm specific_speed(1884.96, 0.04, 893.70) returns 0.4162 within
0.001 and scales with omega and sqrt(Q).
- Confirm impeller_tip_speed(893.70, 0.55) returns 126.23 m/s within
0.1 and scales with sqrt(H); impeller_diameter(126.23, 1884.96)
returns 0.1339 m within 0.001 and is inversely proportional to omega.
- Confirm pump_power(0.04, 10e6, 0.68) returns 588235 W within 10.
- Confirm npsh_available(0.5e6, 0.03e6, 1141) returns 42.00 m within
0.01 and is linear in the pressure difference; raising the vapor
pressure to 0.2 MPa lowers it by exactly 0.17e6 / (rho * G0).
- Confirm suction_specific_speed(1884.96, 0.04, 42.00) returns 4.123
within 0.01 and that the verdict is acceptable at S = 3.0 and flips
to cavitation-risk below it.
- Confirm size_pump reproduces every anchor in one dict and flips the
verdict to cavitation-risk at an inlet pressure of 1.0 MPa.
- Confirm every non-positive rpm, flow, pressure rise, density, head,
NPSH, and omega, every efficiency outside (0, 1], every non-positive
head coefficient, and every inlet pressure at or below the vapor
pressure raises ValueError.
- Run the contract test offline: python3
scripts/test_rocket_turbopump.py (34 tests, deterministic).
Related leaves
- propulsion/rocket/rocket-engine-cycle: fixes the feed architecture and
the discharge pressure and flow this pump must deliver; owns the
cycle-level pump and turbine power balance.
- propulsion/turbomachinery/centrifugal-compressor: the sibling
turbomachinery design method for air compressor stages.
- propulsion/axial-compressor/turbine-stage: the drive turbine on the
same shaft as this pump.
Pitfalls
- Misreading the suction specific speed direction: in this sizing model
S is computed from the AVAILABLE NPSH, so S falls as the available
suction head grows - the flip case raises the inlet pressure to 1.0
MPa, NPSH grows to 86.69 m and the verdict flips to cavitation-risk,
the opposite of the intuition that more inlet head always helps.
- Reading the verdict boundary as a soft margin: cavitation_verdict is
acceptable at S >= S_CRIT = 3.0 and flips to cavitation-risk below
it, so the boundary is exact and deterministic, not a trend to
eyeball.
- Sizing the pump at the cycle discharge pressure without the pump
inlet state: npsh_available needs the inlet pressure above the vapor
pressure; an inlet at or below the vapor pressure raises ValueError
because the suction head is unphysical.
- Applying the cavitation judgment to the drive turbine or the air
side: this leaf owns pump geometry, efficiency and cavitation only -
the cycle power balance belongs to rocket-engine-cycle and air
compressor stages to centrifugal-compressor.
- Quoting the specific speed without the pump type context: N_s =
0.4162 is a low specific speed typical of a high-head centrifugal
turbopump stage, so the number must be read against the impeller,
mixed-flow or axial pump selection it implies.
- Trusting the 0.55 head coefficient blindly: impeller_tip_speed runs
at the design head coefficient psi = 0.55, a conventional centrifugal
value - a different impeller design needs its own psi before the tip
speed and diameter are quoted.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_rocket_turbopump.py
The test covers the LOX worked-example anchors (omega 1884.96 rad/s,
head 893.70 m, N_s 0.4162, tip speed 126.23 m/s, diameter 0.1339 m,
power 588235 W, NPSH 42.00 m, S 4.123, verdict acceptable), scaling and
round-trip identities, the verdict boundary at S = 3.0 and the flip to
cavitation-risk below it (including the size_pump flip case at a 1.0 MPa
inlet pressure), agreement between size_pump and the individual
functions, and ValueError rejection of non-physical inputs.
Compliance
- Standards referenced, not reproduced: ECSS is a free ESA standard
family (ecss.nl/standards); the pump sizing relations above are
standard engineering methodology, summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: rocket-turbopump3description: Use when you must size the centrifugal pump inside a liquid rocket engine turbopump: convert the discharge pressure rise and propellant flow into the pump head, compute the dimensionless specific speed from the shaft speed, flow, and head, estimate the impeller tip speed and diameter from the design head coefficient, compute the pump power at the pump efficiency, assess the suction performance with the available net positive suction head and the suction specific speed, and judge the cavitation margin against the suction specific speed limit. Produces the head, specific speed, tip speed, impeller diameter, pump power, NPSH, and cavitation verdict that gate the turbopump design review. Trigger: rocket turbopump, pump specific speed, suction specific speed, net positive suction head, impeller tip speed, LOX pump sizing, cavitation margin.4license: Apache-2.05---67# Rocket Turbopump (propulsion/turbomachinery/rocket-turbopump)89Use when the task is pump-level sizing of the turbopump in a liquid10rocket engine: turning a required discharge pressure rise and propellant11flow into the pump head, the dimensionless specific speed, the impeller12tip speed and diameter from the design head coefficient, the pump power13at the pump efficiency, and the suction performance picture from the14available net positive suction head and the suction specific speed. This15leaf implements the standard pump sizing relations in pure Python,16stdlib only, SI units throughout. It pairs with17propulsion/rocket/rocket-engine-cycle, which fixes the feed architecture18and the cycle-level discharge pressure and flow this pump must deliver,19and with propulsion/axial-compressor/turbine-stage, which models the20drive turbine on the same shaft. Boundary: this leaf owns pump geometry,21efficiency bookkeeping, and cavitation; the cycle leaf owns the power22balance. Air compressor stages belong to23propulsion/turbomachinery/centrifugal-compressor.2425## Domain quick reference2627- Shaft speed: omega = 2 * pi * rpm / 60 (rad/s) from the rotational28 speed in rpm (omega_from_rpm).29- Pump head rise: H = dp / (rho * G0), with dp the discharge pressure30 rise in Pa, rho the propellant density, G0 = 9.80665 m/s^231 (head_rise_m).32- Dimensionless specific speed: N_s = omega * sqrt(Q) / (G0 * H)^0.75,33 with Q the volume flow in m^3/s (specific_speed). This is the pump34 type number that tells whether an impeller, mixed-flow, or axial pump35 suits the duty.36- Impeller tip speed from the head coefficient: u2 = sqrt(G0 * H / psi)37 with the design head coefficient psi = 0.55 for a centrifugal pump38 impeller (impeller_tip_speed). The head coefficient compares the39 Euler head to the blade speed squared.40- Impeller diameter from the tip speed and shaft speed: D = 2 * u2 /41 omega (impeller_diameter).42- Pump power: P = Q * dp / eta, the hydraulic power at the pump43 efficiency eta, in W (pump_power).44- Available NPSH: NPSH = (p_inlet - p_vapor) / (rho * G0) in meters,45 the suction head above vapor pressure at the pump inlet46 (npsh_available).47- Dimensionless suction specific speed: S = omega * sqrt(Q) / (G0 *48 NPSH)^0.75, the suction analogue of N_s (suction_specific_speed).49- Cavitation verdict: acceptable when S >= S_CRIT, cavitation-risk50 otherwise, with S_CRIT = 3.0 the conventional suction specific speed51 limit for a rocket turbopump stage (cavitation_verdict).52- Units are SI throughout: rad/s, m, m^3/s, Pa, kg/m^3, W.53- ECSS frames the space propulsion context; the relations above are54 standard engineering methodology, summary-only.5556## Workflow57581. Fix the pump duty: rpm, volume flow Q, discharge pressure rise dp,59 density rho, and efficiency eta (from the rocket-engine-cycle output60 for the discharge pressure and flow).612. Convert the shaft speed with omega_from_rpm and the head with62 head_rise_m.633. Compute the dimensionless specific speed with specific_speed to64 confirm the centrifugal pump type for the duty.654. Get the impeller tip speed with impeller_tip_speed at the design head66 coefficient, then the diameter with impeller_diameter; compare D with67 the geometric envelope of the engine.685. Compute the pump power with pump_power and carry it back to the cycle69 power balance (rocket-engine-cycle owns the balance itself).706. Assess suction performance: npsh_available from the inlet and vapor71 pressures, then suction_specific_speed from omega, Q, and the72 available NPSH.737. Judge the cavitation margin with cavitation_verdict against S_CRIT.748. Run the whole chain in one call with size_pump, which returns the75 dict with omega, head_m, specific_speed, tip_speed_ms, diameter_m,76 power_W, npsh_m, suction_specific_speed, and verdict.779. Confirm the deterministic checks with the contract test78 scripts/test_rocket_turbopump.py.7980## Worked example8182LOX pump: rpm 18000, Q = 0.04 m^3/s, dp = 10 MPa, rho = 1141 kg/m^3,83eta = 0.68, p_inlet = 0.5 MPa, p_vapor = 0.03 MPa.8485- Shaft speed: omega = 2 * pi * 18000 / 60 = 1884.96 rad/s.86- Head: H = 10e6 / (1141 * 9.80665) = 893.70 m.87- Specific speed: N_s = 1884.96 * 0.2 / (9.80665 * 893.70)^0.75 =88 0.4162, a low specific speed typical of a high-head centrifugal89 turbopump stage.90- Tip speed: u2 = sqrt(9.80665 * 893.70 / 0.55) = 126.23 m/s, a91 moderate tip speed for a LOX pump.92- Diameter: D = 2 * 126.23 / 1884.96 = 0.1339 m, about 134 mm.93- Pump power: P = 0.04 * 10e6 / 0.68 = 588235 W, about 588 kW for the94 oxidizer pump.95- Available NPSH: NPSH = (0.5e6 - 0.03e6) / (1141 * 9.80665) = 42.00 m.96- Suction specific speed: S = 1884.96 * 0.2 / (9.80665 * 42.00)^0.75 =97 4.123, above the 3.0 limit, so the verdict is acceptable.98- Flip case: the verdict flips to cavitation-risk when S drops below99 3.0. With the inlet pressure raised to 1.0 MPa the available NPSH100 grows to 86.69 m, S falls to 2.394, and size_pump returns101 cavitation-risk. Model note: in this sizing model S is computed from102 the available NPSH, so S falls as the available suction head grows;103 the deterministic flip case in the contract test raises the inlet104 pressure accordingly.105106## Verification107108- Confirm omega_from_rpm(18000) returns 1884.96 rad/s within 0.1 and109 that 3000 rpm returns exactly 100 * pi rad/s.110- Confirm head_rise_m(10e6, 1141) returns 893.70 m within 0.1 and is111 linear in the pressure difference.112- Confirm specific_speed(1884.96, 0.04, 893.70) returns 0.4162 within113 0.001 and scales with omega and sqrt(Q).114- Confirm impeller_tip_speed(893.70, 0.55) returns 126.23 m/s within115 0.1 and scales with sqrt(H); impeller_diameter(126.23, 1884.96)116 returns 0.1339 m within 0.001 and is inversely proportional to omega.117- Confirm pump_power(0.04, 10e6, 0.68) returns 588235 W within 10.118- Confirm npsh_available(0.5e6, 0.03e6, 1141) returns 42.00 m within119 0.01 and is linear in the pressure difference; raising the vapor120 pressure to 0.2 MPa lowers it by exactly 0.17e6 / (rho * G0).121- Confirm suction_specific_speed(1884.96, 0.04, 42.00) returns 4.123122 within 0.01 and that the verdict is acceptable at S = 3.0 and flips123 to cavitation-risk below it.124- Confirm size_pump reproduces every anchor in one dict and flips the125 verdict to cavitation-risk at an inlet pressure of 1.0 MPa.126- Confirm every non-positive rpm, flow, pressure rise, density, head,127 NPSH, and omega, every efficiency outside (0, 1], every non-positive128 head coefficient, and every inlet pressure at or below the vapor129 pressure raises ValueError.130- Run the contract test offline: python3131 scripts/test_rocket_turbopump.py (34 tests, deterministic).132133## Related leaves134135- propulsion/rocket/rocket-engine-cycle: fixes the feed architecture and136 the discharge pressure and flow this pump must deliver; owns the137 cycle-level pump and turbine power balance.138- propulsion/turbomachinery/centrifugal-compressor: the sibling139 turbomachinery design method for air compressor stages.140- propulsion/axial-compressor/turbine-stage: the drive turbine on the141 same shaft as this pump.142143## Pitfalls144145- Misreading the suction specific speed direction: in this sizing model146 S is computed from the AVAILABLE NPSH, so S falls as the available147 suction head grows - the flip case raises the inlet pressure to 1.0148 MPa, NPSH grows to 86.69 m and the verdict flips to cavitation-risk,149 the opposite of the intuition that more inlet head always helps.150- Reading the verdict boundary as a soft margin: cavitation_verdict is151 acceptable at S >= S_CRIT = 3.0 and flips to cavitation-risk below152 it, so the boundary is exact and deterministic, not a trend to153 eyeball.154- Sizing the pump at the cycle discharge pressure without the pump155 inlet state: npsh_available needs the inlet pressure above the vapor156 pressure; an inlet at or below the vapor pressure raises ValueError157 because the suction head is unphysical.158- Applying the cavitation judgment to the drive turbine or the air159 side: this leaf owns pump geometry, efficiency and cavitation only -160 the cycle power balance belongs to rocket-engine-cycle and air161 compressor stages to centrifugal-compressor.162- Quoting the specific speed without the pump type context: N_s =163 0.4162 is a low specific speed typical of a high-head centrifugal164 turbopump stage, so the number must be read against the impeller,165 mixed-flow or axial pump selection it implies.166- Trusting the 0.55 head coefficient blindly: impeller_tip_speed runs167 at the design head coefficient psi = 0.55, a conventional centrifugal168 value - a different impeller design needs its own psi before the tip169 speed and diameter are quoted.170171## Behavior contract (gate 3)172173Run the deterministic contract test (stdlib unittest, offline):174175 python3 scripts/test_rocket_turbopump.py176177The test covers the LOX worked-example anchors (omega 1884.96 rad/s,178head 893.70 m, N_s 0.4162, tip speed 126.23 m/s, diameter 0.1339 m,179power 588235 W, NPSH 42.00 m, S 4.123, verdict acceptable), scaling and180round-trip identities, the verdict boundary at S = 3.0 and the flip to181cavitation-risk below it (including the size_pump flip case at a 1.0 MPa182inlet pressure), agreement between size_pump and the individual183functions, and ValueError rejection of non-physical inputs.184185## Compliance186187- Standards referenced, not reproduced: ECSS is a free ESA standard188 family (ecss.nl/standards); the pump sizing relations above are189 standard engineering methodology, summary-only per standards-map.yaml.190- compliance: STANDARDS-REF, gated: false.