o
    GZhe                     @   s  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d Z*dd Z+dd Z,dd Z-dd Z.dd Z/dd Z0dd  Z1d!d" Z2d#d$ Z3d%d& Z4d'd( Z5d)d* Z6d+d, Z7d-d. Z8d/d0 Z9d1d2 Z:d3d4 Z;d5d6 Z<d7d8 Z=d9d: Z>d;d< Z?d=d> Z@d?d@ ZAdAdB ZBdCdD ZCdEdF ZDdGS )H    )expand)Rationalpi)S)Symbolsymbols)Interval)simplify)Beam)SingularityFunction	PiecewisemeijergAbslog)raises)meternewtonkilogigamilli)Beam3D)CirclePolygonPoint2DTriangle)sympifyxyR1, R2c                     s  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s6J d|_|jdks@J ||_|j|ksJJ ||_|j|u sTJ 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ddg |j}|g dksJ |j
ddg |j
}|g dksJ |j	ddg |j	}|g dksJ |jddg |j}	|	g dksJ |j}
|
g dg dg dg ddksJ td| |}|ddd |tdd |tdd |ddd ddg|_|tt |j}td td!i}||ksJ |j}dttdd d ttdd  dttdd  d!ttdd  }||ksGJ | }d"ttdd d ttdd  dttdd  d!ttdd  }||ksrJ | }d"ttdd d ttdd  dttdd  d!ttdd  | }||ksJ | }d"ttdd d ttdd  dttdd  d!ttdd  }||ksJ | }d#ttdd! d$ttdd!  dttdd  ttdd! td%d$ }||| |  ksJ | }ttd%d$ dttdd$ d$  ttdd$ d&ttdd!  ttdd$d$  d' }||| |  ks4J t d(}t d)}t d*}t d+}t d,}t d-}t d.}t d/}t d0}t|| |}|||d |||d ||fg|_||fg|_	|j}|tt|d |tt|d  }||ksJ | }| tt|d! d! |tt|d  }||ksJ | }| tt|d! d! |tt|d  | }||ksJ | }| tt|d$ d  |tt|d  }||ksJ | }|tt|d d1 |tt|d! d!  | |  | | | |t||d d1  |t||d! d!  | |   }t|t|ks3J | }t| | | |t||d d1  |t||d! d!   | |  |tt|d2 d |tt|d$ d   | |   | | | | |  || t||d d1  || t||d! d!  |t||d2 d  |t||d$ d   | |   }t|| dksJ td3| |d!}|jdd!d!d$d4 |j	d td5}td6}|j}dttd!d! d!ttd$d  dttd$d  d!ttd$d!  }||ksJ | }d!ttd!d$ d$ d!ttd$d  d!ttd$d!  d!ttd$d$ d$  }||ks,J | }ttd!d$d$ dttd$d  dttd$d!  dttd$d$ d$  }||ksYJ | }d!ttd!d2d ttd$d$d$  ttd$dd   ttd$d2d  | |   }||ksJ | }d!t ttd!d d7 ttd$dd8  ttd$d2d  ttd$d d7  | |   }||| ksJ td| |d$  jd9ddd$d:  j}d9ttdd d$ttd$d  }||ksJ   }d$ttdd d$ttd$d  }||ksJ   }ttddttd$d }||ksJ   }d9ttdd$ d  d$ttd$d$ d   }||| |  | ks@J   }d9ttdd d1 d$ttd$d d1  }||| |  |t  | ksiJ tt  fd;d< tt! d _W d    d S 1 sw   Y  d S )=NEE_1II_1A      r      r   r$   r      r'   r$   )
deflectionslopebending_momentshear_forcer$   r$   r'      )r+   r0   r1   r$   r2   r*   r2   )r)   r3   r4   r%   r2   r*   r   )r(   r5   r6   )r&   r5   r6      r   
   x   )r:   r   )r7   r      r'      r2     <   .  lw0w2a1cc1def   r*   	   )valuestartorderendC3C4      rQ   c                      s    j dddddS )NrV   r   r9   r2   rW   )
