MGSuspensionBridgeStatics.html   (MotionGenesis input/output).
   (1) % MotionGenesis file:  MGSuspensionBridgeStatics.txt 
   (2) % Problem:  Static equilibrium of suspension bridge 
   (3) % Copyright (c) 2009 Motion Genesis LLC.  All rights reserved.
   (4) %--------------------------------------------------------------------
   (5) %       Physical declarations
   (6) NewtonianFrame N             % Ground (Earth)
   (7) RigidBody      A, B          % Support towers
   (8) Point          AL(A), AR(A)  % Highest  left-point and right-point of A 
   (9) Point          BL(B), BR(B)  % Highest  left-point and right-point of B 
   (10) Particle       Q             % Models objects attached to cable between A and B
   (11) %--------------------------------------------------------------------
   (12) %       Mathematical declarations (all constants are positive +)
   (13) Q.SetMass( m = 100000 kg )
   (14) Constant   g+  = 9.8 m/s^2   % Earth's gravitational acceleration
   (15) Constant   dA+ =  40 m       % Distance between No and tower A (horizontal)
   (16) Constant   w+  =   5 m       % Width of towers (horizontal)
   (17) Constant   dB+ = 100 m       % Distance between tower A and tower B (horizontal)
   (18) Constant   h+  =  30 m       % Height of top of towers above No (vertical)
   (19) Constant   L3+ =  80 m       % Distance between point AR and particle Q 
   (20) Constant   F+  = 800000 N    % Tension in pulling cable (known)
   (21) Constant   theta+ = 20 deg   % Angle between Nx> and line connecting AR to CR
   (22) Variable   q3                % Angle between Nx> and line connecting AR to Q 
   (23) Variable   T3                % Tension in cable between AR and Q
   (24) %--------------------------------------------------------------------
   (25) %       Position vectors 
   (26) AL.SetPosition( No, dA*Nx> + h*Ny> )
-> (27) p_No_AL> = dA*Nx> + h*Ny>

   (28) AR.SetPosition( AL,  w*Nx> )
-> (29) p_AL_AR> = w*Nx>

   (30) Q.SetPosition(  AR,  L3*cos(q3)*Nx> - L3*sin(q3)*Ny> )
-> (31) p_AR_Q> = L3*cos(q3)*Nx> - L3*sin(q3)*Ny>

   (32) BL.SetPosition( AR,  dB*Nx> )
-> (33) p_AR_BL> = dB*Nx>

   (34) BR.SetPosition( BL,  w*Nx> )
-> (35) p_BL_BR> = w*Nx>

   (36) %--------------------------------------------------------------------
   (37) %       Helpful unit vectors
   (38) L4 = BL.GetDistance( Q ) 
-> (39) L4 = sqrt(L3^2*sin(q3)^2+(dB-L3*cos(q3))^2)

   (40) QUnitVectorFromAR>  =  Q.GetPosition( AR ) / L3
-> (41) QUnitVectorFromAR> = cos(q3)*Nx> - sin(q3)*Ny>

   (42) QUnitVectorFromBL>  =  Q.GetPosition( BL ) / L4
-> (43) QUnitVectorFromBL> = -(dB-L3*cos(q3))/L4*Nx> - L3*sin(q3)/L4*Ny>

   (44) %--------------------------------------------------------------------
   (45) %       Contact and distance forces applied to Q 
   (46) Q.AddForce( -T3 * QUnitVectorFromAR>  -  F * QUnitVectorFromBL>  -  m*g*Ny> )
-> (47) Force_Q> = (F*(dB-L3*cos(q3))/L4-T3*cos(q3))*Nx> + (T3*sin(q3)+F*L3*sin
        (q3)/L4-m*g)*Ny>

   (48) %--------------------------------------------------------------------
   (49) %       Scalar equations governing Q's static equilbrium
   (50) ZeroStaticsWithPulleys[1] = Dot( Q.GetResultantMoment(AR), Nz> )
-> (51) ZeroStaticsWithPulleys[1] = -L3*(m*g*cos(q3)-dB*F*sin(q3)/L4)

   (52) ZeroStaticsWithPulleys[2] = Dot( Q.GetResultantForce(),    Nx> )
