o
    hak                     @   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=d9S ):    )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|_	|j
dgd	gd
ksrJ |j	ddg |j	}|g dksJ |jddg |j}|g dksJ |j
}|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sJ |	j}
dttdd dttdd  dttdd  dttdd  }|
|ksJ |	 }
dttdd dttdd  dttdd  dttdd  }|
|ks9J |	 }
dttdd dttdd  dttdd  dttdd  | }|
|ksfJ |	 }
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sJ t d }t d!}t d"}t d#}t d$}t d%}t d&}t d'}t d(}t|| |}|||d |||d ||fg|_||fg|_	|j}
|tt|d |tt|d  }|
|ksYJ | }
| tt|d d |tt|d  }|
|kswJ | }
| 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 d  | |  | | | |t||d d)  |t||d d  | |   }t|
t|ksJ | }
t| | | |t||d d)  |t||d d   | |  |tt|d* d |tt|d d  | |   | | | | |  || t||d d)  || t||d d  |t||d* d  |t||d d  | |   }t|
| dks|J td+| |d}|jddddd, |j	d td-}td.}|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sJ | }
ttddd dtt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  ttddd  ttdd*d  | |   }|
|ksQJ | }
dt ttddd/ ttddd0  ttdd*d  ttddd/  | |   }|
|| ksJ td| |d  jd1dddd2  j}
d1ttdd dttdd  }|
|ksJ   }
dttdd dttdd  }|
|ksJ   }
ttddttdd }|
|ksJ   }
d1ttdd d dttdd d  }|
|| |  | ksJ   }
d1ttdd d) dttdd d)  }|
|| |  |t  | ks0J tt fd3d4 tt d _W d    d S 1 sMw   Y  d S )5NEE_1II_1A      r      r   r$   )
deflectionsloper%         r   )r(   r+   r-   )r&   r+   r-      r   
   x   )r2   r   )r/   r      r'      r,     <   .  lw0w2a1cc1def   r.   	   )valuestartorderendC3C4      rI   c                      s    j dddddS )NrN   r   r1   r,   rO   )
apply_load b4rQ   e/var/www/vscode/kcb/lib/python3.10/site-packages/sympy/physics/continuum_mechanics/tests/test_beam.py<lambda>   s    ztest_Beam.<locals>.<lambda>) r   r
   lengthelastic_modulussecond_momentvariabler   r   bc_deflectionbc_slopeboundary_conditionsextendrP   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>   r?   r@   rA   rB   rC   b2b3rJ   rK   rQ   rR   rT   	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)	base_charr1   r   r'   r%   r,   rM   r5   r   r      )r   r
   rP   r_   r^   r`   r*   r   r   r)   rZ   )	rs   r   r!   Pa3a4ri   rn   ro   rQ   rQ   rT   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Fr;   Trt   rx   r   r1   r4   r'   r6   )
r   r   r
   rZ   r[   rP   r^   r_   r`   ra   )	r   r!   M1M2r~   r;   b5rn   ro   rQ   rQ   rT   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   r6      r'   i r%   r.   r1   r   r2   rO   iJir,   r$   rM   r4   ir8   i0  rE   )r   r   r   r   r   r
   r   r   rP   rZ   r`   ra   r   r)   subsr   )r   r!   r^   r_   kNgNri   rQ   rQ   rT   test_beam_units(  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'      r1   R, Mr   r4   rx   r2   r.   r$   ))r1   r$   rQ   )rQ   )r4   r   T(   iP   )r   r
   r   rP   r   rZ   r[   r`   r*   r   r   r)   r   r   r   r   )r   r!   ri   RMrQ   rQ   rT   test_variable_momentD  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   r1   r   r4   r   r%   rx   g      ^@g      T@ir;   Trt   zR1 M1 R2 R3 Phinger,   i0      rD   r.   ry   i  r2   r$   )rx   )r$   r   )r%   r   i  S     iX i  %   i i.   i )r   r
   joinrP   r[   rZ   rV   rX   r   r   r*   r   intr)   argsr   r`   ra   r   r   )r   r!   rm   rp   ri   r;   r^   r   r_   R3rz   rQ   rQ   rT   test_composite_beamd  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 d S )Nr   r!   r2   r7   r   r1   ir5   r'   r   r%   r,   )r   r
   rP   point_cflexurer   r   r!   ri   rQ   rQ   rT   test_point_cflexure  s   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$   r1   TFrN   r   r4   r,   rO   )rN   r   r4   N)r%   r'   r1   N)	r   r
   remove_loadrg   rP   rb   r   r   applied_loadsr   rQ   rQ   rT   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   
cantileverr   r1   zM_0, R_0r   r$   r2   r'   r   r,   r/   pinrollerr0   r3   r4   r7   r8   r9   r:   R_10R_30r5   r6   r   r   R_0M_0R_8   i   rz   Trt   rs   )typezR_0, R_L, M_0, M_L)r   r
   apply_supportrP   r   r`   r	   r*   r   r   r)   r   ra   )r   r!   ri   r   r   p0p1r   r   m0r   rz   rs   R_LM_LrQ   rQ   rT   test_apply_support  s   *.$

