Skip to content

ENH: Implement Parachute Opening Shock Force Estimation #161

@Gui-FernandesBR

Description

@Gui-FernandesBR

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$).

Metadata

Metadata

Assignees

No one assigned

    Labels

    EnhancementNew feature or request, including adjustments in current codesGood first issueGood for newcomersParachuteRelated to parachutes methods and usage

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions