Expand description
The flags a flight raises: the operating envelope’s four, where a flight goes past what hpr’s numbers have been checked for (ADR-143 §1, ADR-179; the validation plan’s Operating envelope), and two for a rocket that is unstable while a motor burns (#335; the guide’s Unstable under power), of which a flight raises at most one.
Every flight still flies; a flag only says that a number past its edge deserves less trust.
- unstable under power: a static margin below zero, in the weakest plane, from the rail exit
to apogee or the first deployment while a motor burns
(
FlightSummary::min_powered_static_margin_cal). The air then turns the rocket away from its path rather than back, so the path flown, and its apogee, follow from small disturbances and from aerodynamics that hold only at small angles of attack: they are not a prediction. - unstable without a margin: where hpr can give no static margin while a motor burns (the
net normal-force slope is not positive, or too small for the quotient to mean anything), a
pitch-moment slope
C_mαabove zero (FlightSummary::max_powered_moment_slope_per_rad): the same instability, read from the moment instead. Raised only when the first isn’t.
The envelope’s edges are by Mach number, and angle of attack is a separate condition:
- beyond the validated range: faster than
VALIDATED_MACH, the fastest public flight hpr has been compared with an independent reference on; - at high angle of attack: above
HIGH_ANGLE_OF_ATTACK_RAD(15°) more thanHIGH_ANGLE_GRACE_S(1 s) after the rail exit and before apogee or the first deployment, while a 15° angle would give a normal force of at leastHIGH_ANGLE_MIN_FORCE_SHAREof the rocket’s weight: where the aerodynamics’ small-angle assumptions stop holding and it matters; - outside the core band: past
CORE_BAND_MACH(2.5), where accuracy work goes second; - beyond the envelope: past
ENVELOPE_MACH(3.5), past commercial-motor flights.
Each edge is exclusive: a flight that reaches it exactly, or whose margin or moment slope is
exactly zero, raises no flag. The flags come from a FlightSummary:
its least static margin and largest moment slope without a margin under power, its top Mach
number, and its max_angle_of_attack_rad.
Enums§
- Envelope
Flag - One flag a flight raises, with the peak that raised it. Serialized with a
flagtag in snake case.
Constants§
- CORE_
BAND_ MACH - The core band’s top: Mach 2.5 (the envelope’s decision record). Accuracy work goes below it first.
- ENVELOPE_
MACH - The envelope’s top: Mach 3.5, about the fastest commercial-motor flights (the envelope’s decision record).
- HIGH_
ANGLE_ GRACE_ S - How long after the rail exit a large angle of attack is the expected transient, not a flag: 1 s, chosen rather than measured (the envelope’s decision record; M1.14e, on large angles of attack, measures it).
- HIGH_
ANGLE_ MIN_ FORCE_ SHARE - The share of the rocket’s weight below which an angle of attack doesn’t count: at that instant a 15° angle must give a normal force of at least a fifth of the weight. Chosen rather than measured (the envelope flags’ decision record): below it gravity, not the air, does most of the turning, so an error in that force moves the flight little. As the path turns over near apogee the angle passes 15° on an ordinary flight where 15° gives 0.7% to 5.0% of the weight (on the tests’ RocketPy rockets off 84° and 85° rails); a wind layer met at speed, 62% to 141%.
- HIGH_
ANGLE_ OF_ ATTACK_ RAD - The angle of attack that accuracy work assumes at most: 15°, in radians (the envelope’s decision record).
- VALIDATED_
MACH - The fastest public whole flight compared with an independent reference: OpenRocket 24.12’s
Dual parachute deployment example, Mach 1.1467, its own top Mach number in
validation/reports/openrocket-flights.json. A test inhpr-validatereads the committed public reports (that one, and RocketPy’s inlatest.json) and fails when this differs from their largest reference, so it rises as references are added (the envelope’s decision record, §1). Private flights never set it.
Functions§
- flags
- The flags raised by a flight whose top Mach number is
max_mach, whose largest counted angle of attack ismax_angle_of_attack_rad, whose least static margin while a motor burns ismin_powered_static_margin_cal, and whose largest static pitch-moment slope where that margin is undefined while a motor burns ismax_powered_moment_slope_per_rad, inEnvelopeFlag’s order. Each holds on its own, so a flight past Mach 3.5 raises all three Mach flags, but of the two unstable flags only the first raised counts: a margin below zero wins over a moment slope above it. A NaN peak raises its flags, so a broken number can’t hide one. - force_
counts - Whether an instant counts on a rocket of
mass_kgwhere a 15° angle gives a normal force ofnormal_force_n: at leastHIGH_ANGLE_MIN_FORCE_SHAREof its weight in standard gravity. A NaN counts, so a broken number can’t hide a flag. - normal_
force_ n - The normal force, N, that a normal-force slope
normal_force_slope_per_radon a reference diameterreference_diameter_mgives at an angle of attackangle_of_attack_radin a dynamic pressuredynamic_pressure_pa:q · (π d²/4) · |C_Nα| · α, the linear model, which is what the aerodynamics assume.