2
>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!   r,   r   r   r1   r4   r'   r%   rO   r6   r;   Trt   rz   r   r$   )	r   r
   r   rP   r`   max_shear_forcer   r	   r   )
r   r!   ri   r   r   r;   rz   r^   r_   	max_shearrQ   rQ   rT   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   r1   r'   r%   rO   r6   )r   r   r
   rP   r`   ra   max_bmoment)r   r!   r;   rz   ri   r^   r_   rQ   rQ   rT   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   rx   r   r'   r1   r6   r4   r,      )r   r
   rZ   r[   rP   max_deflection)r   r!   r;   r~   ri   rQ   rQ   rT   test_max_deflection3  s   0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'   r,   r%   rM   r5   r/   2   rG   rH   r   r1   ir   iw  i  }   r   i  r6   rE   iiit)r   r   rP   apply_moment_loadr[   rZ   solve_slope_deflectionpolar_momentrc   r   rd   axial_stressre   r   r)   r	   r`   ra   r*   )r;   r   Gr!   r#   r^   r_   r   R4ri   mro   expected_deflectiondxdydzrp   rq   rQ   rQ   rT   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   )r;   r   r   r#   I1I2r!   ri   rQ   rQ   rT   test_polar_moment_Beam3Dv  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   rx   r   r1   r4   r$   r'   r,   rO   r2   r   r/   r   r.   r   r6   i(k )r   r
   rZ   rf   r[   rP   r`   ra   rb   xreplacer   r   )r   r!   rs   r   r   rz   beamloadingrQ   rQ   rT   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!   r;   r   zC3, C4za, c, g, h, r, nrx   r.   iq  r%   r'   r5   r   r,   ir   r1   Z   -   r4   R   rE   r6   r2   r$   r   )      r   rM   r   $   r   iA   r   #   r   i   r   i  i  r/   iXi@
 )r   r   r
   rX   cross_sectionr   r   r   r   rg   r   rP   r^   r_   r`   rb   r   r   r   re   r*   r)   r   r   r   r   r[   rZ   r   rV   r   )r!   r;   r   rJ   rK   rv   r?   ghrnb0rm   ro   rp   rq   ri   rQ   rQ   rT   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   rM   r   r   )rx   )r   i`	  )r   i,  )r   r   rP   rZ   r   r   ri   rQ   rQ   rT   test_max_shear_force_Beam3D     r   c                  C   r   )Nr   r   r   r   r   r   r   r   r   r   rM   r   r   )rx   )r   r   )r   i>  )r   r   rP   rZ   r   r   rQ   rQ   rT   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   rM   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/560rx   r2   )r   r   rP   rZ   r   r   r   )r   ri   r?   rn   ro   rQ   rQ   rT   test_max_deflection_Beam3D  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.   r4   r   r2   r   r,   z1/40rE   z17/280rM   z53/840   z2/35z3/56)r   r   r   solve_for_torsionangular_deflectionr   r   r   rQ   rQ   rT   test_torsion_Beam3D  s    r   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^   r_   rr   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rQ   rQ   rQ   rT   <module>   sJ     _ 7#76<A