Rocket Nozzle Divergence Loss (propulsion/rocket/rocket-nozzle-divergence-loss)
Use when the task is the deterministic delivered-thrust loss bookkeeping
of an attached-flow rocket nozzle: how much of the ideal axial momentum
thrust a conical or bell divergent contour actually delivers, what the
turbulent boundary layer over the divergent wall removes, and the
delivered Isp that results. The model computes the conical divergence
factor lambda = (1 + cos(alpha))/2 for the half-angle, the equivalent
80-percent-length bell contour efficiency in its place, the
boundary-layer displacement thickness grown over the divergent length,
the 1-D mass-flux momentum loss fraction, and the combined delivered
thrust and delivered Isp. It pairs with propulsion/rocket/nozzle-design,
which supplies the ideal attached-flow exit state at the geometry that
this leaf consumes as its loss-free baseline.
Domain quick reference
- Conical divergence factor: lambda = (1 + cos(alpha))/2 for the
half-angle alpha, the axial projection of the momentum flux leaving a
conical wall. lambda(0 deg) tends to 1, lambda(60 deg) = 0.75
exactly, lambda(15 deg) = 0.982963.
- Bell equivalence: the parabolic-contour bell at about 80 percent of
the equivalent 15-degree conical length carries the contour
efficiency eta_bell (0.98 typical, allowed as a parameter); the
contour-only comparison with the cone it replaces is eta_bell /
lambda(alpha), exactly 1.0 when eta_bell = lambda(15 deg).
- Turbulent growth over the divergent length L (flat plate, edge
conditions at the exit): Re_L = rho_e * ve * L / mu, delta = 0.37 * L
- Re_L**(-0.2), delta* = delta/8 and theta = (7/72) * delta =
(7/9) * delta* for the 1/7-power profile.
- Displaced-core area: the wall layer shrinks the inviscid core, so
eps_eff = eps * (1 - delta*/r_exit)**2 (internal flow); the throat
boundary layer is neglected and the external-flow plus-sign
displaced-wall form is not used.
- 1-D mass-flux correction: the layer removes the momentum flux through
the exit annulus of momentum thickness theta, so the fractional loss
of the momentum term is 2theta/r_exit = (14/9)delta/r_exit to
first order in delta/r_exit; the pressure term (pe - pa)*Ae acts
over the full geometric exit area and is unchanged.
- Delivered thrust and Isp: F_del = shape_factor * (1 - xi_bl) * mdot *
ve + (pe - pa) * Ae and Isp_del = F_del / (mdot * g0), g0 =
9.80665 m/s^2, with shape_factor the conical lambda or the bell
contour efficiency. At shape 1 and xi_bl = 0 the chain reproduces the
ideal thrust exactly (the no-loss identity).
- Units are SI throughout: N, kg/s, m/s, Pa, m^2, s.
- ECSS frames the space-propulsion context; the relations above are
standard engineering methodology, summary-only. The claim does not
extend past attached flow: off-design overexpansion to the
separation limit invalidates the chain, and gamma and R are caller
inputs from the hot-product state.
Workflow
- Collect the geometry and the ideal attached-flow state: the
half-angle alpha or the bell length fraction, the divergent length L
(for a conical nozzle, L = (r_exit - r_throat)/tan(alpha)), the exit
radius r_exit, and the ideal state mdot, ve, pe and Ae from
nozzle-design at the same area ratio. Attached flow at the operating
ambient is assumed.
- Choose the shape factor: conical_divergence_factor for a conical
half-angle, or bell_contour_efficiency for the 80-percent bell
contour in its place.
- Judge the bell-to-conical contour comparison with
bell_relative_to_conical and note whether the shorter bell contour
closes the gap to the cone it replaces.
- Grow the turbulent boundary layer over the divergent length with
turbulent_displacement_thickness(length_m, vel_ms, rho_kgm3,
mu_pas) to the exit displacement thickness.
- Convert the displacement thickness with boundary_layer_loss_fraction
to the momentum loss fraction xi_bl and with
effective_exit_area_ratio to the displaced-core effective exit area
ratio eps_eff.
- Assemble the delivered thrust with delivered_thrust(mdot, ve, pe,
pa, Ae, shape_factor, xi_bl) and the delivered Isp with
delivered_isp(...); the pressure term keeps the full geometric exit
area.
- Read off the delivered fraction of the ideal (F_del over the ideal
thrust at the same geometry) and the bell-versus-conical verdict:
the 80-percent-length bell delivers within about 0.1 percent of the
full-length 15-degree conical, so its benefit is the 20 percent
length and mass saving, not an Isp gain.
- Confirm the deterministic checks with the contract test
scripts/test_rocket_nozzle_divergence_loss.py.
Worked example
Representative LOX/RP-1 upper-stage nozzle: pc = 7.0 MPa, Tc = 3672 K,
Mw = 22.1 (R = 376.220 J/(kg K)), gamma = 1.24, c-star = 1791.2 m/s,
area ratio Ae/At = 70, throat radius 0.150 m, hot-product viscosity mu
= 8.0e-5 Pa s at the exit. The ideal attached-flow state at the
geometry (nozzle-design domain) is Me = 4.931384, pe = 6036.738 Pa,
rho_e = 0.017122 kg/m^3, ve = 3260.673 m/s, mdot = 276.24 kg/s,
r_exit = 1.2550 m, ideal vacuum thrust F_id = 930598.1 N and ideal
vacuum Isp = 343.522 s. Module outputs with these inputs are real:
- Conical, half-angle 15 deg: lambda = 0.982963 over the divergent
length L = (r_exit - r_throat)/tan(15 deg) = 4.124 m. Turbulent
growth at Re_L = 2.879e6 gives delta* = 0.00974 m and the 1-D
mass-flux loss xi_bl = (14/9)delta/r_exit = 0.01207 (1.21 percent
of the momentum term); the displaced core eps_eff = 68.9176 (from
70). Delivered vacuum thrust F_del = 904562.3 N, delivered Isp =
333.911 s, fraction of the geometry ideal = 0.97202, inside the
plausibility band [0.93, 0.98]. The prep anchor (full-precision
unrounded ideal state) reports F_del = 904558.9 N, 3.4 N lower: the
rounding of the printed mdot input, a 4e-6 relative difference.
- Equivalent bell (GVC 80-percent convention): Rao-class parabolic
contour at L = 0.8 * 4.124 = 3.299 m with contour efficiency eta_bell
= 0.98. The shorter wall grows delta* = 0.00815 m, xi_bl = 0.01010,
eps_eff = 69.0940. Delivered thrust F_del = 903668.2 N, delivered
Isp = 333.581 s, fraction = 0.97106 (anchor 903664.7 N, same 4e-6
input-rounding band).
- Bell/conical delivered ratio = 0.99901: the 80-percent-length bell
delivers within 0.10 percent of the full-length 15-degree conical
(contour-only ratio 0.996986), the design verdict that the bell's
benefit is its 20 percent length and mass saving, not an Isp gain.
- Half-angle sensitivity at fixed area ratio 70 (conical): the
delivered fraction peaks near 10 deg where the shallow cone's longer
wall starts to cost more boundary layer than the divergence saves:
8 deg 0.97580, 10 deg 0.97644, 12 deg 0.97551, 15 deg 0.97202, 20
deg 0.96194, 25 deg 0.94751, 28 deg 0.93699, 30 deg 0.92926. The
typical design band 12-25 deg holds inside [0.93, 0.98]; only the
steep 30 deg cone dips below the band.
- Read-off: this 70:1 nozzle loses about 2.8 percent of its ideal
vacuum Isp at the geometry to divergence plus boundary layer (15-deg
conical), or 2.9 percent with the shorter 80-percent bell; the
nozzle-side share of the cea-rocket-combustion "80 to 95 percent of
ideal" band is about 0.97, with the rest of the band owned by
combustion (c-star) and finite-expansion accounting in the sibling
leaves.
Verification
- Confirm conical_divergence_factor(15.0) = 0.982963 within 1e-5 and
conical_divergence_factor(60.0) = 0.75 exactly; lambda falls
monotonically from 8 to 30 deg.
- Confirm bell_contour_efficiency() = 0.98,
bell_relative_to_conical() = 0.996986 within 1e-5, and the ratio is
1.0 within 1e-9 when eta_bell equals lambda(15 deg).
- Confirm the no-loss identity: delivered_thrust with shape 1 and xi 0
reproduces mdot*ve + (pe - pa)*Ae with residual below 1e-6 N, and
delivered_isp at pe = pa, shape 1, xi 0 equals ve/g0 = 332.496090 s.
- Confirm the worked-example chain returns F_del = 904562.3 N (conical
15 deg) and 903668.2 N (80-percent bell, 0.98 contour) within 1 N,
delivered Isp 333.911 s and 333.581 s within 0.05 s, fractions
0.97202 and 0.97106 within 1e-4 and inside [0.93, 0.98], and the
bell/conical ratio 0.99901 within 1e-4.
- Confirm the deterministic checks of step 8 and the ValueError
rejections of non-physical inputs: half-angle at or beyond the (0,
- deg limits, contour efficiency outside (0, 1], displacement
thickness at zero or at the exit radius, area ratio at or below 1,
non-positive mass flow, velocity, area or g0, shape factor outside
(0, 1] and loss fraction outside [0, 1).
- Run the contract test offline: python3
scripts/test_rocket_nozzle_divergence_loss.py (30 tests,
deterministic).
Pitfalls
- Reading the anchor thrust at full precision: the prep anchor computes
the ideal state at full internal precision, so its 904558.9 N sits
3.4 N below the module output fed the spec's rounded inputs
(904562.3 N). The 4e-6 relative difference is input rounding, not
model error; the fractions, Isp, thicknesses and area ratios agree
to the printed digits.
- Reporting the finite-expansion shortfall as a nozzle loss: the gap
between the geometry ideal (343.522 s) and the fully expanded
ceiling (385.276 s) is the area-ratio verdict of nozzle-design, not
divergence or boundary-layer loss.
- Applying the chain past the separation limit: when the exit area
ratio exceeds the separation-station area ratio at the operating
ambient, the wall flow detaches and rocket-nozzle-flow-separation's
separated-thrust loss replaces these attached-flow corrections.
- Using the plus-sign displaced-wall form: the effective area ratio
shrinks the core (eps_eff = eps * (1 - delta*/r_exit)**2) for this
internal flow; external-flow displacement conventions do not apply.
- Double-counting the cea band: cea-rocket-combustion's
isp_with_efficiency remains the c-star and user-supplied quick-look
band tool; this leaf supplies only the computed divergence and
boundary-layer share (about 0.97 of the ideal at the worked
example), so applying both to the same ideal Isp double counts the
nozzle side.
Related leaves
- propulsion/rocket/nozzle-design: the ideal attached-flow sizing
(exit Mach, mass flow, exit velocity, static pressure, ideal thrust
at the area ratio) that feeds this leaf its loss-free baseline.
- propulsion/rocket/rocket-nozzle-flow-separation: the off-design
overexpanded boundary that takes over once the wall flow separates.
- propulsion/combustion/cea-rocket-combustion: the ideal Isp ceiling
and the c-star side of the efficiency band this leaf computes the
nozzle share of.
- propulsion/rocket/rocket-gravity-loss: a different loss class
(trajectory), kept separate from the nozzle-side bookkeeping.
- propulsion/electric/hall-thruster: ion-optics divergence in its
electric context only, no gasdynamic overlap.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_rocket_nozzle_divergence_loss.py
The test covers the module constants and 1/7-power profile shape, the
conical divergence factor at the reference half-angles and its
monotonic fall, the bell contour efficiency and its validation, the
bell-to-conical ratio and its unit-ratio identity, the turbulent
displacement thickness worked value and growth scaling, the momentum
loss fraction and the theta profile identity, the displaced-core
effective exit area ratio and its limits, the no-loss thrust and Isp
identities, the full worked-example delivered chains for the 15-degree
conical and the 80-percent bell, the bell/conical delivered-ratio
verdict, the half-angle sensitivity peak and design band, and the
ValueError rejection of every non-physical input class across the
module, plus import purity and determinism.
Compliance
- Standards referenced, not reproduced: ECSS (ecss) frames the space
propulsion context per standards-map.yaml; the divergence,
boundary-layer and delivered-thrust relations above are standard
engineering methodology, summary-only.
- compliance: STANDARDS-REF, gated: false. The model never re-derives
the ideal exit Mach or mass flow: those are nozzle-design inputs.
1---2name: rocket-nozzle-divergence-loss3description: Use when you must compute the rocket-nozzle-divergence-loss bookkeeping from the nozzle geometry and the ideal attached-flow state: apply the conical divergence factor lambda = (1 + cos(alpha))/2 for the half-angle to the ideal axial momentum thrust, or the bell contour efficiency (0.98 typical for the 80-percent bell) in its place; grow the turbulent boundary layer over the divergent length to the displacement thickness and convert it with the 1-D mass-flux correction to the momentum loss fraction; assemble the delivered thrust from the loss-corrected momentum term and the unchanged pressure term. Produces the shape factor, the loss fraction, the effective exit area ratio, the delivered thrust and the nozzle-delivered-isp fraction of the ideal in SI units, replacing the band multiplier. Trigger: rocket-nozzle-divergence-loss, conical-nozzle-thrust-correction, bell-nozzle-efficiency, nozzle-delivered-isp, divergence loss, half-angle thrust loss.4license: Apache-2.05---67# Rocket Nozzle Divergence Loss (propulsion/rocket/rocket-nozzle-divergence-loss)89Use when the task is the deterministic delivered-thrust loss bookkeeping10of an attached-flow rocket nozzle: how much of the ideal axial momentum11thrust a conical or bell divergent contour actually delivers, what the12turbulent boundary layer over the divergent wall removes, and the13delivered Isp that results. The model computes the conical divergence14factor lambda = (1 + cos(alpha))/2 for the half-angle, the equivalent1580-percent-length bell contour efficiency in its place, the16boundary-layer displacement thickness grown over the divergent length,17the 1-D mass-flux momentum loss fraction, and the combined delivered18thrust and delivered Isp. It pairs with propulsion/rocket/nozzle-design,19which supplies the ideal attached-flow exit state at the geometry that20this leaf consumes as its loss-free baseline.2122## Domain quick reference2324- Conical divergence factor: lambda = (1 + cos(alpha))/2 for the25 half-angle alpha, the axial projection of the momentum flux leaving a26 conical wall. lambda(0 deg) tends to 1, lambda(60 deg) = 0.7527 exactly, lambda(15 deg) = 0.982963.28- Bell equivalence: the parabolic-contour bell at about 80 percent of29 the equivalent 15-degree conical length carries the contour30 efficiency eta_bell (0.98 typical, allowed as a parameter); the31 contour-only comparison with the cone it replaces is eta_bell /32 lambda(alpha), exactly 1.0 when eta_bell = lambda(15 deg).33- Turbulent growth over the divergent length L (flat plate, edge34 conditions at the exit): Re_L = rho_e * ve * L / mu, delta = 0.37 * L35 * Re_L**(-0.2), delta* = delta/8 and theta = (7/72) * delta =36 (7/9) * delta* for the 1/7-power profile.37- Displaced-core area: the wall layer shrinks the inviscid core, so38 eps_eff = eps * (1 - delta*/r_exit)**2 (internal flow); the throat39 boundary layer is neglected and the external-flow plus-sign40 displaced-wall form is not used.41- 1-D mass-flux correction: the layer removes the momentum flux through42 the exit annulus of momentum thickness theta, so the fractional loss43 of the momentum term is 2*theta/r_exit = (14/9)*delta*/r_exit to44 first order in delta*/r_exit; the pressure term (pe - pa)*Ae acts45 over the full geometric exit area and is unchanged.46- Delivered thrust and Isp: F_del = shape_factor * (1 - xi_bl) * mdot *47 ve + (pe - pa) * Ae and Isp_del = F_del / (mdot * g0), g0 =48 9.80665 m/s^2, with shape_factor the conical lambda or the bell49 contour efficiency. At shape 1 and xi_bl = 0 the chain reproduces the50 ideal thrust exactly (the no-loss identity).51- Units are SI throughout: N, kg/s, m/s, Pa, m^2, s.52- ECSS frames the space-propulsion context; the relations above are53 standard engineering methodology, summary-only. The claim does not54 extend past attached flow: off-design overexpansion to the55 separation limit invalidates the chain, and gamma and R are caller56 inputs from the hot-product state.5758## Workflow59601. Collect the geometry and the ideal attached-flow state: the61 half-angle alpha or the bell length fraction, the divergent length L62 (for a conical nozzle, L = (r_exit - r_throat)/tan(alpha)), the exit63 radius r_exit, and the ideal state mdot, ve, pe and Ae from64 nozzle-design at the same area ratio. Attached flow at the operating65 ambient is assumed.662. Choose the shape factor: conical_divergence_factor for a conical67 half-angle, or bell_contour_efficiency for the 80-percent bell68 contour in its place.693. Judge the bell-to-conical contour comparison with70 bell_relative_to_conical and note whether the shorter bell contour71 closes the gap to the cone it replaces.724. Grow the turbulent boundary layer over the divergent length with73 turbulent_displacement_thickness(length_m, vel_ms, rho_kgm3,74 mu_pas) to the exit displacement thickness.755. Convert the displacement thickness with boundary_layer_loss_fraction76 to the momentum loss fraction xi_bl and with77 effective_exit_area_ratio to the displaced-core effective exit area78 ratio eps_eff.796. Assemble the delivered thrust with delivered_thrust(mdot, ve, pe,80 pa, Ae, shape_factor, xi_bl) and the delivered Isp with81 delivered_isp(...); the pressure term keeps the full geometric exit82 area.837. Read off the delivered fraction of the ideal (F_del over the ideal84 thrust at the same geometry) and the bell-versus-conical verdict:85 the 80-percent-length bell delivers within about 0.1 percent of the86 full-length 15-degree conical, so its benefit is the 20 percent87 length and mass saving, not an Isp gain.888. Confirm the deterministic checks with the contract test89 scripts/test_rocket_nozzle_divergence_loss.py.9091## Worked example9293Representative LOX/RP-1 upper-stage nozzle: pc = 7.0 MPa, Tc = 3672 K,94Mw = 22.1 (R = 376.220 J/(kg K)), gamma = 1.24, c-star = 1791.2 m/s,95area ratio Ae/At = 70, throat radius 0.150 m, hot-product viscosity mu96= 8.0e-5 Pa s at the exit. The ideal attached-flow state at the97geometry (nozzle-design domain) is Me = 4.931384, pe = 6036.738 Pa,98rho_e = 0.017122 kg/m^3, ve = 3260.673 m/s, mdot = 276.24 kg/s,99r_exit = 1.2550 m, ideal vacuum thrust F_id = 930598.1 N and ideal100vacuum Isp = 343.522 s. Module outputs with these inputs are real:101102- Conical, half-angle 15 deg: lambda = 0.982963 over the divergent103 length L = (r_exit - r_throat)/tan(15 deg) = 4.124 m. Turbulent104 growth at Re_L = 2.879e6 gives delta* = 0.00974 m and the 1-D105 mass-flux loss xi_bl = (14/9)*delta*/r_exit = 0.01207 (1.21 percent106 of the momentum term); the displaced core eps_eff = 68.9176 (from107 70). Delivered vacuum thrust F_del = 904562.3 N, delivered Isp =108 333.911 s, fraction of the geometry ideal = 0.97202, inside the109 plausibility band [0.93, 0.98]. The prep anchor (full-precision110 unrounded ideal state) reports F_del = 904558.9 N, 3.4 N lower: the111 rounding of the printed mdot input, a 4e-6 relative difference.112- Equivalent bell (GVC 80-percent convention): Rao-class parabolic113 contour at L = 0.8 * 4.124 = 3.299 m with contour efficiency eta_bell114 = 0.98. The shorter wall grows delta* = 0.00815 m, xi_bl = 0.01010,115 eps_eff = 69.0940. Delivered thrust F_del = 903668.2 N, delivered116 Isp = 333.581 s, fraction = 0.97106 (anchor 903664.7 N, same 4e-6117 input-rounding band).118- Bell/conical delivered ratio = 0.99901: the 80-percent-length bell119 delivers within 0.10 percent of the full-length 15-degree conical120 (contour-only ratio 0.996986), the design verdict that the bell's121 benefit is its 20 percent length and mass saving, not an Isp gain.122- Half-angle sensitivity at fixed area ratio 70 (conical): the123 delivered fraction peaks near 10 deg where the shallow cone's longer124 wall starts to cost more boundary layer than the divergence saves:125 8 deg 0.97580, 10 deg 0.97644, 12 deg 0.97551, 15 deg 0.97202, 20126 deg 0.96194, 25 deg 0.94751, 28 deg 0.93699, 30 deg 0.92926. The127 typical design band 12-25 deg holds inside [0.93, 0.98]; only the128 steep 30 deg cone dips below the band.129- Read-off: this 70:1 nozzle loses about 2.8 percent of its ideal130 vacuum Isp at the geometry to divergence plus boundary layer (15-deg131 conical), or 2.9 percent with the shorter 80-percent bell; the132 nozzle-side share of the cea-rocket-combustion "80 to 95 percent of133 ideal" band is about 0.97, with the rest of the band owned by134 combustion (c-star) and finite-expansion accounting in the sibling135 leaves.136137## Verification138139- Confirm conical_divergence_factor(15.0) = 0.982963 within 1e-5 and140 conical_divergence_factor(60.0) = 0.75 exactly; lambda falls141 monotonically from 8 to 30 deg.142- Confirm bell_contour_efficiency() = 0.98,143 bell_relative_to_conical() = 0.996986 within 1e-5, and the ratio is144 1.0 within 1e-9 when eta_bell equals lambda(15 deg).145- Confirm the no-loss identity: delivered_thrust with shape 1 and xi 0146 reproduces mdot*ve + (pe - pa)*Ae with residual below 1e-6 N, and147 delivered_isp at pe = pa, shape 1, xi 0 equals ve/g0 = 332.496090 s.148- Confirm the worked-example chain returns F_del = 904562.3 N (conical149 15 deg) and 903668.2 N (80-percent bell, 0.98 contour) within 1 N,150 delivered Isp 333.911 s and 333.581 s within 0.05 s, fractions151 0.97202 and 0.97106 within 1e-4 and inside [0.93, 0.98], and the152 bell/conical ratio 0.99901 within 1e-4.153- Confirm the deterministic checks of step 8 and the ValueError154 rejections of non-physical inputs: half-angle at or beyond the (0,155 90) deg limits, contour efficiency outside (0, 1], displacement156 thickness at zero or at the exit radius, area ratio at or below 1,157 non-positive mass flow, velocity, area or g0, shape factor outside158 (0, 1] and loss fraction outside [0, 1).159- Run the contract test offline: python3160 scripts/test_rocket_nozzle_divergence_loss.py (30 tests,161 deterministic).162163## Pitfalls164165- Reading the anchor thrust at full precision: the prep anchor computes166 the ideal state at full internal precision, so its 904558.9 N sits167 3.4 N below the module output fed the spec's rounded inputs168 (904562.3 N). The 4e-6 relative difference is input rounding, not169 model error; the fractions, Isp, thicknesses and area ratios agree170 to the printed digits.171- Reporting the finite-expansion shortfall as a nozzle loss: the gap172 between the geometry ideal (343.522 s) and the fully expanded173 ceiling (385.276 s) is the area-ratio verdict of nozzle-design, not174 divergence or boundary-layer loss.175- Applying the chain past the separation limit: when the exit area176 ratio exceeds the separation-station area ratio at the operating177 ambient, the wall flow detaches and rocket-nozzle-flow-separation's178 separated-thrust loss replaces these attached-flow corrections.179- Using the plus-sign displaced-wall form: the effective area ratio180 shrinks the core (eps_eff = eps * (1 - delta*/r_exit)**2) for this181 internal flow; external-flow displacement conventions do not apply.182- Double-counting the cea band: cea-rocket-combustion's183 isp_with_efficiency remains the c-star and user-supplied quick-look184 band tool; this leaf supplies only the computed divergence and185 boundary-layer share (about 0.97 of the ideal at the worked186 example), so applying both to the same ideal Isp double counts the187 nozzle side.188189## Related leaves190191- propulsion/rocket/nozzle-design: the ideal attached-flow sizing192 (exit Mach, mass flow, exit velocity, static pressure, ideal thrust193 at the area ratio) that feeds this leaf its loss-free baseline.194- propulsion/rocket/rocket-nozzle-flow-separation: the off-design195 overexpanded boundary that takes over once the wall flow separates.196- propulsion/combustion/cea-rocket-combustion: the ideal Isp ceiling197 and the c-star side of the efficiency band this leaf computes the198 nozzle share of.199- propulsion/rocket/rocket-gravity-loss: a different loss class200 (trajectory), kept separate from the nozzle-side bookkeeping.201- propulsion/electric/hall-thruster: ion-optics divergence in its202 electric context only, no gasdynamic overlap.203204## Behavior contract (gate 3)205206Run the deterministic contract test (stdlib unittest, offline):207208 python3 scripts/test_rocket_nozzle_divergence_loss.py209210The test covers the module constants and 1/7-power profile shape, the211conical divergence factor at the reference half-angles and its212monotonic fall, the bell contour efficiency and its validation, the213bell-to-conical ratio and its unit-ratio identity, the turbulent214displacement thickness worked value and growth scaling, the momentum215loss fraction and the theta profile identity, the displaced-core216effective exit area ratio and its limits, the no-loss thrust and Isp217identities, the full worked-example delivered chains for the 15-degree218conical and the 80-percent bell, the bell/conical delivered-ratio219verdict, the half-angle sensitivity peak and design band, and the220ValueError rejection of every non-physical input class across the221module, plus import purity and determinism.222223## Compliance224225- Standards referenced, not reproduced: ECSS (ecss) frames the space226 propulsion context per standards-map.yaml; the divergence,227 boundary-layer and delivered-thrust relations above are standard228 engineering methodology, summary-only.229- compliance: STANDARDS-REF, gated: false. The model never re-derives230 the ideal exit Mach or mass flow: those are nozzle-design inputs.