-> (53) ZeroStaticsWithPulleys[2] = F*(dB-L3*cos(q3))/L4 - T3*cos(q3)

   (54) %--------------------------------------------------------------------
   (55) %       Solve statics for q3 and T3 (nonlinear in q3, linear in T3)
   (56) SolnWithPulleys = Solve( ZeroStaticsWithPulleys,  q3 = 20 deg, T3 = Input(F) ) 
->   %  Note: q3 = 0.616316 radian  was converted from  q3 = 35.31231 deg.
-> (57) SolnWithPulleys = [0.616316;  588626.4]

   (58) %********************************************************************
   (59) %       Static analysis of q3 and cable tensions without pulleys
   (60) %********************************************************************
   (61) Point      CAL, CAR          % Points of cable coincident with AL and AR
   (62) Point      CBL, CBR          % Points of cable coincident with BL and BR
   (63) Point      CR                % Right-most point of cable C (where force is applied)
   (64) %--------------------------------------------------------------------
   (65) %       Unknown tensions in other parts of the cable.
   (66) Variable   T1                % Tension in cable between No and AL
   (67) Variable   T2                % Tension in cable between AL and AR
   (68) Variable   T4                % Tension in cable between Q  and BL
   (69) Variable   T5                % Tension in cable between BL and BR
   (70) %--------------------------------------------------------------------
   (71) %       Horizontal/vertical contact forces on cable from tower.
   (72) %       Assume no horizontal forces on cable from tower (frictionless?)
   (73) Variable  ALx = 0,  ALy      % Force on cable from A at AL
-> (74) ALx = 0

   (75) Variable  ARx = 0,  ARy      % Force on cable from A at AR
-> (76) ARx = 0

   (77) Variable  BLx = 0,  BLy      % Force on cable from B at BL
-> (78) BLx = 0

   (79) Variable  BRx = 0,  BRy      % Force on cable from B at BR
-> (80) BRx = 0

   (81) %--------------------------------------------------------------------
   (82) %       Forces on points of cable by tension in cable or towers (A or B)
   (83) L1 = AL.GetDistance( No ) 
-> (84) L1 = sqrt(dA^2+h^2)

   (85) unitVectorFromALToNo> = No.GetPosition( AL ) / L1
-> (86) unitVectorFromALToNo> = -dA/L1*Nx> - h/L1*Ny>

   (87) CAL.AddForce( T1*unitVectorFromALToNo> + T2*Nx> )
-> (88) Force_CAL> = (T2-dA*T1/L1)*Nx> - h*T1/L1*Ny>

   (89) CAL.AddForce( AL,  ALx*Nx> + ALy*Ny> )
-> (90) Force_CAL_AL> = ALx*Nx> + ALy*Ny>

   (91) CAR.AddForce( T3*QUnitVectorFromAR>  - T2*Nx> )
-> (92) Force_CAR> = (T3*cos(q3)-T2)*Nx> - T3*sin(q3)*Ny>

   (93) CAR.AddForce( AR,  ARx*Nx> + ARy*Ny> )
-> (94) Force_CAR_AR> = ARx*Nx> + ARy*Ny>

   (95) CBL.AddForce( T4*QUnitVectorFromBL>  + T5*Nx> )
-> (96) Force_CBL> = (T5-T4*(dB-L3*cos(q3))/L4)*Nx> - L3*T4*sin(q3)/L4*Ny>

   (97) CBL.AddForce( BL,  BLx*Nx> + BLy*Ny> )
-> (98) Force_CBL_BL> = BLx*Nx> + BLy*Ny>

   (99) unitVectorFromBRToCR> = cos(theta)*Nx> - sin(theta)*Ny>
-> (100) unitVectorFromBRToCR> = cos(theta)*Nx> - sin(theta)*Ny>

   (101) CBR.AddForce( F*unitVectorFromBRToCR>  - T5*Nx> )
-> (102) Force_CBR> = (F*cos(theta)-T5)*Nx> - F*sin(theta)*Ny>

   (103) CBR.AddForce( BR,  BRx*Nx> + BRy*Ny> )
-> (104) Force_CBR_BR> = BRx*Nx> + BRy*Ny>

   (105) %--------------------------------------------------------------------
   (106) %       Contact and distance forces applied to Q 
   (107) Q.ResetForce( -T3*QUnitVectorFromAR>  -  T4*QUnitVectorFromBL>  -  m*g*Ny> )
