RocketPy icon indicating copy to clipboard operation
RocketPy copied to clipboard

ENH: Implement Parachute Opening Shock Force Estimation

Open Gui-FernandesBR opened this issue 3 years ago • 2 comments

Is your feature request related to a problem? Please describe. Currently, RocketPy allows users to define a parachute's drag properties ($C_d S$) and trigger conditions. However, it does not calculate the Opening Shock Force (or "Inflation Load").

This is the peak transient force exerted on the recovery harness (shock cords, bulkheads) during the rapid inflation of the canopy. Without this value, users cannot accurately size their recovery hardware, leading to potential structural failures during recovery that the simulation currently doesn't warn about.

Describe the solution you'd like I would like to implement a method to estimate the peak opening force based on the standard approximation found in Knacke's Parachute Recovery Systems Design Manual (Section 5.5).

The general formula for the maximum opening force ($F_o$) is: $$F_o = C_x \cdot X_1 \cdot q \cdot S \cdot C_d$$

Where:

  • $C_d S$: The drag area of the parachute (already in Parachute class).
  • $q$: Dynamic pressure at the moment of line stretch/inflation ($\frac{1}{2} \rho V^2$).
  • $C_x$: The opening force coefficient (typically between 1.2 and 2.0, depending on canopy type).
  • $X_1$: An infinite mass opening factor (often simplified or combined with $C_x$).

Implementation Details

  1. Update Parachute Class:
    • Add an optional opening_shock_coefficient (defaulting to a standard value like 1.5 or calculated based on the porosity and geometry if possible).
  2. New Method:
    • Implement a method (e.g., calculate_opening_shock(density, velocity)) in the Parachute class.
  3. Integration with Flight:
    • During the simulation (or post-processing), when a parachute event is triggered, the code should capture the specific velocity and air_density at that timestamp and calculate the theoretical peak shock load.

Proposed Usage

# In Parachute definition
main = Parachute(name="Main", cd_s=10.0, opening_shock_coefficient=1.6, ...)

# In Flight analysis (Post-processing)
print(f"Peak Shock Force: {flight.parachutes[0].opening_shock_force} N")

Acceptance Criteria

  • [ ] Add opening_shock_coefficient to Parachute.__init__.
  • [ ] Implement the shock force calculation formula.
  • [ ] Verify the output against a textbook example (Knacke) or a known flight data point.
  • [ ] Update documentation to explain that this is an empirical estimation of the peak load, not a result of the equation of motion integration.

Additional Context

  • Reference: Knacke, T. W. (1992). Parachute Recovery Systems Design Manual. Para. Pub. (Page 5-50).
  • Physics Note: This force is usually significantly higher than the steady-state drag force ($F_{drag} = q \cdot C_d S$).

Gui-FernandesBR avatar Mar 21 '22 01:03 Gui-FernandesBR

@Gui-FernandesBR sure! I started the development at utilities.py, using an estimation for the peak opening force available in Knacke's Parachute Recovery Systems Design Manual page 5-50. Curently, the idea is to make a simple function, using as input only the velocoty of the rocket in the moment of the ejection, height, possibly the environment(to get the air velocity) and the opening-force-reduction factor (I am studying the possibility of, instead of this, using the mass of the rocket).

FranzYuri avatar Jun 16 '22 06:06 FranzYuri

image

FranzYuri avatar Jun 16 '22 06:06 FranzYuri