You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
Currently, the Flight class successfully calculates the forces acting on the rail buttons during the launch phase. We have access to:
Flight.rail_button1_normal_force & shear_force
Flight.rail_button2_normal_force & shear_force
However, we do not calculate the Bending Moments acting on the rocket structure at the rail button locations. This data is crucial for structural analysis, specifically to determine if the rail button attachment point (or the screw) might fail due to torque or bending loads during launch.
Describe the solution you'd like
I would like to extend the Flight class (specifically the rail phase derivative methods) to calculate and store the bending moments at the upper and lower rail buttons.
New attributes should be added to the class, similar to the existing force attributes:
Flight.rail_button1_bending_moment (Function)
Flight.max_rail_button1_bending_moment (float)
Flight.rail_button2_bending_moment (Function)
Flight.max_rail_button2_bending_moment (float)
Mathematical Context & Challenges
As noted by @giovaniceotto:
"The challenge arises when attempting to divide this into two Rail Buttons, assuming they can apply any force and moment, leading to a statically indeterminate system."
To solve this, the contributor needs to define a clear free-body diagram (FBD) assumption. A potential approach:
Use the Normal and Shear forces already calculated in udot_rail1.
Assume the rail buttons act as simple supports (pinned) or sliding supports, but consider the torque generated by the off-axis application of Thrust and Drag relative to the rail line.
Calculate the moment required to balance the rotational equation of motion ($\sum M = I \alpha$) given the geometric positions of Button 1 and Button 2 relative to the Center of Mass.
Implementation Details
Target File:rocketpy/flight/flight.py
Key Methods:udot_rail1 (and udot_rail2 if implemented).
Verification: The sum of moments and forces should balance the calculated linear and angular acceleration of the rocket while on the rail.
Acceptance Criteria
Implement the calculation of bending moments for both rail buttons.
Expose these values as Function objects in the Flight class.
Add unit tests ensuring values are non-zero when off-axis forces (like misalignment or wind) are present.
Additional Context
This is the final step to complete the "Rail Buttons Simulation" feature set started in 2019.
See Flight.rail_button1_normal_force implementation for reference on how the forces are currently stored.
Is your feature request related to a problem? Please describe.
Currently, the
Flightclass successfully calculates the forces acting on the rail buttons during the launch phase. We have access to:Flight.rail_button1_normal_force&shear_forceFlight.rail_button2_normal_force&shear_forceHowever, we do not calculate the Bending Moments acting on the rocket structure at the rail button locations. This data is crucial for structural analysis, specifically to determine if the rail button attachment point (or the screw) might fail due to torque or bending loads during launch.
Describe the solution you'd like
I would like to extend the
Flightclass (specifically the rail phase derivative methods) to calculate and store the bending moments at the upper and lower rail buttons.New attributes should be added to the class, similar to the existing force attributes:
Flight.rail_button1_bending_moment(Function)Flight.max_rail_button1_bending_moment(float)Flight.rail_button2_bending_moment(Function)Flight.max_rail_button2_bending_moment(float)Mathematical Context & Challenges
As noted by
@giovaniceotto:To solve this, the contributor needs to define a clear free-body diagram (FBD) assumption. A potential approach:
NormalandShearforces already calculated inudot_rail1.Implementation Details
rocketpy/flight/flight.pyudot_rail1(andudot_rail2if implemented).Acceptance Criteria
Functionobjects in theFlightclass.Additional Context
Flight.rail_button1_normal_forceimplementation for reference on how the forces are currently stored.