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
* Added a button_height attribute to RailButtons with a default value of 15mm and updated the docstring
* added a _calculate_rail_button_bending_moments to calculate the desired attributes
* fixed new method added properties
* fixed typo
* fixed code, added documentation, updated changelog, added tests
* formatting
* FIX: Handle center_of_dry_mass_position as property or callable
* ENH: Address review feedback - make button_height optional (None), add prints/plots, improve documentation
* clarified documentation(assumptions) in flight.rst
* TST: Split default vs explicit None button_height tests
* make format
* MNT: Fix pylint config and remove duplicate test imports
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,6 +31,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
31
31
Attention: The newest changes should be on top -->
32
32
33
33
### Added
34
+
- ENH: Rail button bending moments calculation in Flight class [#893](https://github.com/RocketPy-Team/RocketPy/pull/893)
34
35
- ENH: Built-in flight comparison tool (`FlightComparator`) to validate simulations against external data [#888](https://github.com/RocketPy-Team/RocketPy/pull/888)
35
36
- ENH: Add persistent caching for ThrustCurve API [#881](https://github.com/RocketPy-Team/RocketPy/pull/881)
36
37
- ENH: Compatibility with MERRA-2 atmosphere reanalysis files [#825](https://github.com/RocketPy-Team/RocketPy/pull/825)
Copy file name to clipboardExpand all lines: docs/user/flight.rst
+33Lines changed: 33 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -266,6 +266,39 @@ The Flight object provides access to all forces and accelerations acting on the
266
266
M2 = flight.M2 # Pitch moment
267
267
M3 = flight.M3 # Yaw moment
268
268
269
+
Rail Button Forces and Bending Moments
270
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
271
+
272
+
During the rail launch phase, RocketPy calculates reaction forces and internal bending moments at the rail button attachment points:
273
+
274
+
**Rail Button Forces (N):**
275
+
276
+
- ``rail_button1_normal_force`` : Normal reaction force at upper rail button
277
+
- ``rail_button1_shear_force`` : Shear (tangential) reaction force at upper rail button
278
+
- ``rail_button2_normal_force`` : Normal reaction force at lower rail button
279
+
- ``rail_button2_shear_force`` : Shear (tangential) reaction force at lower rail button
280
+
281
+
**Rail Button Bending Moments (N⋅m):**
282
+
283
+
- ``rail_button1_bending_moment`` : Time-dependent bending moment at upper rail button attachment
284
+
- ``max_rail_button1_bending_moment`` : Maximum absolute bending moment at upper rail button
285
+
- ``rail_button2_bending_moment`` : Time-dependent bending moment at lower rail button attachment
286
+
- ``max_rail_button2_bending_moment`` : Maximum absolute bending moment at lower rail button
287
+
288
+
**Calculation Method:**
289
+
290
+
Bending moments are calculated using beam theory assuming simple supports (rail buttons provide reaction forces but no moment reaction at rail contact). The total moment combines:
291
+
292
+
1. Shear force × button height (cantilever moment from button standoff)
293
+
2. Normal force × distance to center of dry mass (lever arm effect)
294
+
295
+
Moments are zero after rail departure and represent internal structural loads for airframe and fastener stress analysis. Requires ``button_height`` to be defined when adding rail buttons via ``rocket.set_rail_buttons()``.
296
+
297
+
.. note::
298
+
See Issue #893 for implementation details and validation approach.
0 commit comments