apply_load Zb4rY   `/var/www/auris/lib/python3.10/site-packages/sympy/physics/continuum_mechanics/tests/test_beam.py<lambda>   s    ztest_Beam.<locals>.<lambda>)"r   r
   lengthZelastic_modulussecond_momentvariabler   r   bc_deflectionbc_slopeZbc_bending_momentZbc_shear_forceZboundary_conditionsextendrX   R1R2solve_for_reaction_loadsreaction_loadsloadr   r/   shear_stressr.   r-   r   r,   r   r	   appendr   r   
ValueError	TypeError)r   r    r!   r"   r#   bZsf_bcsZbm_bcsZs_bcsZd_bcsZbcs_newb1pqrC   rD   rE   rF   rG   rH   rI   rJ   rK   b2b3rR   rS   rY   rZ   r[   	test_Beam   s  

 
 &l ,"  (("
$rr   c            	      C   s$  t ddd} t d\}}}}}t| ||dd}|t| d |tdd || | d	 d |tt | }|ttdd	 d
 |tt| d	 d	 d	  |tt| d	 d
  }||||  | kseJ |	 }|ttdd d |tt| d	 d d  |tt| d d  }||||  |t  | ksJ dg|_
|	 }|t |ttdd d  |tt| d	 d d  |tt| d d  }||||  ksJ d| dfg|_
|	 }| d	  | t d |ttdd d  |tt| d	 d d  |tt| d d  }||||  ksJ d S )NLTpositivezE I P a3 a4a)Z	base_charr9   r   r'   r%   r2   rU   r=   r   r      )r   r
   rX   rd   rc   re   r-   r   r   r,   r`   )	rs   r   r!   Pa3Za4rl   rn   ro   rY   rY   r[   test_insufficient_bconditions  s*   @@ HVr{   c            	   	   C   s   t d} t d}td\}}t d}t ddd}t|| |}d|d	fg|_d|d	fg|_|td	d
 ||d	d |t|d
 |||d || |d d
 |tt|| |j	}t|d t|d || | d ||| d i}||kszJ d S )Nr   r!   zM1, M2FrC   Trt   rw   r   r9   r<   r'   r>   )
