
    oVhe                        d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZmZmZmZ d d	lmZ d d
lmZmZmZmZmZ d dlmZ d dlm Z m!Z!m"Z"m#Z# d dl$m%Z%  ed      Z& ed      Z' e	d      \  Z(Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d  Z9d! Z:d" Z;d# Z<d$ Z=d% Z>d& Z?d' Z@d( ZAd) ZBd* ZCd+ ZDy,)-    )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                     t        d      } t        d      }t        d      }t        d      }t        d      }t        d| |      }|j                  dk(  sJ |j                  | k(  sJ |j                  |k(  sJ |j
                  t        k(  sJ d|_        |j                  dk(  sJ ||_        |j                  |k(  sJ ||_        |j                  |u sJ t        |_        |j
                  t        u sJ dg|_        d	g|_	        d
g|_
        dg|_        |j                  dgd	gd
gdgdk(  sJ |j                  j                  ddg       |j                  }|g dk(  sJ |j                  j                  ddg       |j                  }|g dk(  sJ |j                  j                  ddg       |j                  }|g dk(  sJ |j                  j                  ddg       |j                  }	|	g dk(  sJ |j                  }
|
g dg dg dg ddk(  sJ t        d| |      }|j                  ddd       |j                  t        dd       |j                  t         dd       |j                  ddd       ddg|_        |j#                  t        t                |j$                  }t        d t         d!i}||k(  sJ |j&                  }dt)        t        dd      z  d t)        t        dd      z  z   dt)        t        dd      z  z   d!t)        t        dd      z  z   }||k(  sJ |j+                         }d"t)        t        dd      z  d t)        t        dd      z  z
  dt)        t        dd      z  z
  d!t)        t        dd      z  z
  }||k(  sJ |j-                         }d"t)        t        dd      z  d t)        t        dd      z  z
  dt)        t        dd      z  z
  d!t)        t        dd      z  z
  |z  }||k(  sJ |j/                         }d"t)        t        dd      z  d t)        t        dd      z  z
  dt)        t        dd      z  z
  d!t)        t        dd      z  z
  }||k(  sJ |j1                         }d#t)        t        dd!      z  d$t)        t        dd!      z  z   dt)        t        dd      z  z   t)        t        dd!      z   t3        d%d$      z   }||| |z  z  k(  sJ |j5                         }t        t3        d%d$      z  dt)        t        dd$      z  d$z  z
  t)        t        dd$      z   d&t)        t        dd!      z  z   t)        t        dd$      d$z  z   d'z
  }||| |z  z  k(  sJ t        d(      }t        d)      }t        d*      }t        d+      }t        d,      }t        d-      }t        d.      }t        d/      }t        d0      }t        || |      }|j                  ||d       |j                  ||d       ||fg|_        ||fg|_	        |j&                  }|t)        t        |d      z  |t)        t        |d      z  z   }||k(  sJ |j+                         }| t)        t        |d!      z  d!z  |t)        t        |d      z  z
  }||k(  sJ |j-                         }| t)        t        |d!      z  d!z  |t)        t        |d      z  z
  |z  }||k(  sJ |j/                         }| t)        t        |d$      z  d z  |t)        t        |d      z  z
  }||k(  sJ |j1                         }|t)        t        |d      z  d1z  |t)        t        |d!      z  d!z  z   | |z  z  | |z  |z  |t)        ||d      z  d1z  z
  |t)        ||d!      z  d!z  z
  | |z  z  z   }t7        |      t7        |      k(  sJ |j5                         }t        | |z  |z  |t)        ||d      z  d1z  z
  |t)        ||d!      z  d!z  z
  z  | |z  z  |t)        t        |d2      z  dz  |t)        t        |d$      z  d z  z   | |z  z  z   | |z  | |z  |z   z  ||z  t)        ||d      z  d1z  z   ||z  t)        ||d!      z  d!z  z   |t)        ||d2      z  dz  z
  |t)        ||d$      z  d z  z
  | |z  z  z   }t9        ||z
        dk(  sJ t        d3| |d!      }|j                  dd!d!d$4       |j                  j;                  d       t=        d5      }t=        d6      }|j&                  }dt)        t        d!d!      z  d!t)        t        d$d      z  z   dt)        t        d$d      z  z   d!t)        t        d$d!      z  z   }||k(  sJ |j+                         }d!t)        t        d!d$      z  d$z  d!t)        t        d$d      z  z
  d!t)        t        d$d!      z  z
  d!t)        t        d$d$      z  d$z  z
  }||k(  sJ |j-                         }t)        t        d!d$      d$z  dt)        t        d$d      z  z
  dt)        t        d$d!      z  z
  dt)        t        d$d$      z  d$z  z
  }||k(  sJ |j1                         }d!t)        t        d!d2      dz  t)        t        d$d$      d$z  z
  t)        t        d$d      d z  z
  t)        t        d$d2      dz  z
  | |z  z  z
  }||k(  sJ |j5                         }d!t        z  t)        t        d!d       d7z  t)        t        d$d      d8z  z
  t)        t        d$d2      dz  z
  t)        t        d$d       d7z  z
  | |z  z  z
  }|||z   k(  sJ t        d| |d$      j                  d9ddd$:       j&                  }d9t)        t        dd      z  d$t)        t        d$d      z  z   }||k(  sJ j+                         }d$t)        t        dd      z  d$t)        t        d$d      z  z
  }||k(  sJ j-                         }t)        t        dd      t)        t        d$d      z
  }||k(  sJ j1                         }d9t)        t        dd$      z  d z  d$t)        t        d$d$      z  d z  z   }||| |z  z  |z   k(  sJ j5                         }d9t)        t        dd      z  d1z  d$t)        t        d$d      z  d1z  z   }||| |z  z  |t        z  z   |z   k(  sJ t?        t@        fd;       t?        tB              5  d_        d d d        y # 1 sw Y   y xY w)<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                  .     j                  dddd      S )NrX   r   r;   r4   rY   )
apply_load)b4s   a/home/dcms/DCMS/lib/python3.12/site-packages/sympy/physics/continuum_mechanics/tests/test_beam.py<lambda>z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~      sO   sA
-CsA
-CsAQ1A88q==!!!??a::?? AH88q== A### AO??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!Q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 a4K4 	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 1Q3<< 	A	(4
a 3Aq! <<Q>>!R#	$&()<QA)F&F	G!R#A%	&(-	.A 1Q3<< 	sA	B	B	BsA	BsAsAsA	aA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	QTUVWTW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  rs  ps  \t  	tA!9q	!!! 	A	1Q3q52)!R33B66	QA	&&q() 	*+,Q3	0	
aQ
''+	QA	&&q()+,Q30	0 	sQBqD1H~"0B::2==dq"a((*+	QA	&&s*+ 		QA	&&q() ,-Q30		0A AE?a	aAq	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IJ1N 	NA6M6
A	!"1a+C/!Q"2%&(;Aq!(DR(GH!Q"3&')*1. 	.A B;;	aAq	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1Q3"
A
q!Q''*Q/B1a/K-KB-NNA1Q3"Q$#### :>?			   s   s**s3c                     t        dd      } t        d      \  }}}}}t        | ||d      }|j                  t        | d       |j                  t        dd       |j                  | | d	z  d       |j                  t        t               |j                         }|t        t        dd	      z  d
z  |t        t        | d	z  d	      z  d	z  z
  |t        t        | d	      z  d
z  z   }||||z  z  |z   k(  sJ |j                         }|t        t        dd      z  dz  |t        t        | d	z  d      z  dz  z
  |t        t        | d      z  dz  z   }||||z  z  |t        z  z   |z   k(  sJ dg|_
        |j                         }|t        z  |t        t        dd      z  dz  z   |t        t        | d	z  d      z  dz  z
  |t        t        | d      z  dz  z   }||||z  z  k(  sJ d| dfg|_
        |j                         }| d	z   |z  t        z  dz  |t        t        dd      z  dz  z   |t        t        | d	z  d      z  dz  z
  |t        t        | d      z  dz  z   }||||z  z  k(  sJ y )NLTpositivezE I P a3 a4a)	base_charr;   r   r)   r'   r4   rW   r?   r   r      )r   r   r[   rk   rj   rl   r/   r   r   r.   rd   )	r   r!   r#   Pa3a4rs   rz   r{   s	            r]   test_insufficient_bconditionsr     s    	d#Am,OAq!RQ1$ALLQLLQLL!QqS"r2&		A	
