U
    ZÊ¹jü!  ã                   @   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s�t‚t|  ¡ ƒttttthks®t‚t|  ¡ ƒtksÂt‚t|  ¡ ƒttthksÜt‚t|  ¡ ƒtksðt‚| jtksþt‚| 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/bwave/python/venv/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s’t‚t| jt ƒtdƒks¬t‚t|  ¡ ƒttttt
hksÊt‚t|  ¡ ƒtksÞt‚t|  ¡ ƒttthksøt‚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s–t‚t| jt ƒtdƒks°t‚t| j| ƒtddƒksÌt‚t}t| j| ƒtddƒksìt‚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�s„t‚t|  ¡ ƒtk�sšt‚| j!i k�sªt‚| jt"fk�s¼t‚| j	t#tt  t$j ffk�sÜt‚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 )zÂThis 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sympyr   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   þ"ü&

 ' 