U
    9%e	"                     @   s:  d dl 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 ed\ZZZZZed\ZZZedd e e gd de e gd d ed e ggZed d ed ed  ee  gZedd d d d gd dd d d gd d dd e e gd d d de e gd d d d ed e ggZeeed d ed ed  ee  gZeeegZeeZeee Zed	Ze d
deej!gZ"e
dZ#e#$dee"j Z%e	de%eZ&e&gZ'e%ee ej fgZ(edZ)e)ee ee  iZ*dgZ+dgZ,eeefZ-eefZ.eeeeefZ/dZ0dZ1dd Z2dd Z3dd Z4dd Z5dd Z6dS )    )symbolsMatrixatanzeros)simplify)dynamicsymbolsParticlePointReferenceFrameSymbolicSystem)raiseszx y u v lambdazm l g      NAZAxisOPPaPE   )r   r   )r      c               
   C   s4  t ttttttttd} | j	t
ttgks.t| jt
ttgksDt| jt
tttttgks`t| jdgksptt}t| j| tddkstt|  ttttthkstt|  tkstt|  ttthkstt|  tkst| jtkst| jtfkst| jttt t j ffks0td S )Nalg_conoutput_eqns
coord_idxs
speed_idxsbodiesloadsr      r   )!r   statescomb_explicit_rhsalg_con_fullout_eqnsr   r   r   r   coordinatesr   xyAssertionErrorspeedsuvlamr   r   r   setdynamic_symbolstypetupleconstant_symbolslgmr   r   r   r   )
symsystem1inter r5   h/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/physics/mechanics/tests/test_system.pytest_form_1C   s*       r7   c               
   C   s~  t ttttttttd} | jt	t
ttgks0t| jt	ttgksFt| jt	t
ttttgksbt| jdgksrtt}t| j| tddkstt| jt tdkstt|  ttttt
hkstt|  tkstt|  ttthkstt|  tkstt}|   t| j| tddks8t| jtksHt| jtfksZt| jt tt t!j
 ffksztd S )N)r'   mass_matrixr   r   r   r   r   r   r   )"r   r#   comb_implicit_rhsr'   comb_implicit_matr!   r"   r   r   r   r$   r%   r*   r&   r(   r)   r   r   r   r   r+   r,   r-   r.   r/   r0   r1   r2   r    compute_explicit_formr   r   r   r   )
symsystem2r4   r5   r5   r6   test_form_2]   s0      r=   c                  C   s  t ttttttttt	d	} | j
tttgks0t| jtttgksFt| jttttttgksbt| jdgksrtt}t}t| j| tddkstt| jt tdkstt| j| tddkstt}t| j| tddkstt| jt tdkstt}|   t| j| tddks2tt|  ttttthksRtt|  tkshtt|  ttt hkstt|  tkst| j!i kst| jt"fkst| j	t#tt  t$j ffkstd S )N)r8   Zcoordinate_derivativesr   r   r   r   r   r   r   r   r   r   )%r   r   dyn_implicit_rhsdyn_implicit_matkin_explicit_rhsr   r   r   r   r   r#   r   r$   r%   r&   r'   r(   r)   r*   r   r   r9   r:   r    r;   r+   r,   r-   r.   r/   r0   r1   r2   r   r   r   r   )Z
symsystem3Zinter1Zinter2r4   r5   r5   r6   test_form_3}   s>       rA   c               
   C   sT  t ttttttttd} t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X t	t
 d| _W 5 Q R X d S )Nr   *   )r   r   r    r!   r"   r   r   r   r   r   AttributeErrorr#   r>   r9   r?   r:   r@   r'   r   )Z	symsystemr5   r5   r6   test_property_attributes   s@       











rD   c               	   C   s  t tt} tt | j W 5 Q R X tt | j W 5 Q R X tt | j W 5 Q R X tt | j W 5 Q R X tt | j	 W 5 Q R X tt | 
  W 5 Q R X t ttttd}tt |j W 5 Q R X tt |j W 5 Q R X tt |j	 W 5 Q R X tt | j W 5 Q R X tt | j W 5 Q R X tt | j W 5 Q R X tt | j W 5 Q R X tt |j W 5 Q R X dS )zThis test will cover errors that arise from trying to access attributes
    that were not specified upon object creation or were specified on creation
    and the user tries to recalculate them.)r'   r8   N)r   r   r    r   rC   r:   r9   r?   r>   r@   r;   r#   r'   r   r   )r3   r<   r5   r5   r6   test_not_specified_errors   s@    














rE   N)7Zsympy.core.backendr   r   r   r   Zsympy.simplify.simplifyr   Zsympy.physics.mechanicsr   r   r	   r
   r   Zsympy.testing.pytestr   r$   r%   r(   r)   r*   r2   r0   r1   r?   r>   r:   r9   r@   ZLUsolver    thetar   Z	orientnewzr   r   Z	locatenewr   r   r   r   r   r"   r   r!   r#   r'   r   r   r   r7   r=   rA   rD   rE   r5   r5   r5   r6   <module>   sR   "&

 ' 