
    she                        S SK Jr  S SKJrJr  S SKJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJrJrJrJrJr  S S	KJr  S S
KJrJrJrJrJr  S SKJr  S SKJ r J!r!J"r"J#r#  S SK$J%r%  \" S5      r&\" S5      r'\	" S5      u  r(r)S r*S r+S r,S r-S r.S r/S r0S r1S r2S r3S r4S r5S r6S r7S r8S  r9S! r:S" r;S# r<S$ r=S% r>S& r?S' r@S( rAS) rBS* rCS+ rDg,)-    )expand)Rationalpi)S)Symbolsymbols)Interval)simplify)Beam)SingularityFunction	PiecewisemeijergAbslog)raises)meternewtonkilogigamilli)Beam3D)CirclePolygonPoint2DTriangle)sympifyxyR1, R2c                    ^ [        S5      n [        S5      n[        S5      n[        S5      n[        S5      n[        SX5      nUR                  S:X  d   eUR                  U :X  d   eUR                  U:X  d   eUR
                  [        :X  d   eSUl        UR                  S:X  d   eXl        UR                  U:X  d   eX5l        UR                  UL d   e[        Ul        UR
                  [        L d   eS/Ul        S	/Ul	        S
/Ul
        S/Ul        UR                  S/S	/S
/S/S.:X  d   eUR                  R                  SS/5        UR                  nU/ SQ:X  d   eUR                  R                  SS/5        UR                  nU/ SQ:X  d   eUR                  R                  SS/5        UR                  nU/ SQ:X  d   eUR                  R                  SS/5        UR                  n	U	/ SQ:X  d   eUR                  n
U
/ SQ/ SQ/ SQ/ SQS.:X  d   e[        SX5      nUR                  SSS5        UR                  [        SS5        UR                  [         SS5        UR                  SSS5        SS/Ul        UR#                  [        [         5        UR$                  n[        S [         S!0nX:X  d   eUR&                  nS[)        [        SS5      -  S [)        [        SS5      -  -   S[)        [        SS5      -  -   S![)        [        SS5      -  -   nX:X  d   eUR+                  5       nS"[)        [        SS5      -  S [)        [        SS5      -  -
  S[)        [        SS5      -  -
  S![)        [        SS5      -  -
  nX:X  d   eUR-                  5       nS"[)        [        SS5      -  S [)        [        SS5      -  -
  S[)        [        SS5      -  -
  S![)        [        SS5      -  -
  U-  nX:X  d   eUR/                  5       nS"[)        [        SS5      -  S [)        [        SS5      -  -
  S[)        [        SS5      -  -
  S![)        [        SS5      -  -
  nX:X  d   eUR1                  5       nS#[)        [        SS!5      -  S$[)        [        SS!5      -  -   S[)        [        SS5      -  -   [)        [        SS!5      -   [3        S%S$5      -   nXX-  -  :X  d   eUR5                  5       n[        [3        S%S$5      -  S[)        [        SS$5      -  S$-  -
  [)        [        SS$5      -   S&[)        [        SS!5      -  -   [)        [        SS$5      S$-  -   S'-
  nXX-  -  :X  d   e[        S(5      n[        S)5      n[        S*5      n[        S+5      n[        S,5      n[        S-5      n[        S.5      n[        S/5      n[        S05      n[        XU5      nUR                  UUS5        UR                  UUS5        UU4/Ul        UU4/Ul	        UR&                  nU[)        [        US5      -  U[)        [        US5      -  -   nX:X  d   eUR+                  5       nU* [)        [        US!5      -  S!-  U[)        [        US5      -  -
  nX:X  d   eUR-                  5       nU* [)        [        US!5      -  S!-  U[)        [        US5      -  -
  U-  nX:X  d   eUR/                  5       nU* [)        [        US$5      -  S -  U[)        [        US5      -  -
  nX:X  d   eUR1                  5       nU[)        [        US5      -  S1-  U[)        [        US!5      -  S!-  -   X-  -  X-  U-  U[)        UUS5      -  S1-  -
  U[)        UUS!5      -  S!-  -
  X-  -  -   n[7        U5      [7        U5      :X  d   eUR5                  5       n[        X-  U-  U[)        UUS5      -  S1-  -
  U[)        UUS!5      -  S!-  -
  -  X-  -  U[)        [        US25      -  S-  U[)        [        US$5      -  S -  -   X-  -  -   X-  U* U-  U-   -  UU-  [)        UUS5      -  S1-  -   UU-  [)        UUS!5      -  S!-  -   U[)        UUS25      -  S-  -
  U[)        UUS$5      -  S -  -
  X-  -  -   n[9        X-
  5      S:X  d   e[        S3XS!5      nUR                  SS!S!S$S49  UR                  R;                  S5        [=        S55      n[=        S65      nUR&                  nS[)        [        S!S!5      -  S![)        [        S$S5      -  -   S[)        [        S$S5      -  -   S![)        [        S$S!5      -  -   nX:X  d   eUR+                  5       nS![)        [        S!S$5      -  S$-  S![)        [        S$S5      -  -
  S![)        [        S$S!5      -  -
  S![)        [        S$S$5      -  S$-  -
  nX:X  d   eUR-                  5       n[)        [        S!S$5      S$-  S[)        [        S$S5      -  -
  S[)        [        S$S!5      -  -
  S[)        [        S$S$5      -  S$-  -
  nX:X  d   eUR1                  5       nS![)        [        S!S25      S-  [)        [        S$S$5      S$-  -
  [)        [        S$S5      S -  -
  [)        [        S$S25      S-  -
  X-  -  -
  nX:X  d   eUR5                  5       nS![        -  [)        [        S!S 5      S7-  [)        [        S$S5      S8-  -
  [)        [        S$S25      S-  -
  [)        [        S$S 5      S7-  -
  X-  -  -
  nXU-   :X  d   e[        SXS$5      mTR                  S9SSS$S:9  TR&                  nS9[)        [        SS5      -  S$[)        [        S$S5      -  -   nX:X  d   eTR+                  5       nS$[)        [        SS5      -  S$[)        [        S$S5      -  -
  nX:X  d   eTR-                  5       n[)        [        SS5      [)        [        S$S5      -
  nX:X  d   eTR1                  5       nS9[)        [        SS$5      -  S -  S$[)        [        S$S$5      -  S -  -   nXX-  -  U-   :X  d   eTR5                  5       nS9[)        [        SS5      -  S1-  S$[)        [        S$S5      -  S1-  -   nXX-  -  U[        -  -   U-   :X  d   e[?        [@        U4S; j5        [?        [B        5         STl        S S S 5        g ! , (       d  f       g = f)<NEE_1II_1A      r      r   r&   r      r)   r&   )
deflectionslopebending_momentshear_forcer&   r&   r)      )r-   r2   r3   r&   r4   r,   r4   )r+   r5   r6   r'   r4   r,   r   )r*   r7   r8   )r(   r7   r8      r   
   x   )r<   r   )r9   r      r)      r4     <   .  lw0w2a1cc1def   r,   	   )valuestartorderendC3C4      rS   c                  (   > T R                  SSSSS9$ )NrX   r   r;   r4   rY   )
apply_load)b4s   څ/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/sympy/physics/continuum_mechanics/tests/test_beam.py<lambda>test_Beam.<locals>.<lambda>   s    r}}RBA}>    )"r   r   lengthelastic_modulussecond_momentvariabler   r   bc_deflectionbc_slopebc_bending_momentbc_shear_forceboundary_conditionsextendr[   R1R2solve_for_reaction_loadsreaction_loadsloadr   r1   shear_stressr0   r/   r   r.   r   r
   appendr   r   
ValueError	TypeError)r!   r"   r#   r$   r%   bsf_bcsbm_bcss_bcsd_bcsbcs_newb1pqrE   rF   rG   rH   rI   rJ   rK   rL   rM   b2b3rT   rU   r\   s                              @r]   	test_Beamr      s   sA
-CsA
-CsAQA88q==!!!??a::?? AH88q== ### O??c!!! AJ::?? hAOAJ!(AxA  F8vh8>xQWPX%Z Z Z Z VV,-F---- /0  F---- JJvv&'JJE,,,, OOFF+,OOE,,,, ##G.)2/	1 1 1 1 
b!BMM"aMM"b"MM"b"MM#r2)BB' 	A	QAA6M6 	A
q!R((1-@B-K+KK	
aR
((	)+,-@B-K+K	LA6M6 	A	
aA
&&+>q"a+H)HH	
aR
((	)+,-@B-J+J	KA6M6 	A	
q!Q'	'!,?2q,I*I	I	
aR
((
)Ar1%%
&'(	)A 4K4 	A	
aA
&&+>q"a+H)HH	
aQ
''	(*+,?2q,I*I	JA6M6 	
A
q!Q''!,?2q,I*II	
aQ
''	(*=aQ*G	HtQ	A 13<< 	A	(4
a 3Aq! <<Q>>!R#	$&()<QA)F&F	G!R#A%	&(-	.A 13<< 	sA	B	B	BsA	BsAsAsA	aABMM"b!MM"b"AxBq6(BK 	A
q"a((2.A!R.L+LLA6M6 	A	2q))!+	QA	&&	'A6M6 	A
 B*	*1	,	QA	&&
'()	*A6M6 	A	2q))!+b1DQA1N.NNA6M6 	
A	2q)	)"	,r2EaQ2O/OPQ/Q	QTUTWX\]\_`a\adfgz{|  A  CD  hE  eE  FH  eH  ]H  KM  Na  bc  eg  ij  Nk  Kk  lm  Km  ]m  pq  ps  \t  	tA!9q	!!! 	A	13q52)!R33B66	QA	&&q() 	*+,3	0	
aQ
''+	QA	&&q()+,30	0 	sQBqD1H~"0B::2==dq"a((*+	QA	&&s*+ 		QA	&&q() ,-30		0A AE?a	aq	BMM!1!M4KKv	B	B
A
q!Q''!,?1a,H*HHAq!$$	%'()<Q1)E'E	FA6M6
A	
aA
&&q(1-@Aq-I+IIAq!$$	%'()<Q1)E'Ea'G	HA6M6
AAq!$Q&+>q!Q+G)GGAq!$$	%'()<Q1)E'Ea'G	HA6M6

A	 Aq)",/B1a/KA/MM!Q"1$%':1a'CB'FGIJN 	NA6M6
A	!"1a+C/!Q"2%&(;Aq!(DR(GH!Q"3&')*. 	.A B;;	aq	BMM"aM"
A
q!Q''!,?1a,H*HHA6M6
A	
aA
&&Aq!$$	%A6M6
AAq!$':1a'CCA6M6

A
q!Q'')A.A!Q.J,J1,LLA13"
A
q!Q''*Q/B1a/K-KB-NNA13"Q$#### :>?			 
		s   s
s-c                     [        SSS9n [        S5      u  pp4n[        XUSS9nUR                  [        U S5        UR                  [        SS5        UR                  U* U S	-  S5        UR                  [        [        5        UR                  5       nU[        [        SS	5      -  S
-  U[        [        U S	-  S	5      -  S	-  -
  U[        [        U S	5      -  S
-  -   nXxX-  -  U-   :X  d   eUR                  5       nU[        [        SS5      -  S-  U[        [        U S	-  S5      -  S-  -
  U[        [        U S5      -  S-  -   nXxX-  -  U[        -  -   U-   :X  d   eS/Ul
        UR                  5       nU[        -  U[        [        SS5      -  S-  -   U[        [        U S	-  S5      -  S-  -
  U[        [        U S5      -  S-  -   nXxX-  -  :X  d   eSU S4/Ul
        UR                  5       nU S	-  * U-  [        -  S-  U[        [        SS5      -  S-  -   U[        [        U S	-  S5      -  S-  -
  U[        [        U S5      -  S-  -   nXxX-  -  :X  d   eg )NLTpositivezE I P a3 a4a)	base_charr;   r   r)   r'   r4   rW   r?   r   r      )r   r   r[   rl   rk   rm   r/   r   r   r.   re   )	r   r!   r#   Pa3a4rt   r{   r|   s	            r]   test_insufficient_bconditionsr     s    	d#Am,OA!Q1$ALLQLLQLL!QqS"r2&		A	
aA
&&q(1-@AaC-K+KA+MMPQRefgijlmRnPnopPppA13"	A	
aA
&&r)A.A!QqS!.L,LQ,NNQRSfghjkmnSoQoprQrrA13"Q$####hAO	A
1q$Q1--b0015HAaCQR5S3STU3UUXYZmnoqrtuZvXvwyXyyA13<<1v&AO	A	
Aa	"q,Q155b881=PQRTUVWTWYZ=[;[\];]]`abuvwyz|}b~`~  @B  aB  	BA13<<r`   c            	      .   [        S5      n [        S5      n[        S5      u  p#[        S5      n[        SSS9n[        XPU5      nSUS	4/Ul        SUS	4/Ul        UR                  [        S	S
5        UR                  US	S5        UR                  [        US
5        UR                  X5S5        UR                  U* US-  S
5        UR                  [        [        X#5        UR                  n[        US-  [        US-  X$* U-  S-  X4U-  S-  0nXx:X  d   eg )Nr!   r#   zM1, M2FrE   Tr   r   r   r;   r>   r)   r@   )
r   r   r   re   rf   r[   rk   rl   rm   rn   )	r!   r#   M1M2r   rE   b5r{   r|   s	            r]   test_statically_indeterminater      s   sAsAXFBsAsT"A	aAB1vB1a&/BKMM"aMM"aMM"aMM"MM1"ac2B/
A	QqS"ac2r!tAvrQ3q51A6M6r`   c            	      B   [        S5      n [        S5      n[        S5      u  p#[        [        -  n[        [        -  n[        S[        -  SU-  [        S-  -  S[        [        -  S-  -  5      nUR                  S	U-  S[        -  S
5        UR                  US[        -  S
5        UR                  US[        -  S
5        UR                  SU-  [        -  S[        -  SS[        -  S9  S[        -  S[        -  4S[        -  S[        -  4/Ul	        UR                  X#5        UR                  US[        -  US[        -  0:X  d   e[        S[        -  U [        -  [        S-  -  U[        S-  -  5      nUR                  SU-  S[        -  S
5        UR                  US[        -  S
5        UR                  US[        -  S
5        UR                  SU-  [        -  S[        -  S5        S[        -  S[        -  4S[        -  S[        -  4/Ul	        UR                  X#5        UR                  U[        [        SS5      -  U[        [        SS5      -  0:X  d   eUR                  5       R                  [        S[        -  5      S[        -  SU -  U-  -  :X  d   eg )Nr!   r#   r   r@      r)   i r'   r,   r;   r   r<   rY   iJir4   r&   rW   r>   irB   i0  rO   )r   r   r   r   r   r   r   r   r[   re   rm   rn   r   r.   subsr   )r!   r#   rk   rl   kNgNrt   s          r]   test_beam_unitsr   7  s?   sAsAXFB	fB	fBQuWc"fUAXo{E%K!3C'CDALL2qw#LLQuWb!LLQuWb!LLBuagqagL6%5)AeGQuW+=>AOr&F6M2vf}EEEEQuWahuax'5!84ALL2qw#LLQuWb!LLQuWb!LLBuagr*%5)AeGQuW+=>AOr&F8FA+>$>F8TXZ[K\D\]]]]<<>q!E'*eEk1Q3q5.AAAAr`   c                     [        S5      n [        S5      n[        SU SS[        -
  -  5      nUR                  SSS5        [	        S5      u  p4UR                  USS5        UR                  USS	5        S
/Ul        S
/Ul        UR                  X45        UR                  5       R                  5       S[        -  [        [        SS5      -  S[        S-
  -  [        [        SS5      -  -
  U -  R                  5       :X  d   eUR                  5       R                  5       S[        S-  -  [        [        SS5      -  S[        S[        [        5      S-  S:  4[        S-  [        SS[        S-  5      -  S45      -  -
  S[        [        SS5      -  -   U -  R                  5       :X  d   e[        SU [        -
  U5      nUR                  SSS5        [	        S5      u  p4UR                  USS5        UR                  USS	5        S
/Ul        S
/Ul        UR                  X45        UR                  5       R                  5       S[        U * 5      * [        U * [        -   5      -   -  [        [        SS5      -  S[        U * S-   5      * [        U * [        -   5      -   -  [        [        SS5      -  -   SU * [        U * 5      -  U [        U * [        -   5      -  -   [        -   -  [        [        SS5      -  -   SU * [        U * S-   5      -  U [        U * [        -   5      -  -   [        -   S-
  -  [        [        SS5      -  -
  U-  R                  5       :X  d   eg )Nr!   r#   r'   r)      r;   R, Mr   r>   r   r<   r,   r&   ))r;   r&    )r   )r>   r   T(   iP   )r   r   r   r[   r   re   rf   rm   r/   r   r   r.   r   r   r   r   )r!   r#   rt   RMs        r]   test_variable_momentr   S  sH   sAsAQ1a!e9ALLQ6?DALLArLLArhAOAJq$7792a4(;Aq!(D#D
a!e*(Aq1
1$234#56<fh? ? ?<<>  "!Q$/B1a/K(K
Y3q6!8a<(1a4}VWXYVY0Z+Z\`*ab
b)c
 Aq)
))*+,(-.4fh7 7 7 	QAqALLQ6?DALLArLLArhAOAJq$7793aR3rAv;(>#?@STUWXZ[@\#\
sA26{lS!a[(
)*=aA*F
F$GIKaRPSUVTVPWZ
CQK-NN J0Aq9J:$:<>3rAv;QRSVXYWY\]W]S^Q^@^
AA =$Q1-=.$. 01#1 39&(; ; ;r`   c                  	   [        S5      n [        S5      n[        SU SU-  5      n[        SX5      nUR                  US5      nUR                  SSS5        UR                  S	SS
5        UR                  SSS5        S/Ul        S/Ul        UR                  S:X  d   eUR                  [        SU-  [        S:*  4U[        S:*  45      :X  d   eUR                  5       R                  [        S5      SX-  -  :X  d   eUR                  5       R                  [        S5      SX-  -  :X  d   e[        UR                  5       R                  [        S5      R                  S   5      S:X  d   e[        SSS9n[        S5      u  pgpn
[        SU-  X5      n[        SU-  X5      nUR                  US5      nUR                  USS
5        UR                  USS5        UR                  XS5        UR                  U	SU-  S5        UR                  U
SU-  S5        S/Ul        SUS4SU-  S4/Ul        UR!                  XvX5        UR"                  X* S-  X[%        SS5      -  Xz* U-  S-  Xj[%        SS5      -  0:X  d   eUR                  5       R                  [        SU-  5      SU
-  US-  -  SU -  U-  -  :X  d   eUR                  5       R                  [        SU-  5      SU
-  US-  -  SU -  U-  -  :X  d   eUR                  5       R                  [        SU-  5      SU
-  US-  -  SU -  U-  -  :X  d   e[        SSS5      n[        SSS5      nUR                  US5      nUR                  USS
5        UR                  USS5        UR                  US S5        UR                  U	SS5        UR                  SSS5        S/Ul        / S!QUl        UR!                  XvX5        UR                  5       S
['        [        SS 5      -  S"-  ['        [        SS5      S#-  -   S$['        [        S S5      -  S%-  -
  ['        [        SS5      S&-  -   S'['        [        SS5      -  S(-  -
  :X  d   eUR                  5       ['        [        SS5      * S"-  ['        [        SS5      S"-  -   S$['        [        S S5      -  S)-  -
  ['        [        SS5      S*-  -   S'['        [        SS5      -  S+-  -
  :X  d   eg ),Nr!   r#   r)   g      ?fixedir   r;   r   r>   r   r'   r   g      ^@g      T@irE   Tr   zR1 M1 R2 R3 Phinger4   0      rN   r,   r   i  r<   r&   )r   )r&   r   )r'   r   i  S     iX i  %   i i.   i )r   r   joinr[   rf   re   ra   rc   r   r   r/   r   intr.   argsr   rm   rn   r   r   )r!   r#   rz   r}   rt   rE   rk   r   rl   R3r   s              r]   test_composite_beamr   s  s   sAsA	aCE	B	aB
GALLaLLQLLQAJhAO88q==??iQQ!Q!VEEEE779>>!Q5!#;...779>>!Q4:---q||~""1a(--a01T999d#A0BBA	ac1B	ac1B
7ALLQLLQLLLLQqS"LLAaCAJ1v!Qx0AOrr.BqD"Q.?RT!VRS[\]_`SaQabbbb779>>!QqS!RT!Q$Y1Q%7777<<>q!A#&!A#ad(BqDF*;;;;<<>q!A#&!A#ad(BqDF*;;;; 
ab	B	ab	B
GALLQLLQLLQLLQLLQAJ.AOrr.779.q!Q77<?RSTVWYZ?[\`?``)!Q2269:<OPQSTVW<XY]<]^(Aq11%78 8 8 8 <<>1!Q::4?BUVWYZ\]B^_cBcc-aA66v=>@STUWXZ[@\]a@ab,Q155f<= = = =r`   c                     [        S5      n [        S5      n[        SX5      nUR                  SSS5        UR                  SSS5        UR                  SS	S5        UR                  S
SS5        UR                  SSS5        UR                  5       [	        SS5      /:X  d   e[        S5      n [        S5      n[        SX5      nUR                  SSS9nUR                  SSS9nUR                  SSS9u  pVUR                  S5        UR                  SSS5        UR                  SSSS5        UR                  X4XV5        UR                  5       [	        SS5      S[	        SS5      /:X  d   e[        S5      n [        S5      n[        SX5      nUR                  SSS9nUR                  SSS9nUR                  SSS9u  pVUR                  S5        UR                  S5        UR                  SSS5        UR                  SSSS5        UR                  X4XV5        [        [        5         UR                  5         S S S 5        g ! , (       d  f       g = f)Nr!   r#   r<   rA   r   r;   ir?   r)   r   r'   r4      pintyper   rW   r,   r        )
r   r   r[   point_cflexurer   apply_supportapply_rotation_hingerm   r   NotImplementedError)r!   r#   rt   r0r10r15m15s          r]   test_point_cflexurer     s   sAsARALLQLLaLLQLLQLLAq(2q/!2222sAsARA	
	'B
//"5/
)Cr0HC2LLaLLRBr1(4"5r8C;L!MMMMsAsARA	
	'B
//"5/
)Cr0HC12LLaLLRBr1	#	$	 
%	$	$s   ,I
Ic                     [        S5      n [        S5      n[        SX5      n UR                  SSS5         e! [         a     Of = fUR	                  SSS	5        UR	                  SSS5        UR	                  S	SSS
S9  UR                  S	SSS
S9  UR
                  S[        [        SS	5      -  S[        [        SS5      -  -   :X  d   eUR                  SS/:X  d   e UR                  SSS5         e! [         a     Of = fUR                  SSS	5        UR                  SSS5        UR
                  S:X  d   eUR                  / :X  d   eg )Nr!   r#   r'   r)   r&   r;   rX   r   r>   r4   rY   )rX   r   r>   N)r'   r)   r;   N)	r   r   remove_loadrr   r[   ro   r   r   applied_loads)r!   r#   rt   s      r]   test_remove_loadr     s]   sAsAQA	aB
 	u  
 LLQLLArLLQL#MM"a!M$66R+Aq"55:MaQRTV:W8WWWWW??02BCCCC	aB 	u  
 MM"aMM!Q66Q;;??b   s!   9 
AA!C6 6
DDc            
         [        S5      n [        S5      n[        SX5      nUR                  SS5        UR                  SSS5        [	        S5      u  p4UR                  XC5        [        UR                  5       5      [        S	[        [        SS
5      -  S[        [        SS5      -  -
  S[        [        SS5      -  -   X-  -  5      :X  d   e[        UR                  5       5      [        S[        [        SS5      -  S[        [        SS5      -  S-  -
  S[        [        SS5      -  S-  -   X-  -  5      :X  d   e[        SX5      nUR                  SS5      nUR                  SS5      nUR                  SSS5        UR                  SSS5        UR                  XV5        UR                  5       S[        [        SS5      -  S[        [        SS5      -  -   S[        [        SS
5      -  -   [        [        SS5      -   [        SS5      -   X-  -  :X  d   eUR                  5       [        [        SS5      -  S[        [        SS5      -  S-  -
  [        [        SS5      -   S[        [        SS5      -  -   [        [        SS5      S-  -   S-
  X-  -  :X  d   e[        S5      n[        S5      nXW:X  d   eUR                  USUS0:X  d   eUR                  U   S:X  d   e[        SX5      nUR                  SS5      u  pYUR                  SS5      nUR                  SSSS5        UR                  XYU5        [        S5      n[        S 5      n[        S!5      n
XT:X  d   eX:X  d   eXj:X  d   eUR                  US"US#U
S$0:X  d   eUR                  U	   S#:X  d   e[        S%S&S'9n[        S(S&S'9n[        XU5      nUR                  SSS)9  UR                  USS)9  UR                  U* US-  S5        [	        S*5      u  pMp>UR                  XMX>5        UR                  XKS-  XS-  X<* U-  S-  XU-  S-  0:X  d   eg )+Nr!   r#   r'   r   
cantileverr   r;   zM_0, R_0r   r&   r<   r)   r   r4   r9   r   rollerr:   r=   r>   rA   rB   rC   rD   R_10R_30r?   r@   r   r   R_0M_0R_8   ir   r   Tr   r   r   zR_0, R_L, M_0, M_L)r   r   r   r[   r   rm   r
   r/   r   r   r.   r   rn   )r!   r#   rt   r   r   p0p1r   r   m0r   r   r   R_LM_Ls                  r]   test_apply_supportr     s   sAsAQAOOA|$LLQz"HCs(AGGI(B/B1a/K,KbQdefhiklQmNm,m(Aq11-245C,9 #: : : :ALLN#x4G1a4P1PSUVijkmnpqVrSrstSt1t(Aq11!32467c1; (< < < < 	RA	
U	#B	
X	&BLLQLLb"r&779/1a881=PQRTVXY=Z;ZZ%aQ//02EaQ2OPRZ[_abRcdfgfik k k k<<>aq 11A6I!QPQ6R4RST4TTWjklnprsWtt$QA../1DQA1Nq1PQSXY[\[^` ` ` `&>D&>D::aq1111B1$$$QA__Q(FB	
H	%BLLQ1rr*
-C
-C
-C999999Rc3;;;;B3&&&sT"AsT"AQ1AOOAGO$OOAGO$LL!QqS" !56Ccs2qS#sCAac!eLLLLr`   c                  `  ^^^^ [        SSS5      mTR                  SSS9u  pTR                  SSS9nTR                  SSS9nTR                  S5      nTR                  S	5      nTR                  S
SS5        TR                  SSSS5        TR	                  XX#5        [        S5      u  pgppUSUSUSU	S0mU
SUS0mXX#/nXE/nSm[        UUU4S jU 5       5      (       d   e[        UUU4S jU 5       5      (       d   eS[        [        SS5      -  S-  S[        [        SS5      -  S-  -
  S[        [        SS5      -  S-  -
  S[        [        SS5      -  -   S[        [        SS5      -  S-  -
  [        [        SS5      -   S[        [        S	S5      -  S-  -   S[        [        SS5      -  -
  [        [        SS5      -
  nTR                  5       R                  5       UR                  5       :X  d   eS[        [        SS5      -  S -  [        [        SS5      S!-  -   S"[        [        SS5      -  S#-  -   [        [        SS5      S$-  -
  S[        [        SS5      -  S%-  -   [        [        SS5      S&-  -
  S'[        [        S	S5      -  S(-  -
  S[        [        SS5      -  S)-  -   [        [        SS5      S&-  -   nTR                  5       R                  5       UR                  5       :X  d   eS[        [        SS5      -  S!-  [        [        SS5      S*-  -   S"[        [        SS5      -  S#-  -   [        [        SS5      S+-  -
  S[        [        SS5      -  S,-  -   [        [        SS-5      S.-  -
  S'[        [        S	S5      -  S(-  -
  [        [        SS5      S)-  -   [        [        SS-5      S.-  -   nTR                  5       R                  5       UR                  5       :X  d   e[        S/5      n[        S05      n[        S15      n[        SUU5      mTR                  SSS9u  pTR                  SSS9nTR                  S25        TR                  US3S5        TR	                  XU5        TR                  UU* S-  USU-  UU* S-  0:X  d   eTR                  5       S4U-  [        [        SS5      -  U[        [        SS5      -  S-  -   S5U-  [        [        S2S5      -  -   U[        [        S3S5      -  -
  U[        [        SS5      -  S-  -   :X  d   eS4U-  [        [        SS5      -  S-  U[        [        SS5      -  S	-  -   S5U-  [        [        S2S5      -  -   U[        [        S3S5      -  S2-  -
  U[        [        SS5      -  S	-  -   * UU-  -  nTR                  5       R                  5       UR                  5       :X  d   e[        S/5      n[        S05      n[        S15      n[        S6S7S89n[        S9S7S89n[        S:S7S89nUU-   U-   n[        UUU5      mTR                  SSS9u  pTR                  USS9nTR                  U5        TR                  UUU-   S5        TR	                  XU5        TR                  U    U* U-  UU-   -  :X  d   eTR                  U   UU-  U-  UU-   -  :X  d   eTR                  U   U* U-  UU-   -  :X  d   eU* U-  U-  [        [        SS5      -  UU-   -  UU-  [        [        UU-   U-   S5      -  UU-   -  -   UU-  [        [        SS5      -  UU-   -  -   U[        [        UU-   S5      -  -
  SU-  US-  -  U-  SU-  US-  -  U-  U-  -
  SU-  US-  -  US-  -  -
  UUS-  -  U-  -   SU-  US-  -  US-  -  -   SU-  U-  US-  -  -   [        [        US5      -  S2US-  -  S	U-  U-  -   S2US-  -  -   -  -
  n[        TR                  5       R                  5       5      [        UR                  5       5      :X  d   eg );Nr   r   r   r   r   r<   r   r   rW   r   r;   r>   zR_0, M_0, R_10, R_15, P_7, P_12g@gUUUUUUGg$@r4   gWs?gHxư>c              3   f   >#    U  H&  n[        TR                  U   TU   -
  5      T:  v   M(     g 7fN)absrn   ).0rrt   expected_reactions	tolerances     r]   	<genexpr>,test_apply_rotation_hinge.<locals>.<genexpr>8  4     fUePQs1##A&);A)>>?)KUe   .1c              3   f   >#    U  H&  n[        TR                  U   TU   -
  5      T:  v   M(     g 7fr   )r   rotation_jumps)r   r   rt   expected_rotationsr   s     r]   r   r   9  r   r      r&   i,        r)   i iD  r   rC   r=   i  ip  r   `	  r   i  i@  i   ih     i   r'   i  r!   r#   r   r?   r@   rX      l1Tr   l2l3)r   r   r   r[   rm   r   allr   r   r0   r   r/   r.   r   rn   r
   )r   r   r   r   p7p12r   r   r   R_15P_7P_12reaction_symbolsrotation_symbolsexpected_bending_momentexpected_slopeexpected_deflectionr!   r#   r   r   r   r   r   r1rt   r   r   r   s                            @@@@r]   test_apply_rotation_hinger   (  sI	   RRA__QW_-FB
//"5/
)C
//"5/
)C	
			"B

 
 
$CLLaLLRBrs0&-.O&P#Cd#tS&$dAFy$
;)yIfUeffffffUefffff"%8Aq%AAAEM`abdeghMiHilmHmm
%aB/
/"
4 579<OPQSTVW<X7X Y
"1b!,
,q
0 13Fq"a3P Q &q"b1
1C
7 8 ;<>QRSUWYZ>[:[ \ aQ
'	 (
 $$&*A*H*H*JJJJ,Q155b8;NqRSUV;WX[;[[
"1a+
+D
013Fq!Q3OPR3RS
 B*
*4
/02EaQ2OPT2TU "1b!,
,T
12 566I!RQR6S4STW4WX aQ
'
,	-N
 779!6!6!8888 3Aq! <<sBEXYZ\]_`EadgEgg
$Q1-
-
457J1aQR7SVY7YZ
"1b!,
,t
346I!RQR6SVZ6Z[ $QA.
.
56 9LArST8UX[8[\ aQ
'$
.	/
 <<>  "&9&@&@&BBBBsAsAsARAA__QW_-FB
//"5/
)C1LLArrs+aRT3!TA2a4@@@@"Q$':1a'C"CaH[\]_`bcHdFdefFf"fd&q!R00#1345HAq5Q3Q#R#Ar1--a/#0 0 1 0 qD!4Q1!==a?!DWXY[\^_D`B`acBccd&q!Q//0234G1a4P2PQR2RS#Ar1--b01 234Q38 <<>  "&9&@&@&BBBBsAsAsA	t	$B	t	$B	t	$B
R"AQ1A__QW_-FB	
	'B2LLBrE2rr*BA2b5"r'?222B1R47BG#4444BA2b5"r'?222 !r"uRx(;Aq!(DDb2gNd&q"r'B,::BGD Ed&q!Q//b9 :<=>QRSUWZ\U\^_>`<` a !tBEz"}qs2q5y|B.1RU2q5@1RU72:MPQRSPSTVXYTYPYZ\^_Z_P__bcdebefhbhikmninbnn B+,-.r1uWr"uRx-?!BE'-IK K
 A$$&--/0H=T=[=[=]4^^^^r`   c                     [        SSS5      n U R                  SSS9u  pU R                  S5      nU R                  SSS9nU R                  SS	S
5        U R	                  XU5        [        S5      u  pVpxU R                  USUSUS0:X  d   eSn	[        U R                  U   S-
  5      U	:  d   eU R                  5       S[        [        SS5      -  S[        [        SS5      -  -
  S[        [        S	S5      -  -   S[        [        SS5      -  S-  -
  :X  d   eU R                  5       [        [        SS5      * S-  [        [        SS5      S-  -   [        [        S	S5      S-  -
  S[        [        SS5      -  S-  -   :X  d   e[        S5      n
[        S5      n[        S5      n[        S	X5      n[        SX5      nUR                  U5      n U R                  SSS9u  pU R                  S5        U R                  SSS9nU R                  SS	S
5        U R	                  XU5        [        S5      nU R                  USSU
-  U-  -  0:X  d   e[        S5      n
[        S5      n[        S5      n[        SS S!9n[        S"S S!9n[        S#S S!9nUU-   U-   n[        UX5      n U R                  SSS9nU R                  USS9nU R                  UU-   5        U R                  USS9nU R                  USSU5        U R	                  UUU5        U R                  5       UU-  [        [        SS5      -  S-  UU-  [        [        US5      -  S-  -   U[        [        SS5      -  S-  -
  U[        [        US5      -  S-  -   US-  * U-  U-  S-  US-  U-  U-  S-  -
  [        [        UU-   S5      -  -   :X  d   eU R                  5       US-  U-  [        -  S-  UU-  [        [        SS5      -  S$-  -
  UU-  [        [        US5      -  S$-  -
  U[        [        SS%5      -  S-  -   U[        [        US%5      -  S-  -
  US-  U-  U-  S-  US-  U-  U-  S-  -   [        [        UU-   S5      -  -   X-  -  :X  d   eg )&N   r   r   r   r   r@   r   r   r,   r;   zR_0, M_0, R_13 W_8r<   ir   gUUUUUU@2   r&   i  r>   r4   r)   r   r   U   rN   r!   r#   I2W_8r|   r   Tr   r   r   rW   r'   )r   r   apply_sliding_hinger[   rm   r   rn   r   deflection_jumpsr0   r   r   r.   r   r   )rt   r   r   w8r13r   r   R_13r   r   r!   r#   r   rz   r}   r|   r   r   r   r   r3r   s                         r]   test_apply_sliding_hinger  v  s   RRA__QW_-FB	
		q	!B
//"5/
)CLLars+!"67CdRc4;;;;Iq!!"%-.:::"%8Aq%A"ABGZ[\^_abGcDc"c$Q1--#.045HAr5R0RST0T#U U V ULLN21a;;B>ATUVXY[\A]^aAaa!!Q*3./134G1a4P1PQS1ST T U T 	sAsA	B	aB	aB
A__QW_-FB!
//"5/
)CLLars+
-C#tQqSV}!5555sAsAsA	t	$B	t	$B	t	$B
R"AQA	
	'B	
%	(B"r'"
//!%/
(CLLAq"r2s+"Q$':1a'C"CA"E1M`abdfhiMjHjklHl"l#Aq!,,Q.#/123Fq"a3P1PQR1R#SAvby{2~Ab
2-/B1b2gr/RR#S S T S <<>RU1WQYr\BqD1DQ11M,Mb,PP!!t$72q$AA"DEGHI\]^`acdIeGefhGhi !4QA!>>rAB !#Ab
2Ab
2 =?RSTVX[]V]_`?aab efdgi i i ir`   c                     [        S5      n [        S5      n[        SX5      n[        S5      u  p4UR                  USS5        UR                  USS5        UR                  SSS5        UR                  S	SS5        UR                  SSSSS
9  UR	                  X45        UR                  5       [        SS5      S4:X  d   e[        SSS9n[        S5      n[        XPU5      n[        S5      u  pxUR                  USS5        UR                  XS5        UR                  USSUS
9  UR	                  Xx5        UR                  5       n	U	S   S:X  d   e[        U	S   U[        U5      -  S-  -
  5      S:X  d   eg )Nr!   r#   r4   r   r   r;   r>   r)   r'   rY   r@   rE   Tr   r   r   r&   )	r   r   r   r[   rm   max_shear_forcer	   r
   r   )
r!   r#   rt   r   r   rE   r   rk   rl   	max_shears
             r]   test_max_shear_forcer    sb   sAsAQA6?DALLArLLArLLArLLArLLAqaL q$8Aq>1"5555d#AsAQ1AXFBLLQLLLLAqaL r&!!#IQ<1IaLAc!fHQJ/0A555r`   c                  p   [        S5      n [        S5      n[        SSS9u  p#[        X U5      n[        S5      u  pVUR                  USS5        UR                  XbS5        UR                  X2S	-  S5        UR	                  XV5        UR
                    UR                  5       US	-  X2-  S
-  4:X  d   e[        X U5      n[        S5      u  pVUR                  USS5        UR                  XbS5        UR                  USSUS9  UR	                  XV5        UR                  5       US	-  X2S	-  -  S-  4:X  d   eg )Nr!   r#   zl, PTr   r   r   r;   r)   r'   rY   r@   )r   r   r   r[   rm   rn   max_bmoment)r!   r#   rE   r   rt   rk   rl   s          r]   test_max_bmomentr    s   sAsA6D)DAQ1AXFBLLQLLLLaCr&==?qsACEl***Q1AXFBLLQLLLLAqaL r&==?qsAdF1Ho---r`   c                     [        SSS9u  pp#[        X U5      nSUS4/Ul        SUS4/Ul        UR	                  US-  SS5        UR	                  U* U-  S-  SS	5        UR	                  US-  US5        UR	                  X2-  S-  US	5        UR	                  U* US-  S5        UR                  5       US-  X2S
-  -  SU -  U-  -  4:X  d   eg )Nz
E, I, l, FTr   r   r   r)   r;   r@   r>   r4      )r   r   re   rf   r[   max_deflection)r!   r#   rE   r   rt   s        r]   test_max_deflectionr    s    5JA!Q1Aq!foAO!QAJLL1aLL!AaBLL1aLLQ2LL!QqS"!A#qAvs1uQw'7!8888r`   c                     [        S5      n [        S5      n[        SX5      nUR                  SSS9  UR                  SSS9  [        S5      u  p4UR	                  SX45        UR
                  nUR                  U[        USS5      * [        USS5      S-  -   [        USS5      S-  -
  U[        USS5      * S-  [        USS5      -   [        USS5      S-  -   0:X  d   e[        S5      n [        S5      n[        S	5      n[        S
SS9n[        XpU5      nUR                  USS9  UR                  USS5        [        S5      u  pUR	                  XhU	5        UR
                  nUR                  X* [        USS5      -  U[        XWS5      -  -   U-
  X* U-  [        USS5      -  Xg-  -
  U[        USS5      -  -   U[        XWS5      -  -
  0:X  d   e[        S5      n [        S5      n[        SX5      nUR                  SSS9n
UR                  SSS9nUR                  SSS9nUR                  SSS9u  pUR	                  SXXU5        UR
                  nUR                  U
   R                  US5      [        SS5      * :X  d   eUR                  U   R                  US5      [        SS5      * :X  d   eUR                  U   R                  US5      [        SS5      :X  d   eUR                  U   R                  US5      [        SS5      * :X  d   eUR                  U   R                  US5      [        SS5      * :X  d   eg )Nr!   r#   r<   r   r   r   z	R_0, R_10r&   r   r   Tr   r   r;   zR_L, M_Lr   r,   r'   ;     i  G	     rW   S   i  )r   r   r   r   solve_for_ild_reactionsild_variableild_reactionsr   r[   r   r   )r!   r#   rt   r   r   r   r   r   r   r   r   r5r   r20m20s                  r]   test_solve_for_ild_reactionsr    s}   sAsARAOOAEO"OOBUO#$ICa+	A??s%8Aq%A$ADWXY[\^_D`acDc$c&9!R&CB&F%G#&9!Q&B%B2%EH[\]_acdHe%e':1b!'DR'G&HI I I I
 	sAsAsAsT"AQ1AOOAGO$LLArz"HCac*	A??sB':1a'C$CaH[\]bcHdFd$dgh$h"BqD)<Q1)E$E$KaPcdeghjkPlNl$l&'(;A!(D&D%EF F F F 	sAsARA	
	'B	
	'B
//"5/
)Cr0HCa37	A??2##Aq)hr3.?-??????2##Aq)htT.B-BBBB??3$$Q*hsD.AAAA??3$$Q+S0A/AAAA??3$$Q+c0B/BBBBr`   c            	      n   [        S5      n [        S5      n[        S5      n[        SSS9n[        SSS9n[        X4-   X5      nUR                  SS	S
9nUR                  X4-   S	S
9nUR                  X&U5        UR	                  X2Xg5        UR
                  nU* U-  [        USS5      -  X4-   -  X$-  [        USS5      -  X4-   -  -
  U[        U* SS5      -  -
  U[        XU-   S5      -  -   U-   U[        USS5      -  X4-   -  -   U[        XU-   S5      -  X4-   -  -
  U* U-  [        USS5      -  X4-   -  X#-  [        XU-   S5      -  X4-   -  -   X$-  [        USS5      -  X4-   -  -
  X$-  [        XU-   S5      -  X4-   -  -   SU-  -   [        XS5      -  -
  n	UR                  R                  5       U	R                  5       :X  d   e[        S5      n [        S5      n[        SX5      nUR                  SS	S
9nUR                  SS	S
9n
UR                  SS	S
9nUR                  SSS
9u  pUR                  SXjXU5        UR	                  SSXjXU5        UR
                  nUR                  R                  US5      [        SS5      :X  d   eUR                  R                  US5      [        SS5      * :X  d   eg )Nr!   r#   r   L1Tr   L2r   r   r   r&   r)   r   r,   r<   r   r?   rW   `   r  r'      r  )r   r   r   r  solve_for_ild_shearr  r   	ild_shearr   r   r   )r!   r#   r   r!  r"  rt   r   rLr   expected_shearr  r   r  r  s                 r]   test_solve_for_ild_shearr)    s   sAsAsA	t	$B	t	$BRWaA	
	'B	
u	-BaR("(	Abe/1a88"'BQTJ]^_abdeJfEfhjhoEpp-qb!Q778:;<OPQXZSZ\]<^:^_abc-aA66@ACDEXYZac\cefEgCgikipCqr B21a;;RWEM`abikdkmnMoHoqsqxHyy4 3Aq! <<bgFGIJNabcjlelnoNpIprtryIz{Q3 3A1 =>>N ;;>#8#8#::::sAsARA	
	'B	
	'B
//"5/
)Cr0HCa37!Q#6	A;;Ar"hr3&7777;;Aq!hsD&9%9999r`   c            	         [        S5      n [        S5      n[        S5      n[        SSS9n[        SSS9n[        X4-   X5      nUR                  SS	S
9nUR                  X4-   S	S
9nUR                  nUR	                  X&U5        UR                  X2Xg5        UR                  R                  US5      R                  US5      R                  US5      SU-  S-  :X  d   e[        S5      n [        S5      n[        SX5      nUR                  SS	S
9nUR                  SS	S
9n	UR                  SS	S
9n
UR                  SSS
9u  pUR	                  SXiXU5        UR                  SSXiXU5        UR                  R                  US5      [        SS5      * :X  d   eUR                  R                  US5      [        SS5      :X  d   eg )Nr!   r#   r   r!  Tr   r"  r   r   r   r4   r,   rX   r)   r   r<   r   r&   rW   r#  r  r'   $   _   )	r   r   r   r  r  solve_for_ild_moment
ild_momentr   r   )r!   r#   r   r!  r"  rt   r   r'  r   r  r   r  r  s                r]   test_solve_for_ild_momentr/  4  s   sAsAsA	t	$B	t	$BRWaA	
	'B	
u	-B	AaR(2")<<Q"''A.33B:bd1fDDDsAsARA	
	'B	
	'B
//"5/
)Cr0HCa371a37<<Q#S(9'9999<<Q"hr2&6666r`   c                     [        S5      n [        S5      n[        S5      n[        SSS9n[        SSS9n[        SSS9n[        X4-   U-   X5      nUR                  S	S
S9nUR                  X4-   S
S9nUR                  X4-   U-   S
S9n	UR                  X4-   5        UR	                  X'X5        UR
                  n
UR                  U   R                  U
S5      R                  US5      R                  US5      R                  US5      SU-  S-  :X  d   eUR                  U   R                  U
S5      R                  US5      R                  US5      R                  US5      S	:X  d   eUR                  U   R                  U
S5      R                  US5      R                  US5      R                  US5      S	:X  d   eUR                  U   R                  U
S5      R                  US5      R                  US5      R                  US5      SU-  S-  :X  d   eUR                  U	   R                  U
S5      R                  US5      R                  US5      R                  US5      SU-  S-  :X  d   eUR                  X2XxU	5        UR                  R                  U
S5      R                  US5      R                  US5      R                  US5      SU-  S-  :X  d   eUR                  R                  U
S5      R                  US5      R                  US5      R                  US5      S	:X  d   eUR                  X2XxU	5        UR                  R                  U
S5      R                  US5      R                  US5      R                  US5      U* S-  :X  d   eUR                  R                  U
S5      R                  US5      R                  US5      R                  US5      U* :X  d   eg )Nr!   r#   r   r!  Tr   r"  L3r   r   r   r'   r,   r<   rX   r   r   r>      rA   r   F   r&   r)   r@   )r   r   r   r   r  r  r  r   r%  r&  r-  r.  )r!   r#   r   r!  r"  r1  rt   r   r   r2r   s              r]   test_ild_with_rotation_hinger5  N  s   sAsAsA	t	$B	t	$B	t	$BRWr\1 A	
	'B	
u	-B	
2E	2B27#aR,	A??2##Aq)..r15::2qAFFr2NRTUVRVWXRXXXX??2##As+00Q7<<RCHHRPTUUUU??2##Ar*//A6;;BBGGBOSTTTT??2##Aq)..r15::2qAFFr2NRTUVRVWXRXXXX??2##Ar*//A6;;BBGGBOSUVWSWXYSYYYY",;;Aq!&&r1-222q9>>r2F"Q$r'QQQ;;Ar"''A.33B:??BG1LLL2""-<<Q"''A.33B:??BGA2a4OOO<<Q"''A.33B:??BGA2MMMr`   c                  B   [        SSS5      n U R                  SSS9nU R                  SSS9nU R                  SSS9u  p4U R                  S5      nU R                  S	XX45        U R                  nU R
                  U   R                  US5      S
:X  d   eU R
                  U   R                  US5      [        SS5      :X  d   eU R
                  U   R                  US5      [        SS5      * :X  d   eU R
                  U   R                  US5      [        SS5      * :X  d   eU R
                  U   R                  US5      S:X  d   eU R
                  U   R                  US5      S:X  d   eU R                  U   R                  US5      [        SS5      * :X  d   eU R                  SS	XX45        U R                  R                  US5      [        SS5      * :X  d   eU R                  SS	XX45        U R                  R                  US5      [        SS5      * :X  d   eg )Nr   r   r   r   r   r?   r   r4   r&   r;   rO         iW  rC   1   r   rX   i  r   r@   rW   )r   r   r  r  r  r  r   r   ild_deflection_jumpsr%  r&  r-  r.  )rt   r   r6r  m13w3r   s          r]   test_ild_with_sliding_hinger>  h  s   RcA	
	'B	
	'Br0HC	
		q	!Ba2	A??2##Aq)R///??2##Aq)Xa_<<<??3$$Q*xS/A.AAAA??3$$Q*xB/?.??????3$$Q+q000??3$$Q+q000!!"%**1a0Xa5G4GGGG!Q1;;Aq!hsC&8%88881a2<<Q"xA&6666r`   c            	      l	   [        S5      u  pp#n[        S5      u  pVpx[        XX#U5      n	[        S5      u  pU	R                  USSSS9  U	R                  U
SSSS9  S/ SQ4U / SQ4/U	l        S/ SQ4U / SQ4/U	l        U	R                  5         U	R                  5       S	U-  :X  d   eU	R                  5       SU* [        -  S/:X  d   eU	R                  5       SU* [        -  U-  S/:X  d   eU	R                  5       S:X  d   eU	R                  5       SSU
* [        -  U[        S	-  -  S	-  -   /:X  d   e[        XB-  U-  [        S
-  -  S-  XB-  [        S	-  -  U * XB-  U -  X-  S	U
-  -
  -  SU-  U-  U-  -   -  XB-  U S	-  -  SU-  U-  -   -  S	-  U
-
  -  -   S
U-  U-  U -  XB-  U -  X-  S	U
-  -
  -  SU-  U-  U-  -   -  XB-  U S	-  -  SU-  U-  -   -  -   [        U* U-  U S	-  -  U-  S	-  S
U-  U-  U S	-  -  XB-  U -  X-  S	U
-  -
  -  SU-  U-  U-  -   -  XB-  U S	-  -  SU-  U-  -   -  S-  -   XB-  U -  U
-  [        S
S	5      -  -   S
U-  U-  U-  -
  -  -   -  SU-  U-  U-  U-  -  nU	R                  5       u  pnXs=:X  a  S:X  d   e   e[        X-
  5      S:X  d   e[        SXX4[        5      nUR                  SSSSS9  S/ SQ4S/ SQ4/Ul        UR                  USSSS9  UR                  USSSS9  UR!                  XV5        UR"                  USUS0:X  d   eUR                  5         UR%                  5       SSS[        S
-  -  S
U-  U-  -  S[        S	-  -  X-  -  -
  S[        -  X-  -  -   /:X  d   eS[        S-  -  SU-  U-  -  S[        S
-  -  X-  -  -
  S[        S	-  -  X-  -  -   S[        S	-  -  XB-  -  -
  S[        -  XB-  -  -   nUR                  5       u  pnXs=:X  a  S:X  d   e   eX:X  d   e[        SXX4[        5      nUR                  SSSSS9  UR                  S[        -  SSSS9  UR                  USSSS9  UR                  USSSS9  UR                  USSSS9  UR                  USSSS9  UR!                  XVXx5        UR"                  USUSUSUS0:X  d   eg )Nzl, E, G, I, AzR1, R2, R3, R4zm, qr   r   dirzr   r   r   r)   r4   r'   rW   r?   r9   r   rQ   rR   rA  r;   ir   iw  i  }   r   i  r@   rO   iiit)r   r   r[   apply_moment_loadrf   re   solve_slope_deflectionpolar_momentr1   r   rp   axial_stressr0   r   r.   r
   rm   rn   r/   )rE   r!   Gr#   r%   rk   rl   r   R4rt   mr|   r   dxdydzr}   r~   s                     r]   test_Beam3DrP  |  s   O,MA!-.NBBqQ1A6?DALLAqcL"1aS)i.1i.1AJ9~9~6AO>>qs"""==?q1"Q$l***>>A2a461~--->>q   !Q1qAvax!8888ac!eAqDjlQSAXr13q5!#!);L
1Qq< 83q!t8bd1f$8&&'8(*+8, .- -/0s1uQwAqsQqSy8I
1Qq9 03q!t8bd1f$0&&()A2a419Q;q=	!Aad
ACE1319%1Qq0113q!t8bd1f3DEaG,H	AaA,!"1Qq,) )** + -.aCE!GAI	7
 JBB=q===B,-222	A!	"BMM"AQCM0IY8BMM"ARSM1MM"BbcM2'T2t 444488:!Q1a41Q#ad(AC. @4613< OPPPPQT'2a46*SAXqs^;d1a4ioM
1a4Aqs$JBB=q===$$$ 
A!	"BMM!1A3M/MM!A#QaSM1MM"ARSM1MM"BbcM2MM"ARSM1MM"BbcM2/T2tRE JJJJr`   c                  r    [        S5      u  pp#pEXE/n[        XX&U5      nUR                  5       XE-   :X  d   eg )Nzl, E, G, A, I1, I2)r   r   rH  )rE   r!   rJ  r%   I1r   r#   rt   s           r]   test_polar_moment_Beam3DrS    s@     !56A!	AqQ1A>>rw&&&r`   c            
         [        SSSS9u  pn[        SSS9u  p4n[        X U5      nUR                  R                  S5        UR                  R                  S5        UR                  USS5        UR                  USS	5        UR                  S
SS5        UR                  X45        UR                  U   US-  * S-  :X  d   e[        SU-  X5      nUR                  R                  S5        UR                  R                  S5        UR                  USS5        UR                  USS	5        UR                  S
SSUS9  UR                  X45        UR                  U   US-  * S-  :X  d   e[        SU-  X5      nUR                  USSUS9  UR                  R                  USU SUSUS05      nUR                  [        S05      S:X  d   eUR                  [        S05      S:X  d   e[        SU-  X5      nUR                  USS
US9  UR                  U[        [        SS
5      -  U[        [        US
5      -  -
  XR-  [        [        US5      -  -
  :X  d   e[        SU-  X5      nUR                  USSUS9  UR                  R                  USU SUSUS05      nUR                  [        S05      S:X  d   eUR                  [        S05      S:X  d   eg )NzE, I, LT)r   realzR, M, P)rU  r   r   r;   r>   r&   r)   r4   rY   r<   r   r9   r   r,   r   r@   i(k )r   r   re   rq   rf   r[   rm   rn   ro   xreplacer   r   )r!   r#   r   r   r   r   beamloadings           r]   test_parabolic_loadsrY    s   i$T:GA!id+GA! a=Df%MM OOAq"OOAq" 	OOAq!!!!'q!adU1W,,, !Q?Df%MM OOAq"OOAq" 	OOAq!O#!!!' q!adU1W,,, !Q?DOOAq!O#ii  !RB2q"!=>GQF#r)))QG$))) !Q?DOOAq!O#99.q!Q77.q!Q7780Aq99: ; ; ;
 !Q?DOOAq!O#ii  !RB2q"!=>GQF#w...QG$)))r`   c                     [        S5      n [        S5      n[        S5      n[        S5      u  p4[        S5      u  pVpxp[        XU 5      nUR                  U :X  d   eUR                  S :X  d   e[        SS5      Ul        UR                  [        [        SS	5      -  :X  d   eUR                  [        SS5      :X  d   eS
U
-  S-
  Ul        UR                  S
U
-  S-
  :X  d   eUR                  S :X  d   e[        [        5         [        SS5      Ul        S S S 5        [        SU[        SU	5      5      nUR                  [        SU	5      :X  d   eUR                  [        U	-  [        U	5      S-  -  S	-  :X  d   eUR                  SSS5        UR                  [        SS5        UR                  [        SS5        UR                  SSS5        UR                  [        [        5        UR                  S[!        ["        SS5      -  S[!        ["        SS5      -  [%        S5      -  -   S[!        ["        SS5      -  -   S[!        ["        SS5      -  S-  -   :X  d   eUR'                  5       S[!        ["        SS5      -  S[!        ["        SS5      -  S-  -
  S[!        ["        SS5      -  -
  S[!        ["        SS5      -  S-  -
  :X  d   eS[!        ["        SS
5      -  S[!        ["        SS
5      -  [%        S5      -  -   S[!        ["        SS5      -  -   S	[!        ["        SS
5      -  [%        S5      -  -   [        U-  U	-  [        U	5      S-  -  -  nUR)                  5       US	U-  -   :X  d   eS[!        ["        SS5      -  S-  S[!        ["        SS5      -  S-  -   S[!        ["        SS
5      -  -   S	[!        ["        SS5      -  S-  -   [        U-  U	-  [        U	5      S-  -  -  nUR+                  5       U["        -  U-   S	U-  -   :X  d   e[        SU[-        SUS4XV4SU45      5      nUR                  [-        SUS4XV4SU45      :X  d   eUR                  XVS-  -  S-  :X  d   e[        SU[/        SUS4US
-  U45      5      nUR                  [/        [1        SS5      [1        US5      [1        US
-  U5      5      :X  d   eUR                  XxS-  -  S-  :X  d   eUR3                  US 5      nUR                  S!SS5        UR                  S"SS5        UR                  S#SS5        S/Ul        S/Ul        UR                  [9        XVS-  -  S-  ["        S:*  4XxS-  -  S-  ["        S$:*  45      :X  d   eUR                  S :X  d   eUR:                  S$:X  d   eUR)                  5       R=                  ["        S%5      S&X%-  US-  -  -  :X  d   eUR)                  5       R=                  ["        S'5      S(X'-  US-  -  -  S)X%-  US-  -  -  -   :X  d   eUR+                  5       R=                  ["        S*5      S+X'-  US-  -  -  S,X%-  US-  -  -  -
  :X  d   eg ! , (       d  f       GNF= f)-Nr#   rE   r!   zC3, C4za, c, g, h, r, nr   r,   iq  r'   r)   r?   r   r4   r   r   r;   Z   -   r>   R   rO   r@   r<   r&   r   )   r   r   rW   r   r+  r   iA   r   #   r   i   r   i  i  r9   iXi@
 )r   r   r   rc   cross_sectionr   r   r   r   rr   r   r[   rk   rl   rm   ro   r   r   r   r0   r/   r.   r   r   r   r   rf   re   r   ra   r   )r#   rE   r!   rT   rU   r   rI   ghr   nb0rz   r|   r}   r~   rt   s                    r]   test_cross_sectionrf    sv   sAsAsAXFB12A! 
aABq   t###fa(Br(3"22222vfa0000sQwBqs1u$$$t###	
	!&!, 
 
b!VFA&	'Bvfa0000r!tCFAI~a////MM#q"MM"aMM"b"MM"b"B'77s.q!R882>QRSUVXZ>[;[\]^_\`;``1!R<<=?@ATUVXZ\^A_?_`a?ab c c c2&9!Q&B#BRH[\]_`bcHdEdefEf#f')*=aQ*G'G$HJKL_`aceghLiJijkJk$l m m m	1a(	(2.A!Q.J+J1Q4+O	O#Ar1--
.012EaQ2O0OPQRSPT0T
UWYZ[W[\]W]^abc^dfg^gWg	iA88:ac!!!	1a(	(	*R0CAq!0L-LR-O	ORTUhijlnpqUrRr	r"1b!,,R/
024Q$q&Q2B	DA==?bdRi!A#o--- 
b!WVaVaVaV<	=Bwv1vv1vFFFFqAvby(((	b!Xfq!fqsAh7	8Bx1wq!}gaPQcSToVVVVqAvby((( 	GALLaLLQLLQAJhAO??ia4AG(<qAvby!r'>RSSSS??d"""88r>>779>>!Q4QT?222779>>!R E13q!t8$4uac!Q$h7G$GGGG<<>q"%!#ad();fac!Q$h>O)OOOO] 
	s   Y
Y$c                      [        S5      n [        SSSSS5      nUR                  SSSS	S
9  UR                  SU -  SSSS
9  S/ SQ4S/ SQ4/Ul        UR	                  5       / SQ:X  d   eg )Nr   r   r      d   r   r   r   rB  rD  rW   r   rC  )r   )r   r   )r   i,  )r   r   r[   re   r	  r   rt   s     r]   test_max_shear_force_Beam3Drk  7  su    Ar2r3#ALL1A3L/LLAQaSL19~I7AO"AAAAr`   c                      [        S5      n [        SSSSS5      nUR                  SSSS	S
9  UR                  SU -  SSSS
9  S/ SQ4S/ SQ4/Ul        UR	                  5       / SQ:X  d   eg )Nr   r   r   rh  ri  r   r   r   rB  rD  rW   r   rC  )r   )r   r   )r   i>  )r   r   r[   re   r  rj  s     r]   test_max_bending_moment_Beam3Drm  ?  sr    Ar2r3#ALL1A3L/LLAQaSL19~I7AO==?????r`   c                  B   [        S5      n [        SSSSS5      nUR                  SSSS	S
9  UR                  SU -  SSSS
9  S/ SQ4S/ SQ4/Ul        UR	                  5         [        S5      n[        S5      n[        S5      nUR                  5       SSU4X44/:X  d   eg )Nr   r   r   rh  ri  r   r   r   rB  rD  rW   r   rC  z495/14z-10 + 10*sqrt(10793)/43z(10 - 10*sqrt(10793)/43)**3/160 - 20/7 + (10 - 10*sqrt(10793)/43)**4/6400 + 20*sqrt(10793)/301 + 27*(10 - 10*sqrt(10793)/43)**2/560r   r<   )r   r   r[   re   rG  r   r  )r   rt   rI   r{   r|   s        r]   test_max_deflection_Beam3Dro  G  s    Ar2r3#ALL1A3L/LLAQaSL19~I7AOA)*A  V  	WA&2q'A6!::::r`   c                     [        S5      n [        SSSSS5      nUR                  SSS	SS
9  UR                  SSS	SS
9  UR                  SSS	SS
9  UR                  5         UR	                  5       R                  U S5      [        S5      :X  d   eUR	                  5       R                  U S5      [        S5      :X  d   eUR	                  5       R                  U S5      [        S5      :X  d   eUR	                  5       R                  U S5      [        S5      :X  d   eUR	                  5       R                  U S5      [        S5      :X  d   eg )Nr   r   r   rh  ri  r   r   r,   r>   r@  r<   r   r4   z1/40rO   z17/280rW   z53/840r   z2/35z3/56)r   r   rF  solve_for_torsionangular_deflectionr   r   rj  s     r]   test_torsion_Beam3Drs  S  s8   Ar2r3#AArs+B,B,!&&q!,???!&&q!,0AAAA!&&q"-1BBBB!&&q"-@@@!&&q"-@@@r`   N)Esympy.core.functionr   sympy.core.numbersr   r   sympy.core.singletonr   sympy.core.symbolr   r   sympy.sets.setsr	   sympy.simplify.simplifyr
   &sympy.physics.continuum_mechanics.beamr   sympy.functionsr   r   r   r   r   sympy.testing.pytestr   sympy.physics.unitsr   r   r   r   r   r   sympy.geometryr   r   r   r   sympy.core.sympifyr   r   r   rk   rl   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r)  r/  r5  r>  rP  rS  rY  rf  rk  rm  ro  rs  r   r`   r]   <module>r     s    & - " / $ , 7 M M ' @ @ 9 = = &
3K
3K		BjZ>.B8;@4=n#J !F4MlL_\2ih66..
9)CV:B74N47(3Kl'9*x?PBB@
;Ar`   