Skip to main content

tumbling

Function tumbling 

Source
pub fn tumbling(
    devices: Vec<Device>,
    rocket: &Rocket,
    assembly: &Assembly,
    separations: &[Separation],
) -> Result<Vec<Device>, RecoveryRefused>
Expand description

devices with a tumble added for each part of separations that needs one: the flight flies a separated part as a point with no airframe drag of its own, so each part must have a device open from the moment it flies alone (hpr_sim::Simulation::with_separations).

  • Each dropped part, body k + 1 for separation k (the booster first), tumbles from its split (DeviceDrag::tumbling_stages over its stages), until the first of its own devices, in list order, opens: that device releases the tumble, so a part under its parachute has the parachute’s drag alone, as OpenRocket flies a descent (its technical documentation v13.05, §4.2.5).
  • The sustainer, body 0, flies on as a rigid body with its own aerodynamics. Only when no device rides it is a tumble from its apogee added, so that it has a descent.
  • The part that keeps the nose after a lone separation with nothing ahead of it left to burn (Separation::powered_at) flies on as a point too, from the split. A device of its own must be open by then, one whose trigger’s time, known before the flight, is at or before the split’s: else it would coast with no drag, and it is refused rather than tumbled, as nothing says how a part with no fins flies on its own (ADR-165).

The tumbles go after devices, so each device keeps its index. Each is named after its part’s first stage, such as “Booster, tumbling”, or, for a stage with no name, “sustainer”, “booster” or “stage 2” (counted from the nose’s, 1).

§Errors

RecoveryRefused::Tumbling when DeviceDrag::tumbling_stages refuses a part’s stages, such as a part with tube fins, or more than eight fins in a set; RecoveryRefused::Coasts when the part that keeps the nose would coast.