o
    g!                     @   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g d	g d
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      )r   r   r   r   r   )r   r   r   r   r   NAAxisOPPaPE   )r   r   )r      c               
   C   s0  t ttttttttd} | j	t
ttgksJ | jt
ttgks"J | jt
tttttgks0J | jdgks8J t}t| j| tddksHJ t|  ttttthksWJ t|  tksaJ t|  ttthksnJ t|  tksxJ | jtksJ | jtfksJ | jttt tj ffksJ 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speedsuvlamr   r   r   setdynamic_symbolstypetupleconstant_symbolslgmr   r   r   r   )
symsystem1inter r5   `/var/www/visachat/venv/lib/python3.10/site-packages/sympy/physics/mechanics/tests/test_system.pytest_form_1C   s$   "r7   c               
   C   st  t ttttttttd} | jt	t
ttgksJ | jt	ttgks#J | jt	t
ttttgks1J | jdgks9J t}t| j| tddksIJ t| jt tdksVJ t|  ttttt
hkseJ t|  tksoJ t|  ttthks|J t|  tksJ t}|   t| j| tddksJ | jtksJ | jtfksJ | jttt t j
 ffksJ 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/   r0   r1   r2   r!   compute_explicit_formr   r   r   r   )
symsystem2r4   r5   r5   r6   test_form_2]   s,   "r=   c                  C   s  t ttttttttt	d	} | j
tttgksJ | jtttgks#J | jttttttgks1J | jdgks9J t}t}t| j| tddksKJ t| jt tdksXJ t| j| tddksfJ t}t| j| tddksvJ t| jt tdksJ t}|   t| j| tddksJ t|  ttttthksJ t|  tksJ t|  ttthksJ t|  tksJ | j i ksJ | jt!fksJ | j	t"tt t#j ffksJ d S )N)r8   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   r9   r:   r!   r;   r+   r,   r-   r.   r/   r0   r1   r2   r   r   r   r   )
symsystem3inter1inter2r4   r5   r5   r6   test_form_3}   s:   "rE   c               
   C   sJ  t ttttttttd} t	t
 d| _W d    n1 sw   Y  t	t
 d| _W d    n1 s5w   Y  t	t
 d| _W d    n1 sLw   Y  t	t
 d| _W d    n1 scw   Y  t	t
 d| _W d    n1 szw   Y  t	t
 d| _W d    n1 sw   Y  t	t
 d| _W d    n1 sw   Y  t	t
 d| _W d    n1 sw   Y  t	t
 d| _W d    n1 sw   Y  t	t
 d| _W d    n1 sw   Y  t	t
 d| _W d    n	1 sw   Y  t	t
 d| _W d    d S 1 sw   Y  d S )Nr   *   )r   r    r!   r"   r#   r   r   r   r   r   AttributeErrorr$   r?   r9   r@   r:   rA   r'   r   )	symsystemr5   r5   r6   test_property_attributes   sR   











$rI   c                  C   s  t tt} tt | j W d   n1 sw   Y  tt | j W d   n1 s.w   Y  tt | j W d   n1 sEw   Y  tt | j W d   n1 s\w   Y  tt | j	 W d   n1 ssw   Y  tt | 
  W d   n1 sw   Y  t ttttd}tt |j W d   n1 sw   Y  tt |j W d   n1 sw   Y  tt |j	 W d   n1 sw   Y  tt | j W d   n1 sw   Y  tt | j W d   n	1 sw   Y  tt | j W d   n	1 sw   Y  tt | j W d   n	1 s7w   Y  tt |j W d   dS 1 sPw   Y  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.N)r'   r8   )r   r    r!   r   rG   r:   r9   r@   r?   rA   r;   r$   r'   r   r   )r3   r<   r5   r5   r6   test_not_specified_errors   s\   















$rJ   N)7sympyr   r   r   r   sympy.simplify.simplifyr   sympy.physics.mechanicsr   r   r	   r
   r   sympy.testing.pytestr   r%   r&   r(   r)   r*   r2   r0   r1   r@   r?   r:   r9   rA   LUsolver!   thetar   	orientnewzr   r   	locatenewr   r   r   r   r   r#   r   r"   r$   r'   r    r   r   r7   r=   rE   rI   rJ   r5   r5   r5   r6   <module>   sT    "&

 ' 