r   r   r
   r`   ra   rX   rc   rd   re   rf   )	r   r!   M1ZM2r|   rC   Zb5rn   ro   rY   rY   r[   test_statically_indeterminate   s"   .r~   c                  C   s  t d} t d}td\}}tt }tt }tdt d| td  dtt d  }|d	| dt d
 ||dt d
 ||dt d
 |jd| t dt ddt d dt dt fdt dt fg|_	|
|| |j|dt |dt iks~J tdt | t td  |td  }|d| dt d
 ||dt d
 ||dt d
 |d| t dt d dt dt fdt dt fg|_	|
|| |j|ttdd |ttdd iksJ | tdt dt d|  |  ksJ d S )Nr   r!   r   r>      r'   i r%   r*   r9   r   r:   rW   iJir2   r$   rU   r<   ir@   i0  rM   )r   r   r   r   r   r
   r   r   rX   r`   re   rf   r   r,   subsr   )r   r!   rc   rd   ZkNZgNrl   rY   rY   r[   test_beam_units7  s,   (""$"*0r   c                  C   s|  t d} t d}td| ddt  }|ddd td\}}||dd ||dd	 d
g|_d
g|_||| | 	 dt t
tdd dtd  t
tdd  |  	 ks]J | 	 dtd  t
tdd dtdttd dk ftd tddtd  df  dt
tdd  |  	 ksJ td| t |}|ddd td\}}||dd ||dd	 d
g|_d
g|_||| | 	 dt|   t|  t   t
tdd dt|  d  t|  t   t
tdd  d|  t|   | t|  t   t  t
tdd  d|  t|  d  | t|  t   t d  t
tdd  | 	 ks<J d S )Nr   r!   r%   r'      r9   R, Mr   r<   rw   r:   r*   r$   ))r9   r$   rY   )rY   )r<   r   T(   iP   )r   r
   r   rX   r   r`   ra   re   r-   r   r   r,   r   r   r   r   )r   r!   rl   RMrY   rY   r[   test_variable_momentS  sr    42,
&
r   c                  C   s  t d} t d}td| d| }td| |}||d}|ddd |d	dd
 |ddd dg|_dg|_|jdks@J |jtd| t	dkf|t	dkfksTJ |
 t	dd| |  ksdJ |
 t	dd| |  kstJ t| t	djd dksJ tddd}td\}}}}	}
td| | |}td| | |}||d}||dd
 ||dd |||d ||	d| d ||
d| d dg|_d|dfd| dfg|_|||||	 |j|	|
 d ||
tdd ||
 | d ||
tdd iksJ |
 t	d| d|
 |d  d|  |  ks&J | t	d| d|
 |d  d|  |  ksAJ | t	d| d|
 |d  d|  |  ks\J tddd}tddd}||d}||dd
 ||dd ||d d ||	dd |ddd dg|_g d!|_|||||	 |
 d
tt	dd  d" tt	ddd#  d$tt	d d d%  tt	ddd&  d'tt	dd d(  ksJ | tt	dd d" tt	ddd"  d$tt	d d d)  tt	ddd*  d'tt	dd d+  ksJ d S ),Nr   r!   r'   g      ?fixedir   r9   r   r<   r   r%   rw   g      ^@g      T@irC   Trt   zR1 M1 R2 R3 PZhinger2   0      rL   r*   rx   i  r:   r$   )rw   )r$   r   )r%   r   i  S     iX i  %   i i.   i )r   r
   joinrX   ra   r`   r]   r^   r   r   r-   r   intr,   argsr   re   rf   r   r   )r   r!   rm   rp   rl   rC   rc   r}   rd   R3ry   rY   rY   r[   test_composite_beams  sr   (  "D666
(&r   c                  C   s  t d} t d}td| |}|ddd |ddd |dd	d |d
dd |ddd | tddgks=J t d} t d}td| |}|jddd}|jddd}|jddd\}}|d |ddd |dddd ||||| | tdddtddgksJ t d} t d}td| |}|jddd}|jddd}|jddd\}}|d |d |ddd |dddd ||||| tt	 |  W d    d S 1 sw   Y  d S )Nr   r!   r:   r?   r   r9   ir=   r'   r   r%   r2      pintyper   rU   r*   r        )
r   r
   rX   Zpoint_cflexurer   apply_supportapply_rotation_hingere   r   NotImplementedError)r   r!   rl   r0r10r15Zm15rY   rY   r[   test_point_cflexure  sD   
"



"r   c                  C   s,  t d} t d}td| |}z	|ddd W n
 ty!   	 Y nw J |d	d
d |ddd |jddddd |jddddd |jd	ttd
d dttdd  ksYJ |jddgksbJ z	|ddd W n
 tyu   	 Y nw J |d	d
d |ddd |jd
ksJ |jg ksJ d S )Nr   r!   r%   r'   r$   r9   TFrV   r   r<   r2   rW   )rV   r   r<   N)r%   r'   r9   N)	r   r
   Zremove_loadrj   rX   rg   r   r   Zapplied_loads)r   r!   rl   rY   rY   r[   test_remove_load  s2   *r   c               
   C   s  t d} t d}td| |}|dd |ddd td\}}||| t| td	tt	dd
 dtt	dd  dtt	dd  | |  ksMJ t|
 tdtt	dd dtt	dd d  dtt	dd d  | |  kswJ td| |}|dd}|dd}|ddd |ddd ||| | dtt	dd dtt	dd  dtt	dd
  tt	dd tdd | |  ksJ |
 t	tdd dtt	dd d  tt	dd dtt	dd  tt	ddd  d | |  ksJ t d}t d}||ksJ |j|d|diksJ |j| dks"J td| |}|dd\}}	|dd}|dddd |||	| t d}t d }t d!}