aA
&&q(1-@AaC-K+KA+MMPQRefgijlmRnPnopPppA1Q3"	A	
aA
&&r)A.A!QqS!.L,LQ,NNQRSfghjkmnSoQoprQrrA1Q3"Q$####hAO	A
1q$Q1--b0015HAaCQR5S3STU3UUXYZmnoqrtuZvXvwyXyyA1Q3<<1v&AO	A	
Aa	"q,Q155b881=PQRTUVWTWYZ=[;[\];]]`abuvwyz|}b~`~  @B  aB  	BA1Q3<<r_   c            	      @   t        d      } t        d      }t        d      \  }}t        d      }t        dd      }t        || |      }d|d	fg|_        d|d	fg|_        |j                  t        d	d
       |j                  |d	d       |j                  t        |d
       |j                  ||d       |j                  | |dz  d
       |j                  t        t        ||       |j                  }t        |dz  t        |dz  || |z  dz  |||z  dz  i}||k(  sJ y )Nr!   r#   zM1, M2FrE   Tr   r   r   r;   r>   r)   r@   )
r   r   r   rd   re   r[   rj   rk   rl   rm   )	r!   r#   M1M2r   rE   b5rz   r{   s	            r]   test_statically_indeterminater      s   sAsAXFBsAsT"A	aAB1vB1a&/BKMM"aMM"aMM"aMM"aMM1"ac2BB/
A	QqS"ac2r!tAvr1Q3q51A6M6r_   c            	      H   t        d      } t        d      }t        d      \  }}t        t        z  }t        t        z  }t        dt        z  d|z  t        dz  z  dt        t        z  dz  z        }|j                  d	|z  dt        z  d
       |j                  |dt        z  d
       |j                  |dt        z  d
       |j                  d|z  t        z  dt        z  ddt        z         dt        z  dt        z  fdt        z  dt        z  fg|_	        |j                  ||       |j                  |dt        z  |dt        z  ik(  sJ t        dt        z  | t        z  t        dz  z  |t        dz  z        }|j                  d|z  dt        z  d
       |j                  |dt        z  d
       |j                  |dt        z  d
       |j                  d|z  t        z  dt        z  d       dt        z  dt        z  fdt        z  dt        z  fg|_	        |j                  ||       |j                  |t        t        dd      z  |t        t        dd      z  ik(  sJ |j                         j                  t        dt        z        dt        z  d| z  |z  z  k(  sJ y )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[   rd   rl   rm   r   r.   subsr   )r!   r#   rj   rk   kNgNrs   s          r]   test_beam_unitsr   7  sE   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r2&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r2&F8FA+>$>F8TXZ[K\D\]]]]<<>q!E'*eEk1Q3q5.AAAAr_   c                     t        d      } t        d      }t        d| ddt        z
  z        }|j                  ddd       t	        d      \  }}|j                  |dd       |j                  |dd	       d
g|_        d
g|_        |j                  ||       |j                         j                         dt        z  t        t        dd      z  dt        dz
  z  t        t        dd      z  z
  | z  j                         k(  sJ |j                         j                         dt        dz  z  t        t        dd      z  dt        dt        t              dz  dk  ft        dz  t        ddt        dz        z  df      z  z
  dt        t        dd      z  z   | z  j                         k(  sJ t        d| t        z
  |      }|j                  ddd       t	        d      \  }}|j                  |dd       |j                  |dd	       d
