pub const EXHAUST_VELOCITY_RANGE_M_S: RangeInclusive<f64>;Expand description
The effective exhaust velocity c = I/m_p a solid motor’s curve and propellant mass have to
imply, m/s.
Measured over the 1,708 ThrustCurve.org simulator files with both a parsed impulse and a
catalog propellant mass (the mass crate::CatalogMotor::motor uses, which prefers the
metadata over the curve file’s header), c runs 236 to 3,031 m/s, with a median of 1,867 and
90% of them between 928 and 2,210 (the full table is in
docs/research/exhaust-velocity-guard.md). The bulk is APCP; the tail below
about 900 m/s is black powder, read low because Estes and Quest count the delay grain and the
ejection charge as propellant.
The bound rejects none of those 1,708. It is not a filter on propellant: it is there to
catch a mass-unit slip, grams given as kilograms, which moves c by a factor of 1,000: the
worked example in SolidMotor::from_envelope’s test lands at 1.8 m/s. c doesn’t depend on
the motor’s size, so sizes given in millimeters pass it. The headroom is real but not enormous
at the low end (the lowest catalog entry is 1.2x above the floor, the highest 1.65x below the
ceiling), and a 1/8A whose recorded propellant mass is mostly delay grain could fall through
the floor; issue #11 records the fallback, which is to apply the bound only above a couple of
grams.