U
    ZÊ¹jŠ
  ã                   @   st   d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZ d dlmZmZ dd„ Zdd„ Zd	d
„ Zdd„ ZdS )é    )Úraises)Úsymbols)Ú	RigidBodyÚParticleÚReferenceFrameÚPointÚouterÚdynamicsymbolsÚForceÚTorque)ÚgravityÚ_parse_loadc                  C   sò   t dƒ} tdƒ}t|| jƒ}|j|ks*t‚|j| jks:t‚| ¡ dksJt‚t|t	ƒsXt‚|d |ksht‚|d | jkszt‚||| jfksŒt‚|| j|fksžt‚||| j| j
 fks¶t‚|tdƒ| jfksÌt‚td|ƒ}t|| jƒ}||ksît‚d S )NÚNÚPozForce(point=Po, force=N.x)r   é   ÚCoÚP)r   r   r
   ÚxÚpointÚAssertionErrorÚforceÚ__repr__Ú
isinstanceÚtupleÚyr   )r   r   Úf1r   Úf2© r   úg/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/physics/mechanics/tests/test_loads.pyÚtest_force_default	   s     
r   c                  C   sì   t dƒ} t| | jƒ}|j| ks"t‚|j| jks2t‚| ¡ dksBt‚t|tƒsPt‚|d | ks`t‚|d | jksrt‚|| | jfks„t‚|| j| fks–t‚|| | j| j	 fks®t‚|t dƒ| jfksÄt‚t
d| d�}t|| jƒ}||ksèt‚d S )Nr   zTorque(frame=N, torque=N.x)r   r   ÚAr   )Úframe)r   r   r   r!   r   Ztorquer   r   r   r   r   )r   r   Úrbr   r   r   r   Útest_torque_default   s    r#   c                  C   s  t dƒ} tdƒ\}}}tdƒ\}}tdƒ}td||ƒ}t dƒ}tdƒ}	t|j|jƒ}
td|	|||
|	fƒ}||f|	|fg}| t	|| j
 ||ƒ¡ ||f|	|f||| | j
 f|	|| | j
 fg}tt|ƒƒD ]6}tt|| ƒƒD ] }|| | || | ksàt‚qàqÌd S )	Nr   zm M gzF1 F2ÚpoÚpar    r   ÚB)r   r   r	   r   r   r   r   r   Úextendr   r   ÚrangeÚlenr   )r   ÚmÚMÚgZF1ZF2r$   r%   r    r   ÚIr&   Z	forceListÚlÚiÚjr   r   r   Útest_gravity2   s    0r1   c                     s   t dƒ‰ tdƒ‰ttˆˆ jƒƒˆˆ jfks.t‚ttˆ ˆ jƒƒˆ ˆ jfksLt‚tˆˆ jfƒ} t| tƒsht‚| tˆˆ jƒks|t‚tˆ ˆ j	fƒ}t|tƒs˜t‚|tˆ ˆ j	ƒks¬t‚t
t‡ ‡fdd„ƒ t
t‡ ‡fdd„ƒ t
t‡ ‡fdd„ƒ t
t‡ ‡fdd„ƒ d S )Nr   r$   c                      s   t tdˆƒˆ jfƒS ©Nr%   )r   r   r   r   ©r   r$   r   r   Ú<lambda>Q   ó    z"test_parse_loads.<locals>.<lambda>c                      s   t tdˆˆ ƒˆ jfƒS r2   )r   r   r   r   r3   r   r   r4   R   r5   c                      s   t ˆˆ jˆˆ jfƒS ©N©r   r   r   r3   r   r   r4   T   r5   c                      s   t ˆˆ jgƒS r6   r7   r   r3   r   r   r4   V   r5   )r   r   r   r
   Úzr   r   r   r   r   r   Ú
ValueErrorÚ	TypeError)r   Út1r   r3   r   Útest_parse_loadsE   s    r<   N)Zpytestr   Zsympyr   Zsympy.physics.mechanicsr   r   r   r   r   r	   r
   r   Zsympy.physics.mechanics.loadsr   r   r   r#   r1   r<   r   r   r   r   Ú<module>   s   (