g|_        d
g|_        |j                  ||       |j                         j                         dt        |         t        |  t        z         z   z  t        t        dd      z  dt        |  dz          t        |  t        z         z   z  t        t        dd      z  z   d|  t        |        z  | t        |  t        z         z  z   t        z   z  t        t        dd      z  z   d|  t        |  dz         z  | t        |  t        z         z  z   t        z   dz
  z  t        t        dd      z  z
  |z  j                         k(  sJ y )Nr!   r#   r'   r)      r;   R, Mr   r>   r   r<   r,   r&   ))r;   r&    )r   )r>   r   T(   iP   )r   r   r   r[   r   rd   re   rl   r/   r   r   r.   r   r   r   r   )r!   r#   rs   RMs        r]   test_variable_momentr   S  sP   sAsAQ1a!e9ALLQ6?DAq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?DAq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                  	   t        d      } t        d      }t        d| d|z        }t        d| |      }|j                  |d      }|j                  ddd       |j                  d	dd
       |j                  ddd       dg|_        dg|_        |j                  dk(  sJ |j                  t        d|z  t        dk  f|t        dk  f      k(  sJ |j                         j                  t        d      d| |z  z  k(  sJ |j                         j                  t        d      d| |z  z  k(  sJ t        |j                         j                  t        d      j                  d         dk(  sJ t        dd      }t        d      \  }}}}	}
t        d|z  | |      }t        d|z  | |      }|j                  |d      }|j                  |dd
       |j                  |dd       |j                  ||d       |j                  |	d|z  d       |j                  |
d|z  d       dg|_        d|dfd|z  dfg|_        |j!                  ||||	       |j"                  |	|
 dz  ||
t%        dd      z  ||
 |z  dz  ||
t%        dd      z  ik(  sJ |j                         j                  t        d|z        d|
z  |dz  z  d| z  |z  z  k(  sJ |j                         j                  t        d|z        d|
z  |dz  z  d| z  |z  z  k(  sJ |j                         j                  t        d|z        d|
z  |dz  z  d| z  |z  z  k(  sJ t        ddd      }t        ddd      }|j                  |d      }|j                  |dd
       |j                  |dd       |j                  |d d       |j                  |	dd       |j                  ddd       dg|_        g d!|_        |j!                  ||||	       |j                         d
t'        t        dd       z  d"z  t'        t        dd      d#z  z   d$t'        t        d d      z  d%z  z
  t'        t        dd      d&z  z   d't'        t        dd      z  d(z  z
  k(  sJ |j                         t'        t        dd       d"z  t'        t        dd      d"z  z   d$t'        t        d d      z  d)z  z
  t'        t        dd      d*z  z   d't'        t        dd      z  d+z  z
  k(  sJ y ),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[   re   rd   r`   rb   r   r   r/   r   intr.   argsr   rl   rm   r   r   )r!   r#   ry   r|   rs   rE   rj   r   rk   R3r   s              r]   test_composite_beamr   s  s   sAsA	aCE	B	a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!A#;...779>>!Q41:---q||~""1a(--a01T999d#A0BBA	ac1aB	ac1aB
7ALLQLLQLLQLLQqS"LLAaCAJ1v!Qx0AOr2r2.QBqD"aQ.?aRT!VRQRS[\]_`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r2r2.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                     t        d      } t        d      }t        d| |      }|j                  ddd       |j                  ddd       |j                  dd	d       |j                  d
dd       |j                  ddd       |j                         t	        dd      gk(  sJ t        d      } t        d      }t        d| |      }|j                  dd      }|j                  dd      }|j                  dd      \  }}|j                  d       |j                  ddd       |j                  dddd       |j                  ||||       |j                         t	        dd      dt	        dd      gk(  sJ t        d      } t        d      }t        d| |      }|j                  dd      }|j                  dd      }|j                  dd      \  }}|j                  d       |j                  d       |j                  ddd       |j                  dddd       |j                  ||||       t        t              5  |j                          d d d        y # 1 sw Y   y xY w)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_hingerl   r   NotImplementedError)r!   r#   rs   r0r10r15m15s          r]   test_point_cflexurer     s/   sAsARAALLQLLaLLQLLQLLAq(2q/!2222sAsARAA	
	'B
//"5/
)Cr0HC2LLaLLRBr3S1(4"5r8C;L!MMMMsAsARAA	
	'B
//"5/
)Cr0HC12LLaLLRBr3S1	#	$ 	  s   II(c                     t        d      } t        d      }t        d| |      }	 |j                  ddd       J # t        $ r Y nw xY w|j	                  ddd	       |j	                  ddd       |j	                  d	ddd
       |j                  d	ddd
       |j
                  dt        t        dd	      z  dt        t        dd      z  z   k(  sJ |j                  ddgk(  sJ 	 |j                  ddd       J # t        $ r Y nw xY w|j                  ddd	       |j                  ddd       |j
                  dk(  sJ |j                  g k(  sJ y )Nr!   r#   r'   r)   r&   r;   rX   r   r>   r4   rY   )rX   r   r>   N)r'   r)   r;   N)	r   r   remove_loadrq   r[   rn   r   r   applied_loads)r!   r#   rs   s      r]   test_remove_loadr     s_   sAsAQ1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!   : 	AA%C: :	DDc            
         t        d      } t        d      }t        d| |      }|j                  dd       |j                  ddd       t	        d      \  }}|j                  ||       t        |j                               t        d	t        t        dd
      z  dt        t        dd      z  z
  dt        t        dd      z  z   | |z  z        k(  sJ t        |j                               t        dt        t        dd      z  dt        t        dd      z  dz  z
  dt        t        dd      z  dz  z   | |z  z        k(  sJ t        d| |      }|j                  dd      }|j                  dd      }|j                  ddd       |j                  ddd       |j                  ||       |j                         dt        t        dd      z  dt        t        dd      z  z   dt        t        dd
      z  z   t        t        dd      z   t        dd      z   | |z  z  k(  sJ |j                         t        t        dd      z  dt        t        dd      z  dz  z
  t        t        dd      z   dt        t        dd      z  z   t        t        dd      dz  z   dz
  | |z  z  k(  sJ t        d      }t        d      }||k(  sJ |j                  |d|dik(  sJ |j                  |   dk(  sJ t        d| |      }|j                  dd      \  }}	|j                  dd      }|j                  dddd       |j                  ||	|       t        d      }t        d       }t        d!      }
