ENH: Implement Parachute Opening Shock Force Estimation
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
Parachuteclass). - $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
- Update
ParachuteClass:- Add an optional
opening_shock_coefficient(defaulting to a standard value like 1.5 or calculated based on theporosityand geometry if possible).
- Add an optional
- New Method:
- Implement a method (e.g.,
calculate_opening_shock(density, velocity)) in theParachuteclass.
- Implement a method (e.g.,
- Integration with
Flight:- During the simulation (or post-processing), when a parachute event is triggered, the code should capture the specific
velocityandair_densityat that timestamp and calculate the theoretical peak shock load.
- During the simulation (or post-processing), when a parachute event is triggered, the code should capture the specific
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_coefficienttoParachute.__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 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).
