2. Newtonian Mechanics
Newtonian Mechanics has a VECTORIAL approach to the problems
restart:
libname := `C:/libs/MBSymba.lib`, libname: with(MBSymba_r4):
PDEtools[declare](prime=t,quiet):
2.1 Components of a Mechanical System
Bodies
Figure depicting the rigid body
Creating a rigid body
command structure: body1 := make_BODY (point of Center of Mass, mass, Ix comp, Iy comp, Iz comp, prod Cyz, prod Cxz, prod Cxy):1 - Define the body reference frame
> TM := translate(x(t),0,z(t)) * rotate('Y',mu(t)) * rotate('Z',psi(t));
2 - Define the point of depicting the center of gravity
>G := make_POINT(TM,xg,yg,zg): show(G);
3 - Define the rigid body
If the body has only principal moments of inertia
> body1 := make_BODY (G , m , Ix,Iy,Iz): show(body1);
If the body has principal moments and products of inertia
body1 := make_BODY (G , m , Ix,Iy,Iz, Cyz,Cxz,Cxy): show(body1);
Kinetic energy of the body
> kinetic_energy(body1);
Define the acceleration due to the gravity as a vector
| > | _gravity := make_VECTOR(ground, 0,0,g): show(_gravity); |
Gravitational (potential) energy of the body
| > | gravitational_energy(body1); |
Check the expression of gravitational energy (result should equal zero)
| > | - Zcomp(project(G,ground)) * g * m; % - gravity_energy(body1); |
Forces
Define a force acting on a body
command structure: make_FORCE(ref frame, x-comp, y-comp, z-comp , pt of application, body acted on, body reacted against):
1 - The reference frame
| > | TF := rotate('X',phi(t)); |
2 - The application point of the force
| > | A := make_POINT(TM,a,0,0): show(A); |
3 - The body on which the force acts
| > | show(body1); |
4a - Define a force acting on a single body (i.e. reacting on the ground)
| > | Fext := make_FORCE(TF,FX,FY,FZ, A , body1): show(Fext); |
4b - Define a force acting between two bodies
| > | body2 := make_BODY(TF,m): show(body2); |
| > | F12 := make_FORCE(TF,FX12,FY12,FZ12, A , body1,body2): show(F12); |
Vector operations such as projection can be performed on forces since they are vector entities
| > | project(F12,ground): show(%); |
Torques
Torques can be defined in a similar fashion to forces
command structure: make_TORQUE(ref frame, Mx-comp, My-comp, Mz-comp , body acted on, body reacted against)
Define a torque acting on a single body
| > | M := make_TORQUE(TF, MX,MY,MZ, body1): show(M); |
Define a torque acting between two bodies
| > | M12 := make_TORQUE(TF, MX12,MY12,MZ12, body1,body2): show(M12); |
2.2 Linear Momentum
The linear momentum of a body is the product of its mass multiplied by the velocity of the CoM (Center of Mass)
| > | LM1 := linear_momentum(body1): show(LM1);
ground coordinates
|
| > | LM1 := project(LM1,TM): show(LM1); body coordinates |
2.3 Newton's Equations
command structure: eqnsN := newton_equations({body under consideration}, reference coordinate frame):
| > | eqnsN := newton_equations({body1},ground): show(eqnsN); ground frame |
2.4 Angular Momentum
1 - The angular momentum of a point mass G with respect to a point P is equal to the cross product of PG (the distance from the axis of rotation to that point) multiplied by the linear momentum of the mass.
| > | MF := translate(x(t),y(t),z(t)); |
| > | point_mass := make_BODY( MF, m): #show(point_mass); |
| > | G := CoM(point_mass): #show(G); |
Axis or point about which the mass is rotating
| > | P := make_POINT(ground,px,py,pz): #show(P); |
Angular momentum
command structure: AM := cross_prod( perp dist btwn axis and pnt, linear momentum of the selected body):
| > | PG := make_VECTOR(P,G): #show(PG); |
| > | AM := cross_prod(PG,linear_momentum(point_mass)): show(AM); |
2 - The angular momentum of a rigid body with respect its center of mass is equal to the product of its inertia tensor by its angular velocity
command structure: AM1 := angular_momentum( selected body, CoM(selected body)):
| > | show(body1); |
| > | show( angular_velocity(body1[frame]) ); |
| > | AM1 := angular_momentum( body1, CoM(body1)): show(AM1); |
3 - The angular momentum of a rigid body with respect to a point P is the sum of the angular moment with respect the CoM plus the cross product of PG and the linear momentum
command structure AMP: 0 angular_momentum (specified body, axis of point of reference):
| > | AMP := angular_momentum(body1, P ): show(AMP); |
2.5 Euler Equations
The time derivative of the angular momentum must be equal to the angular momentum of all external forces (active and reactive)
| > | {body1}: The system |
| > | P: Axis or point about which the angular momentum is being calculated |
| > | ground: The reference frame |
Euler eqns for the system
command structure: eqnsE := euler_equations({specified body} , axis of point of rotation , reference frame):
eqnsE := euler_equations({body1} , P , ground ):
| > | show(eqnsE); |