||k(  sJ |	|k(  sJ ||
k(  sJ |j                  |d"|d#|
d$ik(  sJ |j                  |	   d#k(  sJ t        d%d&'      }t        d(d&'      }t        || |      }|j                  dd)       |j                  |d)       |j                  | |dz  d       t	        d*      \  }}}}|j                  ||||       |j                  ||dz  ||dz  || |z  dz  |||z  dz  ik(  sJ y )+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   rl   r
   r/   r   r   r.   r   rm   )r!   r#   rs   r   r   p0p1r   r   m0r   r   r   R_LM_Ls                  r]   test_apply_supportr     s   sAsAQ1AOOA|$LLQz"HCsC(AGGI(B/B1a/K,KbQdefhiklQmNm,m(Aq11-245aC,9 #: : : :ALLN#x4G1a4P1PSUVijkmnpqVrSrstSt1t(Aq11!32467c1; (< < < < 	RAA	
U	#B	
X	&BLLQLLb"r2&779/1a881=PQRTVXY=Z;ZZ%aQ//02EaQ2OPRZ[_abRcdfghifi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1A__Q(FB	
H	%BLLQ1r2r*
-C
-C
-C999999Rc3;;;;B3&&&sT"AsT"AQ1AOOAGO$OOAGO$LL!QqS" !56Cc3sCc2QqS#qsC!Aaac!eLLLLr_   c                     t        ddd      j                  dd      \  } }j                  dd      }j                  dd      }j                  d      }j                  d	      }j                  d
dd       j                  dddd       j	                  | |||       t        d      \  }}}}	}
}|d|d|d|	di|
d|di| |||g}||g}dt        fd|D              sJ t        fd|D              sJ dt        t        dd      z  dz  dt        t        dd      z  dz  z
  dt        t        dd      z  dz  z
  dt        t        dd      z  z   dt        t        dd      z  dz  z
  t        t        dd      z   dt        t        d	d      z  dz  z   dt        t        dd      z  z
  t        t        dd      z
  }j                         j                         |j                         k(  sJ dt        t        dd      z  d z  t        t        dd      d!z  z   d"t        t        dd      z  d#z  z   t        t        dd      d$z  z
  dt        t        dd      z  d%z  z   t        t        dd      d&z  z
  d't        t        d	d      z  d(z  z
  dt        t        dd      z  d)z  z   t        t        dd      d&z  z   }j                         j                         |j                         k(  sJ dt        t        dd      z  d!z  t        t        dd      d*z  z   d"t        t        dd      z  d#z  z   t        t        dd      d+z  z
  dt        t        dd      z  d,z  z   t        t        dd-      d.z  z
  d't        t        d	d      z  d(z  z
  t        t        dd      d)z  z   t        t        dd-      d.z  z   }j                         j                         |j                         k(  sJ t        d/      }t        d0      }t        d1      }t        d||      j                  dd      \  } }j                  dd      }j                  d2       j                  |d3d       j	                  | ||       j                  || dz  |d|z  || dz  ik(  sJ j                         d4|z  t        t        dd      z  |t        t        dd      z  dz  z   d5|z  t        t        d2d      z  z   |t        t        d3d      z  z
  |t        t        dd      z  dz  z   k(  sJ d4|z  t        t        dd      z  dz  |t        t        dd      z  d	z  z   d5|z  t        t        d2d      z  z   |t        t        d3d      z  d2z  z
  |t        t        dd      z  d	z  z    ||z  z  }j                         j                         |j                         k(  sJ t        d/      }t        d0      }t        d1      }t        d6d78      }t        d9d78      }t        d:d78      }||z   |z   }t        |||      j                  dd      \  } }j                  |d      }j                  |       j                  |||z   d       j	                  | ||       j                  |    | |z  ||z   z  k(  sJ j                  |   ||z  |z  ||z   z  k(  sJ j                  |   | |z  ||z   z  k(  sJ | |z  |z  t        t        dd      z  ||z   z  ||z  t        t        ||z   |z   d      z  ||z   z  z   ||z  t        t        dd      z  ||z   z  z   |t        t        ||z   d      z  z
  d|z  |dz  z  |z  d|z  |dz  z  |z  |z  z
  d|z  |dz  z  |dz  z  z
  ||dz  z  |z  z   d|z  |dz  z  |dz  z  z   d|z  |z  |dz  z  z   t        t        |d      z  d2|dz  z  d	|z  |z  z   d2|dz  z  z   z  z
  }t        j                         j                               t        |j                               k(  sJ y );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   `   K   | ]%  }t        j                  |   |   z
        k   ' y wN)absrm   ).0rrs   expected_reactions	tolerances     r]   	<genexpr>z,test_apply_rotation_hinge.<locals>.<genexpr>8  2     fPQs1##A&);A)>>?)Kf   +.c              3   `   K   | ]%  }t        j                  |   |   z
        k   ' y wr   )r   rotation_jumps)r   r   rs   expected_rotationsr   s     r]   r   z,test_apply_rotation_hinge.<locals>.<genexpr>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[   rl   r   allr   r   r0   r   r/   r.   r   rm   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   r1rs   r   r   r   s                            @@@@r]   test_apply_rotation_hinger   (  s]	   RRA__QW_-FB
//"5/
)C
//"5/
)C	
			"B

 
 
