
    sgak                        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=y%)&    )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|_	        |j                  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                  }|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 |	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 |	j1                         }
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!      }t        d"      }t        d#      }t        d$      }t        d%      }t        d&      }t        d'      }t        d(      }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 |j-                         }
|t%        t        |d      z  d)z  |t%        t        |d      z  dz  z   | |z  z  | |z  |z  |t%        ||d      z  d)z  z
  |t%        ||d      z  dz  z
  | |z  z  z   }t3        |
      t3        |      k(  sJ |j1                         }
t        | |z  |z  |t%        ||d      z  d)z  z
  |t%        ||d      z  dz  z
  z  | |z  z  |t%        t        |d*      z  dz  |t%        t        |d      z  dz  z   | |z  z  z   | |z  | |z  |z   z  ||z  t%        ||d      z  d)z  z   ||z  t%        ||d      z  dz  z   |t%        ||d*      z  dz  z
  |t%        ||d      z  dz  z
  | |z  z  z   }t5        |
|z
        dk(  sJ t        d+| |d      }|j                  dddd,       |j                  j7                  d       t9        d-      }t9        d.      }|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 |j-                         }
dt%        t        dd*      dz  t%        t        dd      dz  z
  t%        t        dd      dz  z
  t%        t        dd*      dz  z
  | |z  z  z
  }|
|k(  sJ |j1                         }
dt        z  t%        t        dd      d/z  t%        t        dd      d0z  z
  t%        t        dd*      dz  z
  t%        t        dd      d/z  z
  | |z  z  z
  }|
||z   k(  sJ t        d| |d      j                  d1ddd2       j"                  }
d1t%        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 j-                         }
d1t%        t        dd      z  dz  dt%        t        dd      z  dz  z   }|
|| |z  z  |z   k(  sJ j1                         }
d1t%        t        dd      z  d)z  dt%        t        dd      z  d)z  z   }|
|| |z  z  |t        z  z   |z   k(  sJ t;        t<        fd3       t;        t>              5  d_        d d d        y # 1 sw Y   y xY w)4NEE_1II_1A      r      r   r&   )
deflectionsloper'         r   )r*   r-   r/   )r(   r-   r/      r   
   x   )r4   r   )r1   r      r)      r.     <   .  lw0w2a1cc1def   r0   	   )valuestartorderendC3C4      rK   c                  .     j                  dddd      S )NrP   r   r3   r.   rQ   )
apply_load)b4s   d/var/www/html/venv/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boundary_conditionsextendrS   R1R2solve_for_reaction_loadsreaction_loadsloadr   shear_forceshear_stressbending_momentr,   r   r+   r   r
   appendr   r   
ValueError	TypeError)r!   r"   r#   r$   r%   bs_bcsd_bcsbcs_newb1pqr=   r>   r?   r@   rA   rB   rC   rD   rE   b2b3rL   rM   rT   s                            @rU   	test_Beamrt      s   sA
-CsA
-CsAQ1A88q==!!!??a::?? AH88q== A### AO??c!!! AJ::?? hAOAJ  F8vh$OOOO JJvv&'JJE,,,, OOFF+,OOE,,,, ##G.)+ + + + 
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   q,,q5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_charr3   r   r)   r'   r.   rO   r7   r   r      )r   r   rS   ra   r`   rb   r,   r   r   r+   r\   )	rv   r!   r#   Pa3a4rk   rp   rq   s	            rU   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<<rW   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Fr=   Trw   r{   r   r3   r6   r)   r8   )
r   r   r   r\   r]   rS   r`   ra   rb   rc   )	r!   r#   M1M2r   r=   b5rp   rq   s	            rU   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6M6rW   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   r8      r)   i r'   r0   r3   r   r4   rQ   iJir.   r&   rO   r6   ir:   i0  rG   )r   r   r   r   r   r   r   r   rS   r\   rb   rc   r   r+   subsr   )r!   r#   r`   ra   kNgNrk   s          rU   test_beam_unitsr   (  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ArW   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)      r3   R, Mr   r6   r{   r4   r0   r&   ))r3   r&    )r   )r6   r   T(   iP   )r   r   r   rS   r   r\   r]   rb   r,   r   r   r+   r   r   r   r   )r!   r#   rk   RMs        rU   test_variable_momentr   D  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&(; ; ;rW   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   r3   r   r6   r   r'   r{   g      ^@g      T@ir=   Trw   zR1 M1 R2 R3 Phinger.   i0      rF   r0   r|   i  r4   r&   )r{   )r&   r   )r'   r   i  S     iX i  %   i i.   i )r   r   joinrS   r]   r\   rX   rZ   r   r   r,   r   intr+   argsr   rb   rc   r   r   )r!   r#   ro   rr   rk   r=   r`   r   ra   R3r}   s              rU   test_composite_beamr   d  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<= = = =rW   c                  H   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 y )Nr!   r#   r4   r9   r   r3   ir7   r)   r   r'   r.   )r   r   rS   point_cflexurer   r!   r#   rk   s      rU   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2rW   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&   r3   rP   r   r6   r.   rQ   )rP   r   r6   N)r'   r)   r3   N)	r   r   remove_loadri   rS   rd   r   r   applied_loadsr   s      rU   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   r3   zM_0, R_0r   r&   r4   r)   r   r.   r1   pinrollerr2   r5   r6   r9   r:   r;   r<   R_10R_30r7   r8   r   r   R_0M_0R_8   i   r}   Trw   rv   )typezR_0, R_L, M_0, M_L)r   r   apply_supportrS   r   rb   r
   r,   r   r   r+   r   rc   )r!   r#   rk   r   r   p0p1r   r   m0r   r}   rv   R_LM_Ls                  rU   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LrW   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#   r.   r   r   r3   r6   r)   r'   rQ   r8   r=   Trw   r}   r   r&   )	r   r   r   rS   rb   max_shear_forcer	   r
   r   )