||ksXJ |	|ks_J ||
ksfJ |j|d"|d#|
d$ikstJ |j|	 d#ks~J t d%d&d'}t d(d&d'}t|| |}|jddd) |j|dd) || |d d td*\}}}}||||| |j||d ||d || | d ||| d iksJ d S )+Nr   r!   r%   r   Z
cantileverr   r9   zM_0, R_0r   r$   r:   r'   r   r2   r7   r   Zrollerr8   r;   r<   r?   r@   rA   rB   R_10R_30r=   r>   r   r   R_0M_0R_8   ir   ry   Trt   rs   r   zR_0, R_L, M_0, M_L)r   r
   r   rX   r   re   r	   r-   r   r   r,   r   rf   )r   r!   rl   r   r   p0p1r   r   m0r   ry   rs   R_LM_LrY   rY   r[   test_apply_support  s   *.$

2
>r   c                     s  t ddd  jddd\} } jddd} jddd} d} d	} d
dd  dddd  | ||| td\}}}}	}
}|d|d|d|	di|
d|di| |||g}||g}dt fdd|D ssJ t fdd|D sJ dttdd d dttdd d  dttdd d  dttdd  dttdd d  ttdd dttd	d d  dttdd  ttdd } 	 
 |
 ksJ d ttdd d! ttddd"  d#ttdd d$  ttddd%  dttdd d&  ttddd'  d(ttd	d d)  dttdd d*  ttddd'  }  
 |
 ks;J d ttdd d" ttddd+  d#ttdd d$  ttddd,  dttdd d-  ttdd.d/  d(ttd	d d)  ttddd*  ttdd.d/  }  
 |
 ksJ td0}td1}td2}t d||  jddd\} } jddd} d3  |d4d  | ||  j|| d |d| || d iksJ  	 d5| ttdd |ttdd d  d6| ttd3d  |ttd4d  |ttdd d  ksJ d5| ttdd d |ttdd d	  d6| ttd3d  |ttd4d d3  |ttdd d	   ||  }  
 |
 ks`J td0}td1}td2}td7d8d9}td:d8d9}td;d8d9}|| | }t |||  jddd\} } j|dd} |  ||| d  | ||  j|  | | ||  ksJ  j| || | ||  ksJ  j| | | ||  ksJ | | | ttdd ||  || tt|| | d ||   || ttdd ||   |tt|| d  d| |d  | d| |d  | |  d| |d  |d   ||d  |  d| |d  |d   d| | |d   tt|d d3|d  d	| |  d3|d     }t 	 
 t|
 ksJ d S )<Nr   r   r   r   r   r:   r   r   rU   r   r9   r<   zR_0, M_0, R_10, R_15, P_7, P_12g@gUUUUUUGg$@r2   gWs?gHxư>c                 3   *    | ]}t  j| |  k V  qd S N)absrf   .0r)rl   expected_reactions	tolerancerY   r[   	<genexpr>8     ( z,test_apply_rotation_hinge.<locals>.<genexpr>c                 3   r   r   )r   Zrotation_jumpsr   )rl   expected_rotationsr   rY   r[   r   9  r      r$   i,        r'   i iD  r   rA   r;   i  ip  r   `	  r   i  i@  i   ih     i   r%   i  r   r!   r|   r=   r>   rV      l1Trt   l2l3)r
   r   r   rX   re   r   allr   r   r.   r   r-   r,   r   rf   r	   )r   r   r   r   Zp7Zp12r   r   r   ZR_15ZP_7ZP_12Zreaction_symbolsZrotation_symbolsZexpected_bending_momentZexpected_slopeexpected_deflectionr   r!   r|   r   r   r   rs   r1rY   )rl   r   r   r   r[   test_apply_rotation_hinge(  s   

&

""
,,*
"$" "~
"&r   c                  C   s  t ddd} | jddd\}}| d}| jddd}| dd	d
 | ||| td\}}}}| j|d|d|diks>J d}	t| j| d |	k sMJ | 	 dt