$CLLaLLRBr2sC0&-.O&P#CdD#ttS&$dAFy$
;BS)CyIfUefffffUe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r2s+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r2r*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                  >	   t        ddd      } | j                  dd      \  }}| j                  d      }| j                  dd      }| j                  dd	d
       | j	                  |||       t        d      \  }}}}| j                  |d|d|dik(  sJ d}	t        | j                  |   dz
        |	k  sJ | j                         dt        t        dd      z  dt        t        dd      z  z
  dt        t        d	d      z  z   dt        t        dd      z  dz  z
  k(  sJ | j                         t        t        dd       dz  t        t        dd      dz  z   t        t        d	d      dz  z
  dt        t        dd      z  dz  z   k(  sJ t        d      }
t        d      }t        d      }t        d	|
|      }t        d|
|      }|j                  |      } | j                  dd      \  }}| j                  d       | j                  dd      }| j                  dd	d
       | j	                  |||       t        d      }| j                  |dd|
z  |z  z  ik(  sJ t        d      }
t        d      }t        d      }t        dd !      }t        d"d !      }t        d#d !      }||z   |z   }t        ||
|      } | j                  dd      }| j                  |d      }| j                  ||z          | j                  |d      }| j                  |dd|       | j	                  |||       | j                         ||z  t        t        dd      z  dz  ||z  t        t        |d      z  dz  z   |t        t        dd      z  dz  z
  |t        t        |d      z  dz  z   |dz   |z  |z  dz  |dz  |z  |z  dz  z
  t        t        ||z   d      z  z   k(  sJ | j                         |dz  |z  t        z  dz  ||z  t        t        dd      z  d$z  z
  ||z  t        t        |d      z  d$z  z
  |t        t        dd%      z  dz  z   |t        t        |d%      z  dz  z
  |dz  |z  |z  dz  |dz  |z  |z  dz  z   t        t        ||z   d      z  z   |
|z  z  k(  sJ y )&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[   rl   r   rm   r   deflection_jumpsr0   r   r   r.   r   r   )rs   r   r   w8r13r   r   R_13r   r   r!   r#   r   ry   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r2s+!"67CdC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AB	aBB
A__QW_-FB!
//"5/
)CLLar2s+
-C#tQqSV}!5555sAsAsA	t	$B	t	$B	t	$B
R"AQ1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fgdgi i i ir_   c                     t        d      } t        d      }t        d| |      }t        d      \  }}|j                  |dd       |j                  |dd       |j                  ddd       |j                  d	dd       |j                  dddd
       |j	                  ||       |j                         t        dd      dfk(  sJ t        dd      }t        d      }t        || |      }t        d      \  }}|j                  |dd       |j                  ||d       |j                  |dd|
       |j	                  ||       |j                         }	|	d   dk(  sJ t        |	d   |t        |      z  dz  z
        dk(  sJ y )Nr!   r#   r4   r   r   r;   r>   r)   r'   rY   r@   rE   Tr   r   r   r&   )	r   r   r   r[   rl   max_shear_forcer	   r
   r   )
r!   r#   rs   r   r   rE   r   rj   rk   	max_shears
             r]   test_max_shear_forcer	    sp   sAsAQ1A6?DAqLLArLLArLLArLLArLLAqaL q!$8Aq>1"5555d#AsAQ1AXFBLLQLLQLLAqaL r2&!!#IQ<1IaLAc!fHQJ/0A555r_   c                     t        d      } t        d      }t        dd      \  }}t        || |      }t        d      \  }}|j                  |dd       |j                  ||d       |j                  ||d	z  d       |j	                  ||       |j
                   |j                         |d	z  ||z  d
z  fk(  sJ t        || |      }t        d      \  }}|j                  |dd       |j                  ||d       |j                  |dd|       |j	                  ||       |j                         |d	z  ||d	z  z  dz  fk(  sJ y )Nr!   r#   zl, PTr   r   r   r;   r)   r'   rY   r@   )r   r   r   r[   rl   rm   max_bmoment)r!   r#   rE   r   rs   rj   rk   s          r]   test_max_bmomentr    s7   sAsA6D)DAqQ1AXFBLLQLLQLLAaCr2&==?qsAaCEl***Q1AXFBLLQLLQLLAqaL r2&==?qsAadF1Ho---r_   c                     t        dd      \  } }}}t        || |      }d|dfg|_        d|dfg|_        |j	                  |dz  dd       |j	                  | |z  dz  dd	       |j	                  |dz  |d       |j	                  ||z  dz  |d	       |j	                  | |dz  d       |j                         |dz  ||d
z  z  d| z  |z  z  fk(  sJ y )Nz
E, I, l, FTr   r   r   r)   r;   r@   r>   r4      )r   r   rd   re   r[   max_deflection)r!   r#   rE   r   rs   s        r]   test_max_deflectionr    s    5JAq!QQ1Aq!foAO!QAJLL1aLL!AaBLL1aLL1Q2LL!QqS"!A#qAvs1uQw'7!8888r_   c                     t        d      } t        d      }t        d| |      }|j                  dd       |j                  dd       t        d      \  }}|j	                  d||       |j
                  }|j                  |t        |dd       t        |dd      dz  z   t        |dd      dz  z
  |t        |dd       dz  t        |dd      z   t        |dd      dz  z   ik(  sJ t        d      } t        d      }t        d	      }t        d
d      }t        || |      }|j                  |d       |j                  |dd       t        d      \  }}	|j	                  |||	       |j
                  }|j                  || t        |dd      z  |t        ||d      z  z   |z
  |	| |z  t        |dd      z  ||z  z
  |t        |dd      z  z   |t        ||d      z  z
  ik(  sJ t        d      } t        d      }t        d| |      }|j                  dd      }