-> (108) Force_Q> = (T4*(dB-L3*cos(q3))/L4-T3*cos(q3))*Nx> + (T3*sin(q3)+L3*T4*
         sin(q3)/L4-m*g)*Ny>

   (109) %--------------------------------------------------------------------
   (110) %       Scalar equations governing the system's static equilbrium
   (111) Zero[1] = Dot( CAL.GetResultantForce(), Nx> )
-> (112) Zero[1] = ALx + T2 - dA*T1/L1

   (113) Zero[2] = Dot( CAL.GetResultantForce(), Ny> )
-> (114) Zero[2] = ALy - h*T1/L1

   (115) Zero[3] = Dot( CAR.GetResultantForce(), Nx> )
-> (116) Zero[3] = ARx + T3*cos(q3) - T2

   (117) Zero[4] = Dot( CAR.GetResultantForce(), Ny> )
-> (118) Zero[4] = ARy - T3*sin(q3)

   (119) Zero[5] = Dot( CBL.GetResultantForce(), Nx> )
-> (120) Zero[5] = BLx + T5 - T4*(dB-L3*cos(q3))/L4

   (121) Zero[6] = Dot( CBL.GetResultantForce(), Ny> )
-> (122) Zero[6] = BLy - L3*T4*sin(q3)/L4

   (123) Zero[7] = Dot( CBR.GetResultantForce(), Nx> )
-> (124) Zero[7] = F*cos(theta) + BRx - T5

   (125) Zero[8] = Dot( CBR.GetResultantForce(), Ny> )
-> (126) Zero[8] = BRy - F*sin(theta)

   (127) Zero[9] = Dot(   Q.GetResultantForce(), Nx> )
-> (128) Zero[9] = T4*(dB-L3*cos(q3))/L4 - T3*cos(q3)

   (129) Zero[10] =Dot(   Q.GetResultantForce(), Ny> )
-> (130) Zero[10] = T3*sin(q3) + L3*T4*sin(q3)/L4 - m*g

   (131) %--------------------------------------------------------------------
   (132) %       Solve nonlinear equation for q3.  Use guess of q3 = 30 degrees.
   (133) Solve( Zero,  q3 = 30 deg,  T1=1E5, T2=2E5, T3=3E5, T4=4E5, T5=5E5,  ALy=6E5, ARy=7E5, BLy=8E5, BRy=9E5 )
-> (134) q3 = 0.2974193       %  or  q3 = 17.04087 deg.
-> (135) T1 = 939692.6
-> (136) T2 = 751754.1
-> (137) T3 = 786274.7
-> (138) T4 = 1061604
-> (139) T5 = 751754.1
-> (140) ALy = 563815.6
-> (141) ARy = 230420.8
-> (142) BLy = 749579.2
-> (143) BRy = 273616.1

   (144) %********************************************************************
   (145) %       Static analysis of towers. 
   (146) %********************************************************************
   (147) %       Resultant force on A and B by cables
   (148) AResultantForceFromCable> = EvaluateToNumber( A.GetResultantForce() )
-> (149) AResultantForceFromCable> = -794236.3*Ny>

   (150) BResultantForceFromCable> = EvaluateToNumber( B.GetResultantForce() )
-> (151) BResultantForceFromCable> = -1023195*Ny>

   (152) %--------------------------------------------------------------------
   (153) %       Magnitude of the moment on A about the center of its base
   (154) Ao.SetPosition( AL,  0.5*w*Nx> - 2*h*Ny> )  
-> (155) p_AL_Ao> = 0.5*w*Nx> - 2*h*Ny>

   (156) MomentOnAAboutAo> = EvaluateToNumber(  A.GetResultantMoment(Ao) )
-> (157) MomentOnAAboutAo> = 833487*Nz>

   (158) %--------------------------------------------------------------------
   (159) %       Magnitude of the moment on B about the center of its base 
   (160) Bo.SetPosition( BL,  0.5*w*Nx> - 2*h*Ny> )  
-> (161) p_BL_Bo> = 0.5*w*Nx> - 2*h*Ny>

   (162) MomentOnBAboutBo> = EvaluateToNumber(  B.GetResultantMoment(Bo) )  
-> (163) MomentOnBAboutBo> = 1189908*Nz>

   (164) %--------------------------------------------------------------------
Saved by Motion Genesis LLC.   Command names and syntax: Copyright (c) 2009-2021 Motion Genesis LLC. All rights reserved.