
    \h(                        S SK JrJrJrJrJrJrJrJr  S SK	J
r
JrJrJr  S SK	JrJrJrJrJrJrJrJrJr  S SKJrJrJr  S SKJrJr  \" S5      u  rrr r!r"\" S5      r#\#RI                  SS	\\#RJ                  /5      r&\&RI                  S
S	\\&RN                  /5      r(\(RI                  SS	\ \(RR                  /5      r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4S r5g)    )sincostanpisymbolsMatrixSFunction)ParticlePointReferenceFrame	RigidBody)	angular_momentumdynamicsymbolskinetic_energylinear_momentumouterpotential_energymsubsfind_dynamicsymbols
Lagrangian)center_of_mass_validate_coordinates_parse_linear_solver)raiseswarns_deprecated_sympyzq1 q2 q3 q4 q5NAAxisBCc                  
  ^^^ [        S5      m[        S5      n U R                  TSTR                  -  5        [	        TR
                  TR
                  5      n[        SU TSX45      m[        S5      n[        SUS5      mTR                  R                  TS	TR
                  -  5        [        [        UU4S
 j5        [        [        UU4S j5        [        TTT5      S	TR
                  -  STR                  -  -   :X  d   eg )Nr   Ac   r      PPa   
   c                     > [        T T T5      $ Nr   r   r'   s   d/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/mechanics/tests/test_functions.py<lambda>&test_linear_momentum.<locals>.<lambda>       oaB7    c                     > [        T T T5      $ r+   r,   r   r'   s   r.   r/   r0      r1   r2   i  )r   r   set_velyr   xr   r   pointr   	TypeErrorr   )r#   Ir&   r   r   r'   s      @@@r.   test_linear_momentumr;      s    sA	tBJJq"qss(acc133A#r1b1'*Ac
A	$1	BHHQQSS!
978
9781a$QSS39(<<<<r2   c                    ^	^
^^ [        S5      u  pp#[        S5      n[        S5      m
[        S5      n[        S5      mTR	                  SUT
R
                  -  5      nUR	                  SUT
R
                  -  5      nTR                  T
ST
R
                  -  5        UR                  T
UT
R                  -  5        UR                  TT
U5        UR                  TT
U5        [        S	Xp5      m[        S
XeX[        T
R                  T
R                  5      -  U45      m	SU -  U-  U-  T
R                  -  X-  U-  T
R                  -  -   n[        T
T	T5      U:X  d   e[        [         U	U
U4S j5        [        [         U	UU4S j5        [        [         U
UU4S j5        X1US-  -  -   SU -  US-  -  -   U-  T
R                  -  n[#        TT
T	T5      U:X  d   eg)a  A rod with length 2l, centroidal inertia I, and mass M along with a
particle of mass m fixed to the end of the rod rotate with an angular rate
of omega about point O which is fixed to the non-particle end of the rod.
The rod's reference frame is A and the inertial frame is N.z
m, M, l, Iomegar   aOr#   r&   r   r'   r      c                      > [        TTT T5      $ r+   r   )r   r   r'   s   r.   r/   ;test_angular_momentum_and_linear_momentum.<locals>.<lambda>7       .q!Q;r2   c                      > [        TTT T5      $ r+   rB   )r   r?   r'   s   r.   r/   rC   8   rD   r2   c                      > [        TT TT5      $ r+   rB   )r   r?   r'   s   r.   r/   rC   9   rD   r2      N)r   r   r   r   	locatenewr7   r5   set_ang_velzv2pt_theoryr   r   r   r6   r   r   r9   r   )mMlr:   r=   r>   r#   r&   expectedr   r   r?   r'   s            @@@@r.   )test_angular_momentum_and_linear_momentumrP   #   s   
 &JA!7#EsAsAc
A	
T1qss7	#B
S!acc'"AIIaQSSMM!UQSS[!NN1aMM!Q	$	B#raeACCo"5r!:;A1uu}q 133&)<<H1a$000
9;<
9;<
9;<1Hq1uq!t|+u4qss:HAq!R(H444r2   c                  &  ^	^
^ [        S5      u  pn[        S5      n[        S5      m
[        S5      nUR	                  T
ST
R
                  -  5        UR                  SUT
R
                  -  5      nUR                  SUT
R
                  -  5      n[        S5      nUR                  T
UT
R                  -  5        UR                  UT
U5        UR                  UT
U5        [        S	X`5      m[        T
R                  T
R                  5      n[        S
XWXU45      m	[        [        U	U4S j5        [        [        U	U
4S j5        S[        T
TT	5      XS-  -  US-  -  S-  SUS-  -  U -  US-  -  -   US-  S-  -   -
  R!                  5       :X  d   eg )Nzm M l1r=   r   r?   r   r#   r&   r>   r'   r   c                     > [        TTT 5      $ r+   r   r-   s   r.   r/   %test_kinetic_energy.<locals>.<lambda>M   s    nRQ7r2   c                     > [        TTT 5      $ r+   rS   )r   r   s   r.   r/   rT   N   s    nQ15r2   r@   )r   r   r   r   r5   r7   rH   rI   rJ   rK   r   r   r   r   r9   r   expand)rL   rM   l1r=   r?   r#   r&   r>   r:   r   r   r'   s            @@@r.   test_kinetic_energyrX   >   sg   x HA"7#EsAc
AIIaQSS	
T28	$B
S"qss(#AsAMM!UQSS[!NN1aMM!Q	$	Bacc133A#raR)A
978
9562q)Q1uWUAX-=a-?Agaiq .!#(!8A:.. /069 9 9r2   c                     [        S5      u  pp#pE[        S5      n[        S5      n[        S5      nUR	                  USUR
                  -  5        UR                  SX'R
                  -  5      n	U	R                  SX'R
                  -  5      n
[        S5      nUR                  XvUR                  -  5        U	R                  XU5        U
R                  XU5        [        S	X5      n[        UR                  UR                  5      n[        S
XXU	45      nX-  U-  Ul        X-  U-  Ul        [        X5      X-  U-  X-  U-  -   :X  d   eg )Nzm M l1 g h Hr=   r   r?   r   r#   r&   r>   r'   r   )r   r   r   r   r5   r7   rH   rI   rJ   rK   r   r   r   r   )rL   rM   rW   ghHr=   r   r?   r#   r&   r>   r'   r:   r   s                  r.   test_potential_energyr]   S   s   /A"7#EsAc
AIIaQSS	
T28	$B
S"ss(#AsAMM!QSS[!NN1MM!	$	Bacc133A#raR)A%!)BAA"aeai!%!)&;;;;r2   c                    ^	^
^ [        S5      u  pp#[        S5      m
[        S5      nUR                  T
ST
R                  -  5        UR                  SST
R                  -  5      nUR                  T
ST
R                  -  5        [        SUS5      mUR                  S	S
T
R                  -  5      nUR                  T
ST
R                  -  5        [        S5      nUR                  T
ST
R                  -  5        [        T
R                  T
R                  5      n[        SXgSX45      m	X-  U-  Tl        X-  U-  T	l        [        [        U	U4S j5        [        [        U
U4S j5        g )NzM m g hr   r?   r   r&   r(   r)   r'   r#   r@      r>   r   r%   c                     > [        T T T5      $ r+   r   r-   s   r.   r/   !test_Lagrangian.<locals>.<lambda>w       jAr2r2   c                     > [        T T T5      $ r+   ra   r4   s   r.   r/   rb   x   rc   r2   )r   r   r   r5   r7   rH   r   r6   rI   rJ   r   r   r   r   r9   )rM   rL   rZ   r[   r?   r&   r#   r>   r:   r   r   r'   s            @@@r.   test_Lagrangianre   g   s   #JA!sAc
AIIaQSS	CQSS!AIIaacc	$1	B	
T1qss7	#BJJq!acc'sAMM!R!##Xacc133A#rb1'*A%!)BA
923
923r2   c            	         [        S5      u  p[        S5      u  p#n[        X-  U-   X#R                  5       -  U-   /UR                  5       R                  5       U[	        UR                  5       5      -   //5      n[        X-   U/UR                  5       R                  5       S//5      nUSUSUR                  5       SUR                  5       S0n[        XW5      U:X  d   e[        X#-   5      [        X#-   5      -  XR                  5       -  -   nUSU[        S-  UR                  5       S0n[        XWSS9US-   :X  d   e[        S5      nX(R                  -  X8R                  -  -   n	X(R                  UR                  -  -  X8R                  UR                  -  -  -   n
SUR                  -  nSUR                  UR                  -  -  nUSUS0n[        X5      U:X  d   e[        X5      U:X  d   eg )	Na, bx, y, zr(   r   r@   T)smartr   )r   r   r   diffr   r   r   r   r   r   r7   r6   )r>   br7   r6   rJ   exprsolsdr   vdv_sold_sols                r.   
test_msubsrs   {   s   6?DAY'GA!AC!GQvvxZ!^,FFHMMOQQVVX%679 :D
15!*668==?A&( )C
Q1affh1668Q	/B?c!!!qu:c!%j 1VVX:-D
Q2a41	%B&!a%///sA	####A	33qss7aQSSk!AaccEEqss133wKE
Q1B<5   <5   r2   c            	        ^ [        S5      u  p[        S5      u  p#n[        X-  U-   X#R                  5       -  U-   /UR                  5       R                  5       U[	        UR                  5       5      -   //5      nX#R                  5       X2R                  5       R                  5       XDR                  5       1n[        U5      U:X  d   eX#U/nUR                  5       UR                  5       R                  5       UR                  5       1n[        XWS9U:X  d   e[        S5      u  pn
[        S5      nXR                  -  XR                  -  -   XR                  -  -   mXU
1n[        TUS9U:X  d   e[        [        U4S j5        g )Nrg   rh   )excludezd, e, fr   )reference_framec                     > [        T 5      $ r+   )r   )ro   s   r.   r/   *test_find_dynamicsymbols.<locals>.<lambda>   s    215r2   )r   r   r   rj   r   r   r   r7   r6   rJ   r   
ValueError)r>   rk   r7   r6   rJ   rl   rm   exclude_listrp   efr   ro   s               @r.   test_find_dynamicsymbolsr}      sB   6?DAY'GA!AC!GQvvxZ!^,FFHMMOQQVVX%679 :D ffh668==?Avvx
8Ct$+++!9L668QVVX]]_affh
/Ct:cAAAY'GA!sA	CC!cc'AG#A)Cq!4;;;
:56r2   c                     [        S5      n [        SSS9n[        S[        S5      [        R
                  5      n[        S[        S5      [	        S	5      5      n[        S
[        S5      [	        S5      5      n[        S[        S5      U5      n[        S5      n[        S5      n[        S5      n[        SXvU[        UR                  UR                  5      U45      n	UR                  R                  UR                  U R                  5        UR                  R                  UR                  U R                  U R                  -   5        UR                  R                  UR                  U R                  5        U	R                  R                  UR                  U R                  U R                  -   5        [        S5      n
U
R                  UR                  [        UR                  X#XEU	5      5        SX-   S-   -  U R                  -  X-   S-   X-   S-   -  U R                  -  -   XU-   S-   -  U R                  -  -   nU
R                  UR                  5      U-
  S:X  d   eg )Nr>   rL   T)realp1p1_ptp2p2_ptr@   p3p3_pt   p4p4_ptb_fb_cmmbrk   or_      r   )r   r   r   r   r	   Oner   r   r7   r8   set_posr6   
masscenterrJ   r   pos_from)r>   rL   r   r   r   r   r   r   r   rk   point_orl   s               r.   test_center_of_massr      s   sA$A	$g	.B	$g!	-B	$g!	-B	$g	*B

C=D	B#t"uSUUCEE':D&ABAHHRXXqss#HHRXXqssQSSy)HHRXXqss#LL1339-#JGOOBHHnRXXrrqIJafqj>!##!afqj 9!## ==FQJPQPSPS@SSDBHH%d*a///r2   c                  $  ^ ^^^^^^^^^	^
^^^^^ [        S5      u	  mmmm
mmmmm[        S5      u  mmm[        TTT/T
TT/TTT/S9  [        TT/5        [        TT/T
/5        [        T
T/S9  [        TTT/T
TT/SS9  [        [        UUU
UU4S j5        [        TTT/T
TT/SS9  [        [        UUUU
U4S j5        [        [        UUUUU4S	 j5        [        TTT/T
TT/ST
TT/S
9  [        [        UUUU
UUUU4S j5        [        [        UUUU
UUUU4S j5        [        [        UUUU
UUUU4S j5        [        TT-   T/SS9  [        [        UUU4S j5        [        TTT/ST
T/SS9  [        [        UUUU
U4S j5        [        TT-   T-   T/ST
/SS9  [        [        UUUUU
4S j5        [        TT/SS9  [        [        UU4S j5        [         R
                  m	[        S5      m [        S[        S9u  mm[        T" T 5      T" T 5      /SS9  [        [        U UU4S j5        [        [        U UU4S j5        T [         l        [        T" T 5      T" T 5      /5        [        [        UUU	4S j5        T	[         l        g )Nzq1:4 u1:4 ua1:4zs1:4u_auxiliaryspeedsFcheck_duplicatesc                  (   > [        T TT/TTT/5      $ r+   r   )q1q2u1u2u3s   r.   r/   +test_validate_coordinates.<locals>.<lambda>   s    4	Rr2rl $r2   c                  &   > [        T TT/TTT/SS9$ NTr   r   )r   r   q3r   r   s   r.   r/   r          4	Rr2rlT ;r2   c                  &   > [        T TT/T TT/SS9$ r   r   )r   r   r   r   r   s   r.   r/   r      r   r2   )r   r   c                  ,   > [        T TT/TTT/TTT/S9$ Nr   r   r   r   r   r   r   r   ua2ua3s   r.   r/   r      %    4	Rr2rlS# @r2   c                  ,   > [        T TT/TTT/T TT/S9$ r   r   r   s   r.   r/   r      r   r2   c                  ,   > [        T TT/TTT/TTT/S9$ r   r   )r   r   r   r   r   r   ua1r   s   r.   r/   r      s%    4	Rr2rlc3 Ar2   is_dynamicsymbolsc                  $   > [        T T-   T/5      $ r+   r   )r   r   r   s   r.   r/   r      s    4b2gr]Cr2   r   c                  &   > [        TT T/STT/SS9$ Nr   Tr   r   )r   r   s1r   r   s   r.   r/   r      s    4	Rq"bkT ;r2   c                  .   > [        TT-   T-   T /ST/SS9$ r   r   )r   r   s2s3r   s   r.   r/   r      s#    4	b2rQGt =r2   )r   r   c                     > [        T T/S9$ r   r   )r   r   s   r.   r/   r      s    4"cKr2   r>   zf1:3)clsc                  6   > [        T" T 5      T" T 5      /5      $ r+   r   r>   f1f2s   r.   r/   r          4beRU^Dr2   c                  2   > [        T" T 5      T" T 5      /S9$ )Nr   r   r   s   r.   r/   r      s    4RUBqENKr2   c                  6   > [        T " T5      T" T5      /5      $ r+   r   )r   r   ts   r.   r/   r      r   r2   )r   r   r   r   ry   _tr
   )r>   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @@@@@@@@@@@@@@@@r.   test_validate_coordinatesr      sd   ,:;L,M)BBBCcJBB2r2,R'*Co7 2r(#2r(RD)"b*2r2,RuM
: $ $ %2r2,RuM
: ; ; <
: ; ; <2r2,Ru')3n6
: @ @ A
: @ @ A
: A A B 27B-5A
:CD2r2,BuM
: ; ; <27R<,q"gO
: = = >r3i5I
:KLAAV*FB2a5"Q%.EB
:DE
:KLN2a5"Q%.)
:DENr2   c                  
   [        SS[        S5      5      [        SS[        S5      5      p[        [         R                  5      [         R                  :X  d   e[        S5      " X5      [         R                  " X5      :X  d   eg )Nr   za:9r@   zb:6LU)r   r   r   LUsolve)r   rk   s     r.   test_parse_linear_solverr      s_    !Q'1gen)Eq/6>>AAA%a+v~~a/CCCCr2   c                     SSK Jn JnJn  [	        S5      n[        5          U " USSSS5      UR                  UR                  -  UR                  UR                  -  -   UR                  UR                  -  -   :X  d   e S S S 5        [        5          U" SUR                  UR                  -   U5      UR                  UR                  -  UR                  UR                  -  -   SUR                  UR                  -  -  -   UR                  UR                  -  -
  UR                  UR                  -  -
  :X  d   e S S S 5        [        S5      n[        5          U" SUR                  -  U5      UR                  SUR                  -  UR                  -  4/:X  d   e S S S 5        g ! , (       d  f       GN/= f! , (       d  f       N= f! , (       d  f       g = f)Nr   )inertiainertia_of_point_massgravityr   r(   r@   r&   )!sympy.physics.mechanics.functionsr   r   r   r   r   r7   r6   rJ   r   r   mass)r   r   r   r   ps        r.   test_deprecated_moved_functionsr      se   1 1sA		!q!Q1%!##)acc	)BaccACCi)PPPP 
"		!$Qacc	15SS133Y1339%QSS133Y7SS133Y339&' 	' ' 
" 	A		!rACCx#rAFF{QSS7H(I'JJJJ 
"	! 
"	!	!	!
 
"	!s&   AF'B*F9AG
'
F69
G

GN)6sympyr   r   r   r   r   r   r	   r
   sympy.physics.mechanicsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   sympy.testing.pytestr   r   r   r   r   q4q5r   	orientnewrJ   r   r7   r    r6   r!   r;   rP   rX   r]   re   rs   r}   r   r   r   r    r2   r.   <module>r      s    A A A0 0F F F
A A ? -. BB3KKVb!##Y'KKVb!##Y'KKVb!##Y'=569*<(4(!0720*0fDKr2   