tdd dt
tdd  dt
td	d  dt
tdd d  ksuJ |  t
tdd d t
tddd  t
td	dd  dt
tdd d  ksJ td}
td}td}t d	|
|}t d|
|}||} | jddd\}}| d | jddd}| dd	d
 | ||| td}| j|dd|
 |  iksJ td}
td}td}tdd d!}td"d d!}td#d d!}|| | }t ||
|} | jddd}| j|dd}| ||  | j|dd}| |dd| | ||| | 	 || t
tdd d || t
t|d d  |t
tdd d  |t
t|d d  |d  | | d |d | | d  t
t|| d  ksJ |  |d | t d || t
tdd d$  || t
t|d d$  |t
tdd% d  |t
t|d% d  |d | | d |d | | d  t
t|| d  |
|  ksJ d S )&N   r   r   r   r   r>   r   r   r*   r9   zR_0, M_0, R_13 W_8r:   ir   gUUUUUU@2   r$   i  r<   r2   r'   rx   r   U   rL   r   r!   I2W_8ro   r   Trt   r   r   rU   r%   )r
   r   apply_sliding_hingerX   re   r   rf   r   Zdeflection_jumpsr.   r   r   r,   r   r   )rl   r   r   Zw8r13r   r   ZR_13r   r   r   r!   r   rm   rp   ro   r   r   r   rs   Zr3r   rY   rY   r[   test_apply_sliding_hingev  s   
$
&


4806r   c            
      C   s>  t d} t d}td| |}td\}}||dd ||dd |ddd |d	dd |jddddd
 ||| | tdddfksLJ tddd}t d}t|| |}td\}}||dd |||d |j|dd|d
 ||| | }	|	d dksJ t|	d |t| d  dksJ d S )Nr   r!   r2   r   r   r9   r<   r'   r%   rW   r>   rC   Trt   ry   r   r$   )	r   r
   r   rX   re   max_shear_forcer   r	   r   )
r   r!   rl   r   r   rC   ry   rc   rd   Z	max_shearrY   rY   r[   test_max_shear_force  s,   (r   c                  C   s  t d} t d}tddd\}}t|| |}td\}}||dd |||d |||d	 d ||| |j | |d	 || d
 fksLJ t|| |}td\}}||dd |||d |j|dd|d ||| | |d	 ||d	  d fksJ d S )Nr   r!   zl, PTrt   r   r   r9   r'   r%   rW   r>   )r   r   r
   rX   re   rf   max_bmoment)r   r!   rC   ry   rl   rc   rd   rY   rY   r[   test_max_bmoment  s$    (r   c                  C   s   t ddd\} }}}t|| |}d|dfg|_d|dfg|_||d dd || | d dd	 ||d |d ||| d |d	 || |d d | |d ||d
  d|  |  fksgJ d S )Nz
