3D Dynamics - Vibrations for aircrafts
Tl;DR
The moment 2D mechanics is not enough.
Intro
- WHY Im writting this post: Bc I want to fully understand all 3d effects that will affect me during my ULM/PPL prep and as a way to test my mbsd oss fwk
- What Ive learnt with it: Ive ended
The dimension reduction worked great for cars.
But how about airplanes?
Can we use 2D or 3D is a must?
3D Dynamics x Airplanes
While 2D is the “speed king” for automotive refinement, the airplane use case is where the Dimensional Reduction Lemma finally hits a hard wall.
In an aircraft, you aren’t just sitting on a chassis that moves up and down; you are strapped to a power plant that is physically trying to twist the entire airframe.
For an airplane, 3D is a must for three primary reasons:
- The Gyroscopic Precession (The “Cross-Axis” Moment)
A spinning propeller and crankshaft act as a giant gyroscope.
In a car, the chassis stays relatively level.
In a plane, you are constantly pitching (climbing/diving) and yawing (turning).
The Physics: If you have a massive propeller spinning at 2500 RPM and you suddenly kick the rudder to yaw the plane left, the gyroscopic effect generates a massive pitch moment that tries to pull the nose up or down.
The Solver Requirement: This is a cross-product effect ($\vec{M} = \vec{\omega} \times \vec{L}$).
- Thrust-Moment Coupling
In our 2D engine model, we focused on “shake” (inertial forces). In an airplane, the Thrust is a massive constant vector acting along the $z$-axis (the one we ignored in 2D).
The Offset: If the engine is mounted even slightly above or below the center of gravity of the wing or fuselage, that thrust creates a permanent pitching moment.
Engine Mounts: Airplane mounts (often called “Lord mounts”) have to handle this constant axial tension/compression while still isolating the $1\times$ and $2\times$ vibration from the cockpit. A 2D model literally cannot see the $z$-axis thrust.
- Six-Degree-of-Freedom (6-DOF) Airframe Response
In a car, “Ground” is a stiff, heavy chassis.
In a plane, the “Chassis” is a lightweight, flexible aluminum or carbon fiber tube.
Complex Transmissibility: An engine vibration might start as a vertical shake at the nose, but because the fuselage is long and flexible, it might manifest as a tail-wagging vibration at the rear.
The Mount Matrix: Airplane mounts are often arranged in a “ring” or “dynafocal” configuration, where the mounts are angled so their focal point is the engine’s CG. This makes the $K$ (stiffness) matrix a dense 6×6 block that couples every single translation to a rotation.
| Feature | 2D Multi-Body | 3D Multi-Body |
|---|---|---|
| Piston Inertia | Perfect | Same |
| Combustion Force | Perfect | Same |
| Propeller Thrust | Hidden | Visible |
| Propeller Gyroscopics | Impossible | Required |
| Tail-Wagging (Yaw) | Impossible | Required |
If you are designing the internal balance of the engine (e.g., “Do I need counterweights on this Lycoming O-360 crankshaft?”), the 2D phasor framework is still the best and fastest tool.
But the moment you want to know “Will the pilot feel a vibration in the rudder pedals during a steep turn?”, you have to leave the 2D world and embrace the full 6-DOF 3D dynamics.
MBSD 0-9-0 Simulation
Coming from the 0-8-0 release, its time for the 0-9-0 where we take a good foundation around quaternons
scp jalcocert@192.168.1.2:/home/jalcocert/multibody-tests/v-0-8-1-concerns.md . I got inspired by this project’s roadmap: https://dbackup.app/roadmap/ In fact, thats sth i want to have in my project soon, with a /changelog as well that feeds from the same the repo has.
No open fatigue around here.
For the 0-9-0 was like 🚀
#http://192.168.1.2:3034/hermesagent/mbsd/src/branch/oss-core-2d/web
cd /home/jalcocert/Desktop/mbsd-framework/mbsd-core
git switch main
git merge --ff-only v0.8.0-dev
git tag -a v0.8.0 -m "MBSD Core v0.8.0"
git push origin main
git push origin v0.8.0
awk '
/^## v0\.8\.0 / { found=1; next }
/^## / && found { exit }
found { print }
' CHANGELOG.md | gh release create v0.8.0 \
--repo JAlcocerT/mbsd-core \
--verify-tag \
--title "MBSD Core v0.8.0 - Constrained spatial kinematics" \
--notes-file - \
--latestThen examples:
cd /home/jalcocert/Desktop/mbsd-framework/mbsd-examples
git switch main
git merge --ff-only v0.8.0-dev
git tag -a v0.8.0 -m "MBSD Examples v0.8.0"
git push origin main
git push origin v0.8.0
awk '
/^## v0\.8\.0 / { found=1; next }
/^## / && found { exit }
found { print }
' CHANGELOG.md | gh release create v0.8.0 \
--repo JAlcocerT/mbsd-examples \
--verify-tag \
--title "MBSD Examples v0.8.0 - Constrained spatial kinematics" \
--notes-file - \
--latestThe remaining roadmap:
fixed-orientation constrained translational dynamics
- 0.9.0: real rotational dynamics and orientation integration.
- 0.9.1: rotational joints, forces and torques.
- 0.9.2: 2D/3D API symmetry, documentation and API freeze.
- 1.0.0: stable minimal 2D/3D kinematics and dynamics.
v0.8.1 contains no dynamics. All four v0.8.0 concerns are now addressed:
- Contradictory drive value/velocity laws are rejected.
- Trajectory diagnostics compare pose derivatives with reported linear and angular velocities.
- model_id identifies structure; excitation_id identifies sampled drive behavior.
- Highly underconstrained systems use rank-aware minimum-norm projection.
- Nested result validation remains fully hardened.
Verification:
- Core: 95 tests passed.
- Examples: 28 tests plus all runnable examples passed.
- Ruff, builds, Twine and isolated wheel smoke tests passed.
- Both dev branches are clean.
Latest commits:
- Core: 3c81df0
- Examples: 7a4c19c
And yes: the former 0.8.2 dynamics preview belongs in 0.9.0. After releasing 0.8.1, we should create a fresh v0.9.0-dev from it and selectively bring over the useful old dynamics work rather than releasing v0.8.2-dev.
All six findings are addressed on v0.8.1-dev.
- Correct rotating-frame centrifugal, Coriolis and Euler forces.
- Correct physical reaction sign: -Cq.T @ lambda.
- Reject non-unit quaternions and invalid/mismatched diagnostics.
- Export and validate unit-separated spatial residual metrics.
- Include CAM and point-on-line Jacobian time derivatives.
- Clearly label the spherical example as an underdetermined kinematic path.
Verification:
- Core: 101 tests passed.
- Examples: 28 tests and all examples passed.
- Ruff, builds, Twine and isolated-wheel smoke tests passed.
- Both repositories are clean.
No spatial dynamics was added.
That work starts with the fresh v0.9.0-dev line after releasing 0.8.1.
https://app.multibodysystemsdynamics.com/?demo=slider-crank&r=0.35&l=1.15&e=0&rpm=60&steps=241
I couldnt avoid to email again to Gabe Morris :)
And email to
https://selfh.st/submit/
There are other oss mbsd fwks with interesting potential to have a look:
MBDyn (https://www.mbdyn.org/) graphical post-processor for blender (https://www.blender.org/)
- Some people put together mbd x fem - https://mbdfem.com/
- Project Chrono/PyChrono
- Exudyn
- Siconos
- OpenModelica
- MBDyn
- preCICE
https://www.youtube.com/watch?v=NxZ1tf8J1oY
https://www.youtube.com/watch?v=4_Z05iMmDNU
https://www.youtube.com/watch?v=eFGkopoCTYY
Conclusions
Who could have guessed: for bicycles and for airplanes we have to level up the modelling to 3D
Consulting Services
DIY via ebooksFAQ
- https://app.fireflies.ai/perks
- Perplexity and commet (from W11 only on the desktop)
do we really need betterpic and similar tool?
Or have they been superseeded by image 2 from openai?
https://www.youtube.com/watch?v=qfWpPEgea2A&t=191s
https://www.youtube.com/watch?v=rlLwSr-wIAg&t=431s
aristotel onassis