|j                  dd      }|j                  dd      }|j                  dd      \  }}|j	                  d|
||||       |j
                  }|j                  |
   j                  |d      t        dd       k(  sJ |j                  |   j                  |d      t        dd       k(  sJ |j                  |   j                  |d      t        dd      k(  sJ |j                  |   j                  |d      t        dd       k(  sJ |j                  |   j                  |d      t        dd       k(  sJ y )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#   rs   r   r   r   r   r   r   r   r   r5r   r20m20s                  r]   test_solve_for_ild_reactionsr    s   sAsARAAOOAEO"OOBUO#$ICad+	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Q1AOOAGO$LLArz"HCac*	A??sQB':1a'C$CaH[\]_`bcHdFd$dgh$h"QBqD)<Q1)E$E!$KaPcdeghjkPlNl$l&'(;Aq!(D&D%EF F F F 	sAsARAA	
	'B	
	'B
//"5/
)Cr0HCaRc3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            	         t        d      } t        d      }t        d      }t        dd      }t        dd      }t        ||z   | |      }|j                  dd	
      }|j                  ||z   d	
      }|j                  |||       |j	                  ||||       |j
                  }| |z  t        |dd      z  ||z   z  ||z  t        |dd      z  ||z   z  z
  |t        | dd      z  z
  |t        |||z   d      z  z   |z   |t        |dd      z  ||z   z  z   |t        |||z   d      z  ||z   z  z
  | |z  t        |dd      z  ||z   z  ||z  t        |||z   d      z  ||z   z  z   ||z  t        |dd      z  ||z   z  z
  ||z  t        |||z   d      z  ||z   z  z   d|z  z   t        ||d      z  z
  }	|j                  j                         |	j                         k(  sJ t        d      } t        d      }t        d| |      }|j                  dd	
      }|j                  dd	
      }
|j                  dd	
      }|j                  dd
      \  }}|j                  d||
|||       |j	                  dd||
|||       |j
                  }|j                  j                  |d      t        dd      k(  sJ |j                  j                  |d      t        dd       k(  sJ y )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   rs   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R"WaA	
	'B	
bu	-BaR("aR(	Abe/1a88"r'BQrTJ]^_abdeJfEfhjmohoEpp-qb!Q778:;<OPQSUXZSZ\]<^:^_abc-aA66R@ACDEXYZ\^ac\cefEgCgiknpipCqr B21a;;R"WE"M`abdfikdkmnMoHoqsvxqxHyyR4 3Aq! <<b2gFGIJ2NabcegjlelnoNpIprtwyryIz{Q3 3Ar1 =>>N ;;>#8#8#::::sAsARAA	
	'B	
	'B
//"5/
)Cr0HCaRc37!QBS#6	A;;Ar"hr3&7777;;Aq!hsD&9%9999r_   c            	         t        d      } t        d      }t        d      }t        dd      }t        dd      }t        ||z   | |      }|j                  dd	
      }|j                  ||z   d	
      }|j                  }|j	                  |||       |j                  ||||       |j                  j                  |d      j                  |d      j                  |d      d|z  dz  k(  sJ t        d      } t        d      }t        d| |      }|j                  dd	
      }|j                  dd	
      }	|j                  dd	
      }
|j                  dd
      \  }}|j	                  d||	|
||       |j                  dd||	|
||       |j                  j                  |d      t        dd       k(  sJ |j                  j                  |d      t        dd      k(  sJ y )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   rs   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R"WaA	
	'B	
bu	-B	AaR(2q"b)<<Q"''A.33B:bd1fDDDsAsARAA	
	'B	
	'B
//"5/
)Cr0HCaRc371aRc37<<Q#S(9'9999<<Q"hr2&6666r_   c                     t        d      } t        d      }t        d      }t        dd      }t        dd      }t        dd      }t        ||z   |z   | |      }|j                  d	d
      }|j                  ||z   d
      }|j                  ||z   |z   d
      }	|j                  ||z          |j	                  ||||	       |j
                  }