r!   r#   rk   r   r   r=   r}   r`   ra   	max_shears
             rU   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5rW   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, PTrw   r   r   r3   r)   r'   rQ   r8   )r   r   r   rS   rb   rc   max_bmoment)r!   r#   r=   r}   rk   r`   ra   s          rU   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---rW   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, FTrw   r{   r   r)   r3   r8   r6   r.      )r   r   r\   r]   rS   max_deflection)r!   r#   r=   r   rk   s        rU   test_max_deflectionr   3  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8rW   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)   r.   r'   rO   r7   r1   2   rI   rJ   r   r3   ir   iw  i  }   r   i  r8   rG   iiit)r   r   rS   apply_moment_loadr]   r\   solve_slope_deflectionpolar_momentre   r   rf   axial_stressrg   r   r+   r
   rb   rc   r,   )r=   r!   Gr#   r%   r`   ra   r   R4rk   mrq   expected_deflectiondxdydzrr   rs   s                     rU   test_Beam3Dr   @  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JrW   c                  ~    t        d      \  } }}}}}||g}t        | ||||      }|j                         ||z   k(  sJ y )Nzl, E, G, A, I1, I2)r   r   r   )r=   r!   r   r%   I1I2r#   rk   s           rU   test_polar_moment_Beam3Dr   v  sN     !56Aq!QB	RAq!Q1A>>rBw&&&rW   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)rx   realzR, M, P)r   r{   r   r3   r6   r&   r)   r.   rQ   r4   r   r1   r   r0   r   r8   i(k )r   r   r\   rh   r]   rS   rb   rc   rd   xreplacer   r   )r!   r#   rv   r   r   r}   beamloadings           rU   test_parabolic_loadsr   ~  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$)))rW   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#   r=   r!   zC3, C4za, c, g, h, r, nr{   r0   iq  r'   r)   r7   r   r.   ir   r3   Z   -   r6   R   rG   r8   r4   r&   r   )      r   rO   r   $   r   iA   r   #   r   i   r   i  i  r1   iXi@
 )r   r   r   rZ   cross_sectionr   r   r   r   ri   r   rS   r`   ra   rb   rd   r   r   r   rg   r,   r+   r   r   r   r   r]   r\   r   rX   r   )r#   r=   r!   rL   rM   ry   rA   ghrnb0ro   rq   rr   rs   rk   s                    rU   test_cross_sectionr     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   r   rO   r   r   )r{   )r   i`	  )r   i,  )r   r   rS   r\   r   r   rk   s     rU   test_max_shear_force_Beam3Dr     su    Ar2r3#ALL1A3L/LLAQaSL19~I7AO"AAAArW   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   r   r   r   r   r   r   r   rO   r   r   )r{   )r   r   )r   i>  )r   r   rS   r\   r   r   s     rU   test_max_bending_moment_Beam3Dr     sr    Ar2r3#ALL1A3L/LLAQaSL19~I7AO==?????rW   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   r   r   r   r   r   r   r   rO   r   r   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{   r4   )r   r   rS   r\   r   r   r   )r   rk   rA   rp   rq   s        rU   test_max_deflection_Beam3Dr    s    Ar2r3#ALL1A3L/LLAQaSL19~I7AOA)*A  V  	WA&2q'Aq6!::::rW   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   r   r   r   r   r0   r6   r   r4   r   r.   z1/40rG   z17/280rO   z53/840   z2/35z3/56)r   r   r   solve_for_torsionangular_deflectionr   r   r   s     rU   test_torsion_Beam3Dr    s8   Ar2r3#AArs+B,B,!&&q!,???!&&q!,0AAAA!&&q"-1BBBB!&&q"-@@@!&&q"-@@@rW   N)>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   r`   ra   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   rW   rU   <module>r     s    & - " / $ , 7 M M ' @ @ 9 = = &
3K
3K		B[|>.B8;@4=n	3 !F4Mn66..
93Kl'9*x?PBB@
;ArW   