E, I, l, FTrt   rw   r   r'   r9   r>   r<   r2      )r   r
   r`   ra   rX   max_deflection)r   r!   rC   r|   rl   rY   rY   r[   test_max_deflection  s   0r   c               
   C   s  t d} t d}td| |}|jddd |jddd td\}}|d|| |j}|j|t|dd t|ddd  t|ddd  |t|dd d t|dd t|ddd  iksaJ t d} t d}t d	}t d
dd}t|| |}|j|dd ||dd td\}}	||||	 |j}|j|| t|dd |t||d  | |	| | t|dd ||  |t|dd  |t||d  iksJ t d} t d}td| |}|jddd}
|jddd}|jddd}|jddd\}}|d|
|||| |j}|j|
 	|dt
dd ksJ |j| 	|dt
dd ks-J |j| 	|dt
ddks>J |j| 	|dt
dd ksPJ |j| 	|dt
dd ksbJ d S )Nr   r!   r:   r   r   r   z	R_0, R_10r$   r|   rs   Trt   r   r9   zR_L, M_Lr   r*   r%   ;     i  G	     rU   S   i  )r   r
   r   r   solve_for_ild_reactionsild_variableild_reactionsr   rX   r   r   )r   r!   rl   r   r   rv   r|   rs   r   r   r   r5r   r20m20rY   rY   r[   test_solve_for_ild_reactions  sX   "
*.
$$"$(r   c               	   C   s  t d} t d}t d}t ddd}t ddd}t|| | |}|jdd	d
}|j|| d	d
}|||| ||||| |j}| | t|dd ||  || t|dd ||   |t| dd  |t||| d  | |t|dd ||   |t||| d ||   | | t|dd ||  || t||| d ||   || t|dd ||   || t||| d ||   d|  t||d  }	|j |	 ksJ t d} t d}td| |}|jdd	d
}|jdd	d
}
|jdd	d
}|jddd
\}}|d||
||| |dd||
||| |j}|j	|dt
ddks3J |j	|dt
dd ksCJ d S )Nr   r!   r|   L1Trt   L2r   r   r   r$   r'   r   r*   r:   r   r=   rU   `   r   r%      r   )r   r
   r   r   solve_for_ild_shearr   r   	ild_shearr   r   r   )r   r!   r|   r   r   rl   r   rLrv   Zexpected_shearr   r   r   r   rY   rY   r[   test_solve_for_ild_shear  sZ   8<
$r   c               	   C   sr  t d} t d}t d}t ddd}t ddd}t|| | |}|jdd	d
}|j|| d	d
}|j}|||| ||||| |j|d|d|dd| d ksYJ t d} t d}td| |}|jdd	d
}|jdd	d
}	|jdd	d
}
|jddd
\}}|d||	|
|| |dd||	|
|| |j|dtdd ksJ |j|dtddksJ d S )Nr   r!   r|   r   Trt   r   r   r   r   r2   r*   rV   r'   r   r:   r   r$   rU   r   r   r%   $   _   )	r   r
   r   r   r   solve_for_ild_moment
ild_momentr   r   )r   r!   r|   r   r   rl   r   r   rv   r   r   r   r   rY   rY   r[   test_solve_for_ild_moment4  s.   . r   c                  C   s  t d} t d}t d}t ddd}t ddd}t ddd}t|| | | |}|jd	d
d}|j|| d
d}|j|| | d
d}	|||  |||||	 |j}
|j| |
d|d|d|dd| d ksrJ |j| |
d|d|d|dd	ksJ |j| |
d|d|d|dd	ksJ |j| |
d|d|d|dd| d ksJ |j|	 |
d|d|d|dd| d ksJ ||||||	 |j	|
d|d|d|dd| d ksJ |j	|
d|d|d|dd	ksJ |
|||||	 |j|
d|d|d|d| d ks?J |j|
d|d|d|d| ksXJ d S )Nr   r!   r|   r   Trt   r   L3r   r   r   r%   r*   r:   rV   r   r   r<      r?   r   F   r$   r'   r>   )r   r
   r   r   r   r   r   r   r   r   r   r   )r   r!   r|   r   r   r   rl   r   r   r2rv   rY   rY   r[   test_ild_with_rotation_hingeN  s0   :22::8066r   c                  C   s  t ddd} | jddd}| jddd}| jddd\}}| d}| d	|||| | j}| j| |dd
