MGSkyDiverParachuteDynamics.html
MotionGenesis input/output:
(1) % MotionGenesis file: MGSkyDiverParachuteDynamics.txt
(2) % Purpose: Simulation of a sky-diver with free-fall then parachute deployment.
(3) % Note: Air-resistance forces change suddenly due to opening parachute.
(4) % Copyright (c) 2009-2026 Motion Genesis LLC. All rights reserved.
(5) %-------------------------------------------------------------------------------
(6) % Physical objects.
(7) NewtonianFrame N % Earth with Ny> vertically upward.
(8) Particle Q % Parachutist.
(9) %-------------------------------------------------------------------------------
(10) % Mathematical declarations.
(11) Constant vTerminal = 8 m/s % Terminal velocity with open parachute (28.8 km/hr, 17.9 mph).
(12) Constant g = 9.8 m/s^2 % Earth's gravitational acceleration.
(13) Specified b % Air-resistance drag constant (depends on time).
(14) Variable v' % Downward measure of Q's velocity relative to Earth.
(15) Variable y' = -v % Height y is measured positive upward.
-> (16) y' = -v
(17) Q.SetMass( m = 100 kg )
(18) %-------------------------------------------------------------------------------
(19) % Set Q's velocity and acceleration relative to Earth.
(20) Q.SetVelocityAcceleration( N, -v*Ny> )
-> (21) v_Q_N> = -v*Ny>
-> (22) a_Q_N> = -v'*Ny>
(23) %-------------------------------------------------------------------------------
(24) % Add air-resistance and gravity forces on parachutist.
(25) Fair> = -b * Q.GetVelocity(N)
-> (26) Fair> = b*v*Ny>
(27) Q.AddForce( -m*g*Ny> + Fair> )
-> (28) Force_Q> = (b*v-m*g)*Ny>
(29) %-------------------------------------------------------------------------------
(30) % Form a statics equation -- which is relevant for terminal velocity.
(31) Statics = Evaluate( Dot( Q.GetStatics(), Ny> ), v = vTerminal )
-> (32) Statics = vTerminal*b - m*g
(33) Solve( Statics = 0, b )
-> (34) b = m*g/vTerminal
(35) %-------------------------------------------------------------------------------
(36) % Create an expression for b that makes b = 0 for the first 4 seconds (free-fall),
(37) % and thereafter ensure b is the value determined from terminal velocity.
(38) isTimeGreaterThan4 = IsPositive( t - 4 )
-> (39) isTimeGreaterThan4 = IsPositive(-4+t)
(40) b *= isTimeGreaterThan4
-> (41) b = m*g*isTimeGreaterThan4/vTerminal
(42) %-------------------------------------------------------------------------------
(43) % Form dynamic equations with F = m*a.
(44) Dynamics = Dot( Q.GetDynamics(), Ny> )
-> (45) Dynamics = m*g - b*v - m*v'
(46) Solve( Dynamics = 0, v' )
-> (47) v' = g - b*v/m
(48) %-------------------------------------------------------------------------------
(49) % Set initial values for variables (for subsequent ODE() command).
(50) Input y = 200 m, v = 0 m/s
(51) %-------------------------------------------------------------------------------
(52) % List output quantities (for subsequent ODE() command).
(53) magFAir = GetMagnitude( Fair> ) % Magnitude of the air-resistance force.
-> (54) magFAir = abs(b*v)
(55) Output t sec, y m, v m/s, v' m/s, magFAir Newtons
(56) %-------------------------------------------------------------------------------
(57) % Set numerical integration parameters.
(58) Input tFinal = 9 sec, tStep = 0.02 sec, absError = 1.0E-05 noUnits
(59) %-------------------------------------------------------------------------------
(60) % Solve ODEs for y(t) and v(t) and write Output to file MGSkyDiverParachuteDynamics.1
(61) ODE() MGSkyDiverParachuteDynamics
(62) %-------------------------------------------------------------------------------
(63) % Optional: Plot results for v(t) vs. t.
(64) % Plot MGSkyDiverParachuteDynamics.1 [ 1, 3 ]
(65) %-------------------------------------------------------------------------------
(66) % Optional: Verify dynamics with Kane's method.
(67) SetGeneralizedSpeed( v )
(68) KaneDynamics = System.GetDynamicsKane()
-> (69) KaneDynamics = [b*v + m*v' - m*g]
(70) isSameDynamics = IsSimplifyEqual( KaneDynamics, Dynamics )
-> (71) isSameDynamics = true
(72) %-------------------------------------------------------------------------------
(73) % Record input together with responses.
Saved by MotionGenesis 6.6 Professional user Motion Genesis LLC.
Portions (including program responses) are copyright (c) 2009-2026 Motion Genesis LLC.