|j                  |   j                  |
d      j                  |d      j                  |d      j                  |d      d|z  dz  k(  sJ |j                  |   j                  |
d      j                  |d      j                  |d      j                  |d      d	k(  sJ |j                  |   j                  |
d      j                  |d      j                  |d      j                  |d      d	k(  sJ |j                  |   j                  |
d      j                  |d      j                  |d      j                  |d      d|z  dz  k(  sJ |j                  |	   j                  |
d      j                  |d      j                  |d      j                  |d      d|z  dz  k(  sJ |j                  |||||	       |j                  j                  |
d      j                  |d      j                  |d      j                  |d      d|z  dz  k(  sJ |j                  j                  |
d      j                  |d      j                  |d      j                  |d      d	k(  sJ |j                  |||||	       |j                  j                  |
d      j                  |d      j                  |d      j                  |d      | dz  k(  sJ |j                  j                  |
d      j                  |d      j                  |d      j                  |d      | k(  sJ y )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   r/  rs   r   r   r2r   s              r]   test_ild_with_rotation_hinger3  N  s   sAsAsA	t	$B	t	$B	t	$BR"Wr\1a A	
	'B	
bu	-B	
b2E	2B27#aR,	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"aR,;;Aq!&&r1-222q9>>r2F"Q$r'QQQ;;Ar"''A.33B:??BG1LLL2q"b"-<<Q"''A.33B:??BGA2a4OOO<<Q"''A.33B:??BGA2MMMr_   c                  P   t        ddd      } | j                  dd      }| j                  dd      }| j                  dd      \  }}| j                  d      }| j                  d	||||       | j                  }| j
                  |   j                  |d      d
k(  sJ | j
                  |   j                  |d      t        dd      k(  sJ | j
                  |   j                  |d      t        dd       k(  sJ | j
                  |   j                  |d      t        dd       k(  sJ | j
                  |   j                  |d      dk(  sJ | j
                  |   j                  |d      dk(  sJ | j                  |   j                  |d      t        dd       k(  sJ | j                  dd	||||       | j                  j                  |d      t        dd       k(  sJ | j                  dd	||||       | j                  j                  |d      t        dd       k(  sJ y )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,  )rs   r   r6r  m13w3r   s          r]   test_ild_with_sliding_hinger<  h  s   RcA	
	'B	
	'Br0HC	
		q	!BaRc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BS1;;Aq!hsC&8%88881aRc2<<Q"xA&6666r_   c            	      	   t        d      \  } }}}}t        d      \  }}}}t        | ||||      }	t        d      \  }
}|	j                  |ddd       |	j                  |
ddd       dg df| g dfg|	_        dg df| g dfg|	_        |	j                          |	j                         d	|z  k(  sJ |	j                         d| t        z  dgk(  sJ |	j                         d| t        z  |z  dgk(  sJ |	j                         dk(  sJ |	j                         dd|
 t        z  |t        d	z  z  d	z  z   gk(  sJ t        ||z  |z  t        d
z  z  dz  ||z  t        d	z  z  |  ||z  | z  | |z  d	|
z  z
  z  d|z  |z  |z  z   z  ||z  | d	z  z  d|z  |z  z   z  d	z  |
z
  z  z   d
|z  |z  | z  ||z  | z  | |z  d	|
z  z
  z  d|z  |z  |z  z   z  ||z  | d	z  z  d|z  |z  z   z  z   t        | |z  | d	z  z  |z  d	z  d
|z  |z  | d	z  z  ||z  | z  | |z  d	|
z  z
  z  d|z  |z  |z  z   z  ||z  | d	z  z  d|z  |z  z   z  dz  z   ||z  | z  |
z  t        d
d	      z  z   d
|z  |z  |z  z
  z  z   z  d|z  |z  |z  |z  z  }|	j                         \  }}}||cxk(  rdk(  sJ  J t        ||z
        dk(  sJ t        d||||t              }|j                  dddd       dg dfdg dfg|_        |j                  |ddd       |j                  |ddd       |j!                  ||       |j"                  |d|dik(  sJ |j                          |j%                         dddt        d
z  z  d
|z  |z  z  dt        d	z  z  ||z  z  z
  dt        z  ||z  z  z   gk(  sJ dt        dz  z  d|z  |z  z  dt        d
z  z  ||z  z  z
  dt        d	z  z  ||z  z  z   dt        d	z  z  ||z  z  z
  dt        z  ||z  z  z   }|j                         \  }}}||cxk(  rdk(  sJ  J ||k(  sJ t        d||||t              }|j                  dddd       |j                  dt        z  ddd       |j                  |ddd       |j                  |ddd       |j                  |ddd       |j                  |ddd       |j!                  ||||       |j"                  |d|d|d|dik(  sJ y )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   r?  r;   ir   iw  i  }   r   i  r@   rO   iiit)r   r   r[   apply_moment_loadre   rd   solve_slope_deflectionpolar_momentr1   r   ro   axial_stressr0   r   r.   r
   rl   rm   r/   )rE   r!   Gr#   r%   rj   rk   r   R4rs   mr{   r   dxdydzr|   r}   s                     r]   test_Beam3DrN  |  s   O,MAq!Q-.NBBq!Q1A6?DAq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ac!eAqDjlQqSAXr1Q3q5!A#!);L
1Qq< 8Q3q!t8bd1f$8&&'8(*+8, .- -/0s1uQw!AqsQqSy8I
1Qq9 0Q3q!t8bd1f$0&&()A2a419Q;q=	!Aad
AaCE1Q319%1Qq011Q3q!t8bd1f3DEaG,H	!AaA,!"1Qq,) )** + -.aCE!GAI	7
 JBB=q===B,,-222	Aq!Q	"BMM"AQCM0IY8BMM"ARSM1MM"BbcM2B'T2t 444488:!Q1a41Q#ad(AaC. @461Q3< OPPPPQT'2a46*SAXqs^;d1a4i1oM
1a41Aqs$JBB=q===$$$$ 
Aq!Q	"BMM!1A3M/MM!A#QaSM1MM"ARSM1MM"BbcM2MM"ARSM1MM"BbcM2BB/T2tRE JJJJr_   c                  ~    t        d      \  } }}}}}||g}t        | ||||      }|j                         ||z   k(  sJ y )Nzl, E, G, A, I1, I2)r   r   rF  )rE   r!   rH  r%   I1r   r#   rs   s           r]   test_polar_moment_Beam3DrQ    sN     !56Aq!QB	RAq!Q1A>>rBw&&&r_   c            
         t        ddd      \  } }}t        dd      \  }}}t        || |      }|j                  j                  d       |j                  j                  d       |j                  |dd       |j                  |dd	       |j                  d
dd       |j                  ||       |j                  |   |dz   dz  k(  sJ t        d|z  | |      }|j                  j                  d       |j                  j                  d       |j                  |dd       |j                  |dd	       |j                  d
dd|       |j                  ||       |j                  |   |dz   dz  k(  sJ t        d|z  | |      }|j                  |dd|       |j                  j                  |d| d|d|di      }|j                  t        di      dk(  sJ |j                  t        di      dk(  sJ t        d|z  | |      }|j                  |dd
|       |j                  |t        t        dd
      z  |t        t        |d
      z  z
  ||z  t        t        |d      z  z
  k(  sJ t        d|z  | |      }|j                  |dd|       |j                  j                  |d| d|d|di      }|j                  t        di      dk(  sJ |j                  t        di      dk(  sJ y )NzE, I, LT)r   realzR, M, P)rS  r   r   r;   r>   r&   r)   r4   rY   r<   r   r9   r   r,   r   r@   i(k )r   r   rd   rp   re   r[   rl   rm   rn   xreplacer   r   )r!   r#   r   r   r   r   beamloadings           r]   test_parabolic_loadsrW    s   i$T:GAq!id+GAq! 1a=Df%MM OOAq"OOAq" 	OOAq!!!!Q'q!adU1W,,, !Q?Df%MM OOAq"OOAq" 	OOAq!O#!!!Q' 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10Aq99: ; ; ;
 !Q?DOOAq!O#ii  !RB2q"!=>GQF#w...QG$)))r_   c                     t        d      } t        d      }t        d      }t        d      \  }}t        d      \  }}}}}	}
t        |||       }|j                  | k(  sJ |j                  d k(  sJ t        dd      |_        |j                  t        t        dd	      z  k(  sJ |j                  t        dd      k(  sJ d
|
z  dz
  |_        |j                  d
|
z  dz
  k(  sJ |j                  d k(  sJ t        t              5  t        dd      |_        d d d        t        d|t        d|	            }|j                  t        d|	      k(  sJ |j                  t        |	z  t        |	      dz  z  d	z  k(  sJ |j                  ddd       |j                  t        dd       |j                  t        dd       |j                  ddd       |j                  t        t               |j                  dt!        t"        dd      z  dt!        t"        dd      z  t%        d      z  z   dt!        t"        dd      z  z   dt!        t"        dd      z  dz  z   k(  sJ |j'                         dt!        t"        dd      z  dt!        t"        dd      z  dz  z
  dt!        t"        dd      z  z
  dt!        t"        dd      z  dz  z
  k(  sJ dt!        t"        dd
      z  dt!        t"        dd
      z  t%        d      z  z   dt!        t"        dd      z  z   d	t!        t"        dd
      z  t%        d      z  z   t        |z  |	z  t        |	      dz  z  z  }|j)                         |d	|z  z   k(  sJ dt!        t"        dd      z  dz  dt!        t"        dd      z  dz  z   dt!        t"        dd
      z  z   d	t!        t"        dd      z  dz  z   t        |z  |	z  t        |	      dz  z  z  }|j+                         |t"        z  |z   d	|z  z   k(  sJ t        d|t-        d|df||fd|f            }|j                  t-        d|df||fd|f      k(  sJ |j                  ||dz  z  dz  k(  sJ t        d|t/        d|df|d
z  |f            }|j                  t/        t1        dd      t1        |d      t1        |d
z  |            k(  sJ |j                  ||dz  z  dz  k(  sJ |j3                  |d       }|j                  d!dd       |j                  d"dd       |j                  d#dd       dg|_        dg|_        |j                  t9        ||dz  z  dz  t"        dk  f||dz  z  dz  t"        d$k  f      k(  sJ |j                  d k(  sJ |j:                  d$k(  sJ |j)                         j=                  t"        d%      d&||z  |dz  z  z  k(  sJ |j)                         j=                  t"        d'      d(||z  |dz  z  z  d)||z  |dz  z  z  z   k(  sJ |j+                         j=                  t"        d*      d+||z  |dz  z  z  d,||z  |dz  z  z  z
  k(  sJ y # 1 sw Y   <xY w)-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   rb   cross_sectionr   r   r   r   rq   r   r[   rj   rk   rl   rn   r   r   r   r0   r/   r.   r   r   r   r   re   rd   r   r`   r   )r#   rE   r!   rT   rU   r   rI   ghr   nb0ry   r{   r|   r}   rs   s                    r]   test_cross_sectionrd    s   sAsAsAXFB12Aq!Q1 
aA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VaVaV<	=Bwv1v1v1vFFFFqAvby(((	b!Xfq!fqsAh7	8Bx1wq!}gaPQcSToVVVVqAvby((( 	GALLaLLQLLQAJhAO??i1a4AG(<qAvby!r'>RSSSS??d"""88r>>779>>!Q41QT?222779>>!R E1Q3q!t8$4uac!Q$h7G$GGGG<<>q"%!A#ad();fac!Q$h>O)OOOO]- -s   YYc                      t        d      } t        ddddd      }|j                  dddd	
       |j                  d| z  ddd
       dg dfdg dfg|_        |j	                         g dk(  sJ y )Nr   r   r      d   r   r   r   r@  rB  rW   r   rA  )r   )r   r   )r   i,  )r   r   r[   rd   r  r   rs   s     r]   test_max_shear_force_Beam3Dri  7  su    Ar2r3#ALL1A3L/LLAQaSL19~I7AO"AAAAr_   c                      t        d      } t        ddddd      }|j                  dddd	
       |j                  d| z  ddd
       dg dfdg dfg|_        |j	                         g dk(  sJ y )Nr   r   r   rf  rg  r   r   r   r@  rB  rW   r   rA  )r   )r   r   )r   i>  )r   r   r[   rd   r  rh  s     r]   test_max_bending_moment_Beam3Drk  ?  sr    Ar2r3#ALL1A3L/LLAQaSL19~I7AO==?????r_   c                  N   t        d      } t        ddddd      }|j                  dddd	
       |j                  d| z  ddd
       dg dfdg dfg|_        |j	                          t        d      }t        d      }t        d      }|j                         dd|f||fgk(  sJ y )Nr   r   r   rf  rg  r   r   r   r@  rB  rW   r   rA  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[   rd   rE  r   r  )r   rs   rI   rz   r{   s        r]   test_max_deflection_Beam3Drm  G  s    Ar2r3#ALL1A3L/LLAQaSL19~I7AOA)*A  V  	WA&2q'Aq6!::::r_   c                     t        d      } t        ddddd      }|j                  ddd	d
       |j                  ddd	d
       |j                  ddd	d
       |j                          |j	                         j                  | d      t        d      k(  sJ |j	                         j                  | d      t        d      k(  sJ |j	                         j                  | d      t        d      k(  sJ |j	                         j                  | d      t        d      k(  sJ |j	                         j                  | d      t        d      k(  sJ y )Nr   r   r   rf  rg  r   r   r,   r>   r>  r<   r   r4   z1/40rO   z17/280rW   z53/840r   z2/35z3/56)r   r   rD  solve_for_torsionangular_deflectionr   r   rh  s     r]   test_torsion_Beam3Drq  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   rj   rk   r~   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r'  r-  r3  r<  rN  rQ  rW  rd  ri  rk  rm  rq  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_   