ks;J | j| |dtddksKJ | j| |dtdd ks\J | j| |dtdd ksmJ | j| |ddkszJ | j| |ddksJ | j| |dtdd ksJ | 	dd	|||| | j
|dtdd ksJ | dd	|||| | j|dtdd ksJ d S )Nr   r   r   r   r   r=   r   r2   r$   r9   rM         iW  rA   1   r   rV   i  r   r>   rU   )r
   r   r   r   r   r   r   r   Zild_deflection_jumpsr   r   r   r   )rl   r   Zr6r   Zm13Zw3rv   rY   rY   r[   test_ild_with_sliding_hingeh  s$   
 """"r   c               	   C   s8  t d\} }}}}t d\}}}}t| ||||}	t d\}
}|	j|dddd |	j|
dddd dg df| g dfg|	_dg df| g dfg|	_|	  |	 d	| ksYJ |	 d| t	 dgksgJ |	
 d| t	 | dgkswJ |	 dksJ |	 dd|
 t	 |t	d	  d	  gksJ t	|| | t	d
  d || t	d	  |  || |  | | d	|
   d| | |   || | d	  d| |   d	 |
   d
| | |  || |  | | d	|
   d| | |   || | d	  d| |    t	| | | d	  | d	 d
| | | d	  || |  | | d	|
   d| | |   || | d	  d| |   d  || |  |
 td
d	  d
| | |     d| | | |  }|	 \}}}||  krtdkswJ  J t|| dksJ td||||t	}|jddddd dg dfdg dfg|_|j|dddd |j|dddd ||| |j|d|diksJ |  | dddt	d
  d
| |  dt	d	  ||   dt	 ||   gksJ dt	d  d| |  dt	d
  ||   dt	d	  ||   dt	d	  ||   dt	 ||   }| \}}}||  kr7dks:J  J ||ksAJ td||||t	}|jddddd |jdt	 dddd |j|dddd |j|dddd |j|dddd |j|dddd ||||| |j|d|d|d|diksJ d S )Nzl, E, G, I, AzR1, R2, R3, R4zm, qr   r   dirzr   r   r   r'   r2   r%   rU   r=   r7   r   rO   rP   r   r9   ir   iw  i  }   r   i  r>   rM   iiit)r   r   rX   apply_moment_loadra   r`   solve_slope_deflectionpolar_momentr/   r   rh   Zaxial_stressr.   r   r,   r	   re   rf   r-   )rC   r   Gr!   r#   rc   rd   r   ZR4rl   mro   r   ZdxZdyZdzrp   rq   rY   rY   r[   test_Beam3D|  s    ,D(^ P> $r  c                  C   sD   t d\} }}}}}||g}t| ||||}| || ks J d S )Nzl, E, G, A, I1, I2)r   r   r  )rC   r   r  r#   ZI1r   r!   rl   rY   rY   r[   test_polar_moment_Beam3D  s   r  c               
   C   sV  t dddd\} }}t ddd\}}}t|| |}|jd |jd ||dd ||dd	 |d
dd ||| |j| |d  d ksNJ td| | |}|jd |jd ||dd ||dd	 |jd
dd|d ||| |j| |d  d ksJ td| | |}|j|dd|d |j	|d| d|d|di}|	t
didksJ |	t
didksJ td| | |}|j|dd
|d |j|tt
dd
 |tt
|d
  || tt
|d  ksJ td| | |}|j|dd|d |j	|d| d|d|di}|	t
didksJ |	t
didks)J d S )NzE, I, LT)ru   realzR, M, P)r	  rw   r   r9   r<   r$   r'   r2   rW   r:   r   r7   r   r*   r   r>   i(k )r   r
   r`   ri   ra   rX   re   rf   rg   Zxreplacer   r   )r   r!   rs   r   r   ry   ZbeamZloadingrY   rY   r[   test_parabolic_loads  sF   
r
  c               	   C   sZ  t d} t d}t d}td\}}td\}}}}}	}
t||| }|j| ks)J |jd ks0J tdd|_|jttdd	 ksBJ |jtddksLJ d
|
 d |_|jd
|
 d ks^J |jd kseJ tt	 tdd|_W d    n1 szw   Y  td|td|	}|jtd|	ksJ |jt|	 t
|	d  d	 ksJ |ddd |tdd |tdd |ddd |tt |jdttdd dttdd td  dttdd  dttdd d  ksJ | dttdd dttdd d  dttdd  dttdd d  ksJ dttdd
 dttdd
 td  dttdd  d	ttdd
 td  t| |	 t
|	d   }| |d	|  ks\J dttdd d dttdd d  dttdd
  d	ttdd d  t| |	 t
|	d   }| |t | d	|  ksJ td|td|df||fd|f}|jtd|df||fd|fksJ |j||d  d ksJ td|td|df|d
 |f}|jttddt|dt|d
 |ksJ |j||d  d ksJ ||d }|d!dd |d"dd |d#dd dg|_dg|_|jt||d  d tdkf||d  d td$kfksHJ |jd ksPJ |jd$ksXJ | td%d&|| |d   ksmJ | td'd(|| |d   d)|| |d    ksJ | td*d+|| |d   d,|| |d    ksJ d S )-Nr!   rC   r   zC3, C4za, c, g, h, r, nrw   r*   iq  r%   r'   r=   r   r2   r   r   r9   Z   -   r<   R   rM   r>   r:   r$   r   )   r   r   rU   r   r   r   iA   r   #   r   i   r   i  i  r7   iXi@
 )r   r   r
   r^   Zcross_sectionr   r   r   r   rj   r   rX   rc   rd   re   rg   r   r   r   r.   r-   r,   r   r   r   r   ra   r`   r   r]   r   )r!   rC   r   rR   rS   rv   rG   ghr   nZb0rm   ro   rp   rq   rl   rY   rY   r[   test_cross_section  s   
"*
(&6""& .>*>Br  c                  C   r   t d} tddddd}|jdddd	d
 |jd|  dddd
 dg dfdg dfg|_| g dks7J d S )Nr   r   r      d   r   r   r   r   r   rU   r   r   )rw   )r   r   )r   i,  )r   r   rX   r`   r   r   rl   rY   rY   r[   test_max_shear_force_Beam3D7     r  c                  C   r  )Nr   r   r   r  r  r   r   r   r   r   rU   r   r   )rw   )r   r   )r   i>  )r   r   rX   r`   r   r  rY   rY   r[   test_max_bending_moment_Beam3D?  r  r  c                  C   s   t d} tddddd}|jdddd	d
 |jd|  dddd
 dg dfdg dfg|_|  td}td}td}| dd|f||fgksLJ d S )Nr   r   r   r  r  r   r   r   r   r   rU   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/560rw   r:   )r   r   rX   r`   r  r   r   )r   rl   rG   rn   ro   rY   rY   r[   test_max_deflection_Beam3DG  s   "r  c                  C   s   t d} tddddd}|jddd	dd
 |jddd	dd
 |jddd	dd
 |  | | dtdks9J | | dtdksGJ | | dtdksUJ | | dtdkscJ | | dtdksqJ d S )Nr   r   r   r  r  r   r   r*   r<   r   r:   r   r2   z1/40rM   z17/280rU   z53/840r   z2/35z3/56)r   r   r  Zsolve_for_torsionZangular_deflectionr   r   r  rY   rY   r[   test_torsion_Beam3DS  s    r  N)EZsympy.core.functionr   Zsympy.core.numbersr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.sets.setsr   Zsympy.simplify.simplifyr	   Z&sympy.physics.continuum_mechanics.beamr
   Zsympy.functionsr   r   r   r   r   Zsympy.testing.pytestr   Zsympy.physics.unitsr   r   r   r   r   r   Zsympy.geometryr   r   r   r   Zsympy.core.sympifyr   r   r   rc   rd   rr   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  rY   rY   rY   r[   <module>   sX     n 7%#6N4+!6<A