U
    L?h                     @   sB  d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZ d dlmZ edZedZed	d
eejgZdd Zdd Zdd Zded  d  ed  ed  ZeeeZed d ej  ded   ej!  ded  ed  ej  Z"ee"eZ#dd Z$dd Z%dd Z&dd Z'dS )    )S)Symbol)cossin)ReferenceFrameVectorPointdynamicsymbols)
divergencegradientcurlis_conservativeis_solenoidalscalar_potentialscalar_potential_difference)raisesRqPZAxisc                   C   s  t tdttdkstt tjttdks2tt dtd d  tj ttdksZtt td td  tj ttd tj td tj  kstt td td  td  tjtj tj  ttd  td  td td   tj td td  td td   tj  td  td  td td   tj  ksBtt dtd d  tj tdtd  tj ksvtt td d tj tj tdtd tt	 td t
t	   t
t	 tj kstt td tj ttt	tj kstd S )Nr            )r   r   r   AssertionErrorxyzr   r   r   r    r   r   `/var/www/html/venv/lib/python3.8/site-packages/sympy/physics/vector/tests/test_fieldfunctions.py	test_curl   s    (<.L&
40
r   c                  C   s  t tdttjkstt tjttjks.tt td d tj tdtd  ksVtt td td  td  tjtj tj  ttd td  td td   td td   kstt dtd td  td   tjtj tj  tdtd td  td d   dtd td d  td    dtd d td  td    ksTtt	d t	j t	d t	j  t	d t	j  } t | t	dkstt | t
 dkstt t	d tj td t	j  tdtt kstd S )Nr   r   r      )r
   r   r   r   Zeror   r   r   r   r   simplifyr   r   )vr   r   r   test_divergence   s    (..2>
*r%   c                  C   s4  t d} tdttdkstttd ttjks6tttd td  td  ttd td  tj td td  tj  td td  tj  ksttdtd d  tdtd  tj kstt| ttd  td  t|  ttd  td d  tj | t	td  td  tj  ks,ttt
d t
d  ttd  tt td t	t  t	t td t	t td tt  tt  tj td  tt td t	t  tt td t	t td tt  t	t  tj  ksttt
d td  t
t
d t
j t
d t
j  ks0td S )Nar   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r&   r   r   r   test_gradient-   s     @,@
VV
r'   r   r   r!      c                   C   sP  t ddkstt tjdks"tt dtj dtj  dtj  dksLtt td td  tj td td  tj  td td  tj  dkstt td tj dkstt tdkstt tdkstt dtd  td  td  tj dtd d  td  tj  dks"tt td tj td tj  dksLtd S )Nr   Tr   r!   r   r   F)	r   r   r   r   r   r   
grad_field
curl_fieldr   r   r   r   r   test_conservativeB   s    *DB
r+   c                   C   s\  t ddkstt tjdks"tt dtj dtj  dtj  dksLtt td td  tj td td  tj  td td  tj  dkstt td tj dkstt tdkstt tdkstt dtd  d tj dkstt tt	tj t
t	tj  tt	tj  dks.tt td tj td tj  dksXtd S )	Nr   Tr   r!   r   r   Fr   )r   r   r   r   r   r   r)   r*   r   r   r   r   r   r   r   r   test_solenoidalP   s    *D"8r,   c                   C   sr  t dtdkstt tjttd ks*tt tjttd ksBtt tjttd ksZtt td td  tj td td  tj  td td  tj  ttd td  td  kstt tttkstt td tj td tj  ttd td  t	t
 td td  tt
  ks(tt td tj td tj  ttd td  ks`tttdd  d S )Nr   r   r   c                   S   s   t td tj tS )Nr   )r   r   r   r   r   r   r   <lambda>i       z'test_scalar_potential.<locals>.<lambda>)r   r   r   r   r   r   r)   scalar_fieldr   r   r   r   r   
ValueErrorr   r   r   r   test_scalar_potential^   s"    , .
8r1   c                  C   s   t d} | ddtj dtj  dtj  }| ddtj dtj  d	tj  }| d
td tj td tj  td tj  }| dtd tj td tj  td tj  }ttj	t||| dkst
ttt| || tkst
ttt| || tkst
ttt||| dkst
ttd td  tj td td  tj  td td  tj  t||| td td  td  d	 kst
dtd  td tt td tt   td tt td tt  d  }ttt| ||  |kst
d S )NOZP1r   r   r!   ZP2r   r(      ZRPr   ZPPi  )r   Z	locatenewr   r   r   r   r   r   r   r"   r   r/   r)   r   r   r   r#   )originZpoint1Zpoint2ZgenericpointRZgenericpointPZpotential_diff_Pr   r   r    test_scalar_potential_differencel   s\    &&22  


,  
*"r5   N)(Zsympy.core.singletonr   Zsympy.core.symbolr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.physics.vectorr   r   r   r	   Z#sympy.physics.vector.fieldfunctionsr
   r   r   r   r   r   r   Zsympy.testing.pytestr   r   r   Z	orientnewr   r   r   r%   r'   r/   r)   r   r   Zvector_fieldr*   r+   r,   r1   r5   r   r   r   r   <module>   s&   $ 
>
