Skip to main content

Module envelope

Module envelope 

Source
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 than HIGH_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 least HIGH_ANGLE_MIN_FORCE_SHARE of 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§

EnvelopeFlag
One flag a flight raises, with the peak that raised it. Serialized with a flag tag 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 in hpr-validate reads the committed public reports (that one, and RocketPy’s in latest.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 is max_angle_of_attack_rad, whose least static margin while a motor burns is min_powered_static_margin_cal, and whose largest static pitch-moment slope where that margin is undefined while a motor burns is max_powered_moment_slope_per_rad, in EnvelopeFlag’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_kg where a 15° angle gives a normal force of normal_force_n: at least HIGH_ANGLE_MIN_FORCE_SHARE of 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_rad on a reference diameter reference_diameter_m gives at an angle of attack angle_of_attack_rad in a dynamic pressure dynamic_pressure_pa: q · (π d²/4) · |C_Nα| · α, the linear model, which is what the aerodynamics assume.