Specific Impulse and Thrust Coefficient

An Aerothermodynamics design point reports specific impulse under four different names: Isp_vac, Isp_optimum, Isp_amb, and Isp_SL. They can differ by more than an order of magnitude for the same engine. This page explains what each one assumes, and when the ambient values stop being meaningful.

Where the differences come from

The thrust of a rocket nozzle has two parts:

\[ F = \dot{m}v_e + \left(p_e - p_{amb}\right)A_e, \]

where \(\dot{m}\) is the propellant mass flow, \(v_e\) is the exhaust velocity at the nozzle exit, \(p_e\) is the static pressure at the exit plane, \(A_e\) is the exit area, and \(p_{amb}\) is the pressure of the surrounding atmosphere.

The first term is fixed by the combustion and expansion process. The second term is pure geometry and pressure: it depends on where the engine is flying, not on how well it burns. Every specific impulse below is the same first term combined with a different assumption about the second.

Specific impulse follows from thrust as

\[ I_{sp} = \frac{F}{\dot{m}g_0}, \]

with \(g_0 = 9.81\ \mathrm{m\,s^{-2}}\). It is convenient to separate the contributions of the combustion chamber and the nozzle by writing thrust as

\[ F = C_F p_c A_t, \]

where \(p_c\) is the chamber pressure and \(A_t\) the throat area. The characteristic velocity \(c^*\) measures the chamber, and the thrust coefficient \(C_F\) measures the nozzle:

\[ c^* = \frac{p_c A_t}{\dot{m}}, \qquad I_{sp} = \frac{C_F c^*}{g_0}. \]

Pyskyfire computes one \(c^*\) and one vacuum thrust coefficient, then obtains every other operating condition by subtracting the ambient pressure term:

\[ C_{F,amb} = C_{F,vac} - \frac{p_{amb}}{p_c}\varepsilon, \qquad \varepsilon = \frac{A_e}{A_t}. \]

The four quantities

Isp_vac is the vacuum specific impulse, \(p_{amb} = 0\). The full pressure term is added, so this is the largest of the four. It is the value to use for upper stages and in-space engines, and it is what the mixture-ratio optimiser in Mixture ratio optimisation maximises.

Isp_optimum is the specific impulse at optimum expansion, meaning the condition \(p_e = p_{amb}\) where the nozzle exit pressure exactly matches the surrounding atmosphere. The pressure term vanishes and only \(\dot{m}v_e\) remains, so this quantity is simply \(v_e/g_0\). It is the number NASA CEA reports as Isp.

Two properties of Isp_optimum are easy to misread. It does not depend on the p_amb given to the constructor — CEA never receives that value. And it is not tied to a fixed altitude: it floats with whatever exit pressure the expansion ratio happens to produce, so it describes a different altitude for every nozzle.

Isp_amb is the specific impulse at the ambient pressure supplied as p_amb when the design point is constructed. Isp_SL is the same calculation at a fixed sea-level pressure of 101325 Pa. Both subtract the pressure term above, and both carry the validity limit described in the next section.

The thrust coefficients CF_vac, CF_amb, and CF_SL correspond one-to-one with these, and are related to them by \(I_{sp} = C_F c^*/g_0\).

A worked example

The RL10A-3-3A validation case in validation/RL10/ is a hydrogen/oxygen upper-stage engine with \(\varepsilon = 61\), \(p_c = 33.2\) bar, and \(c^* = 2375\ \mathrm{m\,s^{-1}}\), constructed with p_amb=1e5:

Quantity

\(C_F\)

\(I_{sp}\)

Assumed \(p_{amb}\)

Vacuum

1.937

469.1 s

0

Optimum expansion

452.0 s

\(p_e = 3.85\) kPa

Ambient

0.102

24.7 s

100 kPa

Sea level

0.078

18.8 s

101.325 kPa

The gap between the vacuum and optimum values, 17.1 s, is exactly the pressure thrust \(p_e A_e/(\dot{m}g_0)\). The exit pressure of 3.85 kPa corresponds to an altitude near 22 km, which is the altitude Isp_optimum describes for this particular nozzle.

The sea-level figure is a different matter. It is not a small correction to 469 s; it is 4% of it.

When the ambient values stop being valid

The expression for \(C_{F,amb}\) assumes the nozzle flows full, with the exhaust attached to the wall all the way to the exit plane. A nozzle sized for vacuum violates that assumption at sea level.

In the example above the exit pressure is 3.85 kPa against an ambient of 101 kPa, an overexpansion of a factor of 26. Real flow does not tolerate this. The exhaust separates from the wall well upstream of the exit, at roughly the station where the wall pressure falls to \(0.3\)\(0.4\) times ambient, which for this gas is somewhere near \(\varepsilon = 10\) rather than 61. The engine then behaves like a much smaller nozzle, delivers substantially more than the tabulated 18.8 s, and generates severe lateral loads on the nozzle extension.

Engine practice reflects this. Ground testing of the RL10 is done with altitude simulation — either in a true altitude chamber, such as the NASA Plum Brook B-2 facility that fired more than a hundred RL10s during Centaur development, or on a stand at sea level where a diffuser and steam-ejector system holds the pressure at the nozzle exit down to a few psia. And when a sea-level-capable RL10 was needed for the DC-X vehicle, the RL10A-5 variant was built with the expansion ratio cut from 57–61 to 4. The tabulated sea-level figure for the \(\varepsilon = 61\) engine therefore does not correspond to a condition the engine is operated in.

Note that the expansion ratio alone does not decide this; the ratio \(p_e/p_{amb}\) does. The Space Shuttle Main Engine has a comparable \(\varepsilon \approx 69\), but its chamber pressure of roughly 200 bar puts the exit pressure near 20 kPa rather than 3.85 kPa. It is overexpanded by a factor of about five at sea level instead of 26, and is routinely fired at sea level.

There is a numerical problem alongside the physical one. At \(\varepsilon = 61\) the pressure term is \(1.860\) against a vacuum thrust coefficient of \(1.937\), so CF_SL is the small difference of two nearly equal numbers. A 1% error in \(C_{F,vac}\) moves Isp_SL by about 25%. Even as an idealisation, the value carries almost no significant figures.

Pyskyfire reports Isp_amb and Isp_SL unconditionally and does not check for separation. Treat them as valid only when the nozzle is close to matched — as a rule of thumb, when \(p_e\) is within a factor of two or three of \(p_{amb}\). For a high-expansion vacuum nozzle, use Isp_vac.

From ideal to delivered performance

All four values are ideal: they come from a one-dimensional equilibrium expansion and assume complete combustion. Real engines lose performance to two-dimensional divergence, the wall boundary layer, finite-rate chemistry, and imperfect injection.

If you are interested in reading more