Solid Rocket Motor (propulsion/rocket/solid-rocket-motor)
Use when the task is solid propellant rocket motor design and ballistics:
burn-rate law, chamber pressure equilibrium, grain geometry and web
thickness, mass flow through the throat, thrust, and total impulse.
This leaf is the ballistic core of the rocket pack; it pairs with
propulsion/rocket/nozzle-design (exit flow and thrust terms downstream
of the chamber) and with propulsion/rocket/combustion-chamber-design,
propulsion/rocket/propellant-selection, and propulsion/rocket/rocket-sizing.
Domain quick reference
- Burn-rate law (Vieille / St. Robert): the regression rate of the
burning surface is r = a * p^n, with pressure exponent n typically
0.2 to 0.5 for composite propellants and coefficient a set so that
rates of 2 to 8 mm/s result at operating pressure.
- Chamber pressure equilibrium: the pressure settles where the mass
generated by the burning surface, rho_p * A_b * r, equals the choked
mass flow through the throat, p_c * A_t / c*. Solving gives
p_c = (rho_p * a * A_b * c* / A_t)^(1/(1-n)). The exponent is
singular at n = 1: no finite equilibrium exists in that limiting case.
- Grain geometry: the web is the thickness of propellant consumed
normal to the burning surface; burn time is web / r. For a tubular
grain the inner-bore burn area is pi * D_inner * L, ignoring end
faces.
- Burn progression: a burn area that grows as the web burns is
progressive, one that holds is neutral, one that shrinks is
regressive. Progressive grains raise pressure and thrust over the
burn; regressive grains decay; neutral grains hold a plateau.
- Mass flow: m_dot = p_c * A_t / c* (choked throat), equal at
equilibrium to rho_p * A_b * r.
- Thrust: F = Isp * g0 * m_dot, with g0 = 9.80665 m/s^2.
- Total impulse: I_t = F * t_b, or equivalently Isp * g0 * m_prop.
- Characteristic velocity: c* = sqrt(R * T_c / (gamma *
(2/(gamma+1))^((gamma+1)/(gamma-1)))); typical AP/HTPB values near
1550 to 1600 m/s.
- Typical composite propellant (AP/HTPB): ammonium perchlorate oxidizer
in a hydroxyl-terminated polybutadiene binder, density about 1700 to
1850 kg/m^3, sea-level specific impulse about 240 to 260 s.
- Units are SI throughout: Pa, m, m^2, m/s, kg/s, K, N, N*s.
- ECSS space-systems standards frame the rocket propulsion context;
the ballistics relations above are standard engineering methodology,
summary-only.
Workflow
- Collect the propellant data: density rho_p, burn-rate coefficient a
and exponent n, and the chamber temperature, gamma, and gas constant
R for the characteristic velocity.
- Compute the characteristic velocity with characteristic_velocity.
- Choose the grain geometry and throat area; get the burn area with
tubular_grain_burn_area (or the equivalent for the chosen geometry)
and the web thickness.
- Solve the equilibrium chamber pressure with
equilibrium_chamber_pressure.
- Get the operating burn rate with burn_rate at that pressure.
- Compute the mass flow with mass_flow (or burn_mass_flow as the
burn-side cross-check) and the thrust with thrust_from_isp.
- Estimate the burn time with web_burn_time and the total impulse
with total_impulse, cross-checked by
total_impulse_from_propellant.
- Judge the grain with burn_area_verdict from the initial and final
burn areas (progressive, neutral, or regressive).
- Confirm the deterministic checks with the contract test
scripts/test_solid_rocket_motor.py.
Worked example
A tubular AP/HTPB grain with rho_p = 1800 kg/m^3, a = 2.0e-5 m/s per
Pa^n, n = 0.3, inner-bore burn area A_b = 0.14 m^2, throat area
A_t = 1.0e-4 m^2, and c* = 1600 m/s:
- Equilibrium pressure: p_c = (1800 * 2.0e-5 * 0.14 * 1600 / 1.0e-4)
^(1/0.7), about 10.2 MPa.
- Burn rate at equilibrium: r = a * p_c^n, about 2.5 mm/s.
- Mass flow: p_c * A_t / c*, about 0.64 kg/s (the burn side
rho_p * A_b * r matches within rounding).
- Thrust at Isp = 250 s: F = 250 * 9.80665 * 0.64, about 1.57 kN.
- Burn time for a 20 mm web: t_b = 0.02 / 0.0025, about 7.9 s.
- Total impulse: F * t_b, about 12.4 kN*s, matching
Isp * g0 * m_prop with the propellant mass rho_p * A_b * web = 5.04 kg.
A grain whose inner bore grows as it burns gives a growing burn area
and is progressive; a sliver or rod geometry that loses surface is
regressive; a star or wagon-wheel geometry cut for constant surface is
neutral.
Related leaves
- propulsion/rocket/nozzle-design: exit Mach, choked mass flow, exit
velocity, and thrust with the pressure term downstream of the chamber.
- propulsion/rocket/combustion-chamber-design: chamber geometry and
structural sizing around the ballistic solution.
- propulsion/rocket/propellant-selection: propellant families and
their burn-rate and impulse properties.
- propulsion/rocket/rocket-sizing: motor selection and sizing inside
the full launch vehicle mass and performance loop.
Pitfalls
- Assuming a neutral grain stays neutral as the web burns: the burn
area verdict must be re-checked for the geometry - a tubular bore
that grows with web is progressive, a sliver or rod that loses
surface is regressive, and only a star or wagon-wheel cut for
constant surface is neutral.
- Setting the pressure exponent near unity: the equilibrium solution
p_c = (rho_p * a * A_b * c* / A_t)^(1/(1-n)) is singular at n = 1 -
no finite chamber pressure exists in that limiting case, and the
module rejects it rather than returning a huge pressure.
- Balancing the chamber on the throat side alone: equilibrium requires
the burn-side mass flow rho_p * A_b * r to equal the choked throat
flow p_c * A_t / c*; the worked example cross-checks both sides
(about 0.64 kg/s each), so a mismatch between them means an input
error, not a motor quirk.
- Mixing burn-rate coefficient units: with r = a * p^n the coefficient
a is expressed per Pa^n (2.0e-5 m/s per Pa^n in the example) - a
coefficient tabulated in other pressure units shifts the whole
pressure equilibrium.
- Feeding zero burn area or zero throat area: both raise rejection
because the equilibrium has no physical content - a zero throat with
a burning grain would pressurize without bound.
- Reporting thrust without the impulse check: total_impulse from F * t_b
must match Isp * g0 * m_prop (about 12.4 kN*s both ways in the
example); the propellant-mass route catches thrust or burn-time
slips.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_solid_rocket_motor.py
The test covers the burn-rate law and exponent thresholds, the
characteristic velocity band, the chamber pressure equilibrium
identity (burn-side mass flow equals choked throat mass flow), the
n = 1 limiting case, zero burn area and zero throat area rejection,
mass flow, thrust, total impulse from thrust and from propellant mass,
tubular grain burn area, web burn time, and the burn progression
verdict.
Compliance
- Standards referenced, not reproduced: ECSS is a free ESA download
(ecss.nl/standards); solid propellant ballistics is standard
engineering methodology, summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: solid-rocket-motor3description: Use when the task is solid rocket motor design, grain sizing, or ballistics estimation. Size and analyze solid propellant rocket motors from first ballistics: compute the Vieille burn rate from the pressure exponent, solve the chamber pressure equilibrium between propellant burn rate and choked throat discharge, evaluate grain geometry with web thickness and burn area, and derive mass flow, thrust, and total impulse from the characteristic velocity c*. Uses typical AP/HTPB composite propellant parameters and judges the burn neutrality, regressivity, or progressivity of the grain. Produce the motor ballistics summary with the equilibrium chamber pressure, burn time, thrust, and impulse. Trigger: solid rocket motor, grain geometry, burn rate, chamber pressure, total impulse, characteristic velocity, web thickness.4license: Apache-2.05---67# Solid Rocket Motor (propulsion/rocket/solid-rocket-motor)89Use when the task is solid propellant rocket motor design and ballistics:10burn-rate law, chamber pressure equilibrium, grain geometry and web11thickness, mass flow through the throat, thrust, and total impulse.12This leaf is the ballistic core of the rocket pack; it pairs with13propulsion/rocket/nozzle-design (exit flow and thrust terms downstream14of the chamber) and with propulsion/rocket/combustion-chamber-design,15propulsion/rocket/propellant-selection, and propulsion/rocket/rocket-sizing.1617## Domain quick reference1819- Burn-rate law (Vieille / St. Robert): the regression rate of the20 burning surface is r = a * p^n, with pressure exponent n typically21 0.2 to 0.5 for composite propellants and coefficient a set so that22 rates of 2 to 8 mm/s result at operating pressure.23- Chamber pressure equilibrium: the pressure settles where the mass24 generated by the burning surface, rho_p * A_b * r, equals the choked25 mass flow through the throat, p_c * A_t / c*. Solving gives26 p_c = (rho_p * a * A_b * c* / A_t)^(1/(1-n)). The exponent is27 singular at n = 1: no finite equilibrium exists in that limiting case.28- Grain geometry: the web is the thickness of propellant consumed29 normal to the burning surface; burn time is web / r. For a tubular30 grain the inner-bore burn area is pi * D_inner * L, ignoring end31 faces.32- Burn progression: a burn area that grows as the web burns is33 progressive, one that holds is neutral, one that shrinks is34 regressive. Progressive grains raise pressure and thrust over the35 burn; regressive grains decay; neutral grains hold a plateau.36- Mass flow: m_dot = p_c * A_t / c* (choked throat), equal at37 equilibrium to rho_p * A_b * r.38- Thrust: F = Isp * g0 * m_dot, with g0 = 9.80665 m/s^2.39- Total impulse: I_t = F * t_b, or equivalently Isp * g0 * m_prop.40- Characteristic velocity: c* = sqrt(R * T_c / (gamma *41 (2/(gamma+1))^((gamma+1)/(gamma-1)))); typical AP/HTPB values near42 1550 to 1600 m/s.43- Typical composite propellant (AP/HTPB): ammonium perchlorate oxidizer44 in a hydroxyl-terminated polybutadiene binder, density about 1700 to45 1850 kg/m^3, sea-level specific impulse about 240 to 260 s.46- Units are SI throughout: Pa, m, m^2, m/s, kg/s, K, N, N*s.47- ECSS space-systems standards frame the rocket propulsion context;48 the ballistics relations above are standard engineering methodology,49 summary-only.5051## Workflow52531. Collect the propellant data: density rho_p, burn-rate coefficient a54 and exponent n, and the chamber temperature, gamma, and gas constant55 R for the characteristic velocity.562. Compute the characteristic velocity with characteristic_velocity.573. Choose the grain geometry and throat area; get the burn area with58 tubular_grain_burn_area (or the equivalent for the chosen geometry)59 and the web thickness.604. Solve the equilibrium chamber pressure with61 equilibrium_chamber_pressure.625. Get the operating burn rate with burn_rate at that pressure.636. Compute the mass flow with mass_flow (or burn_mass_flow as the64 burn-side cross-check) and the thrust with thrust_from_isp.657. Estimate the burn time with web_burn_time and the total impulse66 with total_impulse, cross-checked by67 total_impulse_from_propellant.688. Judge the grain with burn_area_verdict from the initial and final69 burn areas (progressive, neutral, or regressive).709. Confirm the deterministic checks with the contract test71 scripts/test_solid_rocket_motor.py.7273## Worked example7475A tubular AP/HTPB grain with rho_p = 1800 kg/m^3, a = 2.0e-5 m/s per76Pa^n, n = 0.3, inner-bore burn area A_b = 0.14 m^2, throat area77A_t = 1.0e-4 m^2, and c* = 1600 m/s:7879- Equilibrium pressure: p_c = (1800 * 2.0e-5 * 0.14 * 1600 / 1.0e-4)80 ^(1/0.7), about 10.2 MPa.81- Burn rate at equilibrium: r = a * p_c^n, about 2.5 mm/s.82- Mass flow: p_c * A_t / c*, about 0.64 kg/s (the burn side83 rho_p * A_b * r matches within rounding).84- Thrust at Isp = 250 s: F = 250 * 9.80665 * 0.64, about 1.57 kN.85- Burn time for a 20 mm web: t_b = 0.02 / 0.0025, about 7.9 s.86- Total impulse: F * t_b, about 12.4 kN*s, matching87 Isp * g0 * m_prop with the propellant mass rho_p * A_b * web = 5.04 kg.8889A grain whose inner bore grows as it burns gives a growing burn area90and is progressive; a sliver or rod geometry that loses surface is91regressive; a star or wagon-wheel geometry cut for constant surface is92neutral.9394## Related leaves9596- propulsion/rocket/nozzle-design: exit Mach, choked mass flow, exit97 velocity, and thrust with the pressure term downstream of the chamber.98- propulsion/rocket/combustion-chamber-design: chamber geometry and99 structural sizing around the ballistic solution.100- propulsion/rocket/propellant-selection: propellant families and101 their burn-rate and impulse properties.102- propulsion/rocket/rocket-sizing: motor selection and sizing inside103 the full launch vehicle mass and performance loop.104105## Pitfalls106107- Assuming a neutral grain stays neutral as the web burns: the burn108 area verdict must be re-checked for the geometry - a tubular bore109 that grows with web is progressive, a sliver or rod that loses110 surface is regressive, and only a star or wagon-wheel cut for111 constant surface is neutral.112- Setting the pressure exponent near unity: the equilibrium solution113 p_c = (rho_p * a * A_b * c* / A_t)^(1/(1-n)) is singular at n = 1 -114 no finite chamber pressure exists in that limiting case, and the115 module rejects it rather than returning a huge pressure.116- Balancing the chamber on the throat side alone: equilibrium requires117 the burn-side mass flow rho_p * A_b * r to equal the choked throat118 flow p_c * A_t / c*; the worked example cross-checks both sides119 (about 0.64 kg/s each), so a mismatch between them means an input120 error, not a motor quirk.121- Mixing burn-rate coefficient units: with r = a * p^n the coefficient122 a is expressed per Pa^n (2.0e-5 m/s per Pa^n in the example) - a123 coefficient tabulated in other pressure units shifts the whole124 pressure equilibrium.125- Feeding zero burn area or zero throat area: both raise rejection126 because the equilibrium has no physical content - a zero throat with127 a burning grain would pressurize without bound.128- Reporting thrust without the impulse check: total_impulse from F * t_b129 must match Isp * g0 * m_prop (about 12.4 kN*s both ways in the130 example); the propellant-mass route catches thrust or burn-time131 slips.132133## Behavior contract (gate 3)134135Run the deterministic contract test (stdlib unittest, offline):136137 python3 scripts/test_solid_rocket_motor.py138139The test covers the burn-rate law and exponent thresholds, the140characteristic velocity band, the chamber pressure equilibrium141identity (burn-side mass flow equals choked throat mass flow), the142n = 1 limiting case, zero burn area and zero throat area rejection,143mass flow, thrust, total impulse from thrust and from propellant mass,144tubular grain burn area, web burn time, and the burn progression145verdict.146147## Compliance148149- Standards referenced, not reproduced: ECSS is a free ESA download150 (ecss.nl/standards); solid propellant ballistics is standard151 engineering methodology, summary-only per standards-map.yaml.152- compliance: STANDARDS-REF, gated: false.