o
    GZh                     @   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J t tjttdksJ t dtd d  tj ttdks-J t td td  tj ttd tj td tj  ksKJ 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sJ t dtd d  tj tdtd  tj ksJ t td d tj tj tdtd tt td t	t   t	t tj ksJ t td tj ttttj ksJ d S )Nr            )
r   r   r   xyzr   r   r   r    r   r   ]/var/www/auris/lib/python3.10/site-packages/sympy/physics/vector/tests/test_fieldfunctions.py	test_curl   s   (<.L&20*r   c                  C   s  t tdttju sJ t tjttju sJ t td d tj tdtd  ks+J 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s]J 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sJ td tj td tj  td tj  } t | tdksJ t | t	 dksJ t td tj td tj  tdt
t ksJ d S )Nr   r   r      )r
   r   r   r   Zeror   r   r   r   simplifyr   r   )vr   r   r   test_divergence   s   (..2>*6r$   c                  C   s0  t d} tdttdksJ ttd ttjksJ 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sMJ tdtd d  tdtd  tj kscJ t| ttd  td  t|  ttd  td d  tj | ttd  td  tj  ksJ 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sJ tt	d td  t	t	d t	j t	d t	j  ksJ d S )Nar   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   sL  t ddu sJ t tjdu sJ t dtj dtj  dtj  du s&J t td td  tj td td  tj  td td  tj  du sMJ t td tj du sZJ t tdu sbJ t tdu sjJ t dtd  td  td  tj dtd d  td  tj  du sJ t td tj td tj  du sJ d S )Nr   Tr   r    r   r   F)r   r   r   r   r   
grad_field
curl_fieldr   r   r   r   r   test_conservativeB   s   *DB,r*   c                   C   sX  t ddu sJ t tjdu sJ t dtj dtj  dtj  du s&J t td td  tj td td  tj  td td  tj  du sMJ t td tj du sZJ t tdu sbJ t tdu sjJ t dtd  d tj du s{J t tttj t	ttj  ttt
j  du sJ t td t
j t
d tj  du sJ d S )	Nr   Tr   r    r   r   Fr   )r   r   r   r   r   r(   r)   r   r   r   r   r   r   r   r   test_solenoidalP   s   *D"6,r+   c                   C   sn  t dtdks	J t tjttd ksJ t tjttd ks!J t tjttd ks-J 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s_J t tttkshJ t td tj td tj  ttd td  tt	 td td  t
t	  ksJ t td tj td tj  ttd td  ksJ 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   s    z'test_scalar_potential.<locals>.<lambda>)r   r   r   r   r   r(   scalar_fieldr   r   r   r   r   
ValueErrorr   r   r   r   test_scalar_potential^   s"   , .6r/   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siJ tt
t| || t
ksuJ ttt| || t
ksJ ttt||| dksJ 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sJ dtd  td tt td tt   td tt td tt  d  }ttt| ||  |ksJ 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"   )originZpoint1Zpoint2ZgenericpointRZgenericpointPZpotential_diff_Pr   r   r    test_scalar_potential_differencel   sV   &&22
,*"r3   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+   r/   r3   r   r   r   r   <module>   s(    $ 
>
