o
    GZh7  ć                   @   s  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d d	lmZmZ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mZ d dl m!Z! edZ"e" #” \Z$Z%Z&e" '” \Z(Z)Z*e Z+e	d\Z,Z-Z.Z/dd Z0dd Z1e" 2de/e"j&”Z3de(d  e) e* Z4ee4Z5e)d e$ de( e%  de) e* e&  Z6ee6Z7dd Z8dd Z9dd Z:dd Z;dd  Z<d!d" Z=d#d$ Z>d%S )&é    )Ś
Derivative)ŚVector)Ś
CoordSys3D)Śsimplify)Śsymbols)ŚS)ŚcosŚsin)ŚDot)ŚcurlŚ
divergenceŚgradientŚGradientŚ
DivergenceŚCross)ŚDel)Śis_conservativeŚis_solenoidalŚscalar_potentialŚdirectional_derivativeŚ	laplacianŚscalar_potential_difference)ŚraisesŚCza b c qc                  C   sT
  t tjA tjks
J t tjA  ” tj  krttjks!J  J t  tj”t tjA ks.J t tA  ” tjks9J t jdtd  t ddtjksKJ t  dtd  t ”t dtd  t A ksbJ t	t t
 tt t  } t | A  ” t	 t t	t
  t t	t tt
  t  t	 t
 tt
  t    krt| ks J  J t | A t  | ”ks«J t  dt	d  t ”tdtjtdtj	d  tj
 tj tdtj	 tdtj
 tj  tdtj tdtj	d  tj	 tj  ksńJ t jdt	d  t dddt	 t   krtdt	d  t ksJ  J t tj@ tj  u r,ttjks/J  J t tj@  ” tju s<J t  tj”t tj@ ksJJ t t@  ” tju sVJ t t	d t @  ” dt	   krstt	d t ksvJ  J t j| ddt	t tt
  t
t	    krt| ksJ  J t | @ t  | ”ks£J t jdt	t t
  tt t  dddt	t t
d   dt	td  t
   dt	d t t
   ks×J t	t tt  t
t  } t | @ ttj	tj	ttjtj ttj
tj
 ks’J t j| ddd  krt| ksJ  J t | @ t  | ”ks"J tt | @  ” dks/J t jdddtj  krDtdksGJ  J t  d”t dksSJ t tj ” tjks`J t t	ttj	tj	tj ttj	tjtj  ttj	tj
tj  ksJ t t	 ” t  krtt	ksJ  J t t	t t
 ttj	tj tj
 tj	tj ttj	tj tj
 tjtj  ttj	tj tj
 tj
tj  ksÖJ t jt	t t
 ddtt
 t t
t	 t  t	t t    krtt	t t
 ksJ  J t t	t t
 t  t	t t
 ”ksJ t dt	d   ” dt	 t ks,J t ttt t	  ” t tt t	d  t ttt t	 t  ksRJ tjt @ ttju s_J tjt @ t ” tju snJ | t @ tj ” tjks}J | t @ tj ” tju sJ tt @ t	 ” dksJ tt @ t ” dks¦J tt @ t
 ” dks³J tt @ t	t t
  ” tt
 ksĘJ | t @ t	 ” t	ksÓJ | t @ t	t t
  ” dt	 t t
 ksźJ | t @ t	t t
 tj	tj tj
 ks J | t @ t	t t
  ” t	t t
 ksJ | t @ |  ” | ks"J tt @ |  ” tks/J tt @ |  ” tks<J tt @ |  ” tksIJ | t @ tj ” tjksXJ tt	t t
 tju sfJ tt	d tdkssJ tt	d td  t
d  dtd  t
d  dt	d  t
d   dt	d  td   ks¢J td	d
g d¢d}tddg d¢d}t|j|j |j d|j t|j|jd t|j   ksÖJ t|j|j |j
 d|j kséJ tt	t t
 tt t  tjksżJ tt	td  t
 tt t  dt	 t
 t dt	 t
 t  dt	 t
 t  ks(J d S )Né   T©Śdoitr   é   é   é’’’’é   ŚAŚ	spherical©ŚrŚthetaŚphi©ZtransformationŚvariable_namesŚBŚcylindrical©r$   r%   Śz)Śdelopr   Śzeror   r   ŚcrossŚiŚyŚjŚxr,   Śkr   r   r   ŚZeror   Śdotr   r   Śar	   r   r   r   r$   r%   r&   )Śvr!   r)   © r9   śV/var/www/auris/lib/python3.10/site-packages/sympy/vector/tests/test_field_functions.pyŚtest_del_operator   sŠ   ’$.
>’ž&’(ž’,’.@,’$:
’’’.’’’,’ž
’"
’ž(&,
’&.,*:
’D&(.’r;   c                  C   s  dt  t t } t t tt  tt   }t d t dt  td t t  }dt t t t t  }t| | dd}| t| |t|    ” }t|t|ksRJ t||@  ” }|t|A A |t|A A  |t@ | |t@ |  ” }t|t|ks~J t| | @  ” }| t|@  |t| @   ” }t|t|ksJ t||A @  ” }|t|A @ |t|A @   ” }t|t|ks¾J t| | A  ” }t| |A | t|A    ” }t|t|ksŽJ t||A A  ” }|t|@  |t|@   |t@ | |t@ |  ” }t|t|ksJ dS )z 
    Tests the six product rules defined with respect to the Del
    operator

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Del

    r   r   Tr   N)	r3   r1   r,   r0   r2   r4   r-   r   r   )ŚfŚgŚur8   ŚlhsŚrhsr9   r9   r:   Śtest_product_rulesv   sD   $
’
’’
’
’’rA   ŚPr   r    é   c                   C   s  t tjdu s	J t tdu sJ t dt dt  dt  du s#J t tt t tt t  tt t  du s;J t tt du sEJ t t	du sMJ t t
du sUJ t dt t t t dtd  t t  du soJ t ttj tjt  du sJ d S )NTr   r    r   F)r   r   r.   r0   r2   r4   r1   r,   r3   Ś
grad_fieldŚ
curl_fieldrB   r9   r9   r9   r:   Śtest_conservative°   s   $&’*’$rF   c                   C   s  t tjdu s	J t tdu sJ t dt dt  dt  du s#J t tt t tt t  tt t  du s;J t tt du sEJ t t	du sMJ t t
du sUJ t dt d t du scJ t ttt ttt  tttj  du s|J t ttj tjt  du sJ d S )NTr   r    r   Féž’’’)r   r   r.   r0   r2   r4   r1   r,   r3   rD   rE   r   Śqr	   rB   r9   r9   r9   r:   Śtest_solenoidal¾   s   $&’2$rI   c                  C   sv  t tjtj tj dtj dtj  tj tjtj dtj tj  dtj tj  ks/J t dtjd  tj dtj dtj  tj dtjd  dtj tj  ksXJ t dtjd  tj dtj tj	u smJ t
ddg d¢g d	¢d
} |  ” \}}}|  ” \}}}t |d | |d| | ksJ t d|d  | d| d|  | d|d  d| |  ks¹J d S )Nr    r   rC   r   é   ŚDr"   r#   )Śe_rŚe_thetaŚe_phi)r(   Zvector_names)r   r   r3   r1   r,   r0   r2   r4   r   r5   r   Śbase_scalarsŚbase_vectors)rK   r$   r%   r&   rL   rM   rN   r9   r9   r:   Śtest_directional_derivativeĢ   s   ^R*’"FrQ   c                   C   s  t tjtdks
J t tttksJ t tttksJ t ttt	ks%J t tt	 t tt	 t  tt t  ttt t	 ksBJ t t
ttksKJ t t	tj tjt  ttt	 tt tt	 tt  ksjJ t t	tj tjt  ttjtj	 ksJ ttdd  d S )Nr   c                   S   s   t tt tS )N)r   r3   r2   r   r9   r9   r9   r:   Ś<lambda>ā   s    z'test_scalar_potential.<locals>.<lambda>)r   r   r.   r   r0   r3   r2   r1   r4   r,   rD   Śscalar_fieldrB   r   rH   r	   r   Ś
ValueErrorr9   r9   r9   r:   Śtest_scalar_potentialŁ   s   :>*rU   c                  C   s  t j ddt dt  dt  ”} t j ddt dt  dt  ”}t j d	tt tt  tt  ”}t	j d
t	jt	j t	jt	j  t	jt	j  ”}t
tjt | |dksVJ t
tt t j|tksbJ t
tt t j|tksnJ t
tt | |dksyJ t
tt t tt t  tt t  t | |tt t d ksJ dt	j t	jtt t	jtt   t	jtt t	jtt  d  }t
tt	t	j| ” | ” ksĶJ d S )NZP1r   r   r    ZP2r   rC   é   ZRPZPPr   i“  )r   ŚoriginZ
locate_newr0   r2   r4   r3   r1   r,   rB   r   r   r5   rS   rD   r	   rH   r   r   )Zpoint1Zpoint2ZgenericpointCZgenericpointPZpotential_diff_Pr9   r9   r:   Ś test_scalar_potential_differenceå   sB   """.
’ž
’ž
’žż$’
’žrX   c                  C   s   t ddg d¢d} t ddg d¢d}td| j d	| j  d| j d	| j | j  ks-J td| j | j d	| j  d| j | j d	| j | j  dt| j | j  ksXJ td
| j d
| j  d
| j  t	j
ksnJ t| j| j | j | j| j | j | j| j  | jt| j | j  ksJ t| j| j | j| j  | j| j  t| j| j t| j| j | j  t| j| jd   d dt| j| j   ksŌJ td| j | j | j | j| j  | j| j | j | j  t| j| j t| j| j | j  t| j| jd   d| j  | jt| j  ks J tt	j
d
ks*J td
| j d
| j  d
| j  d
ks@J t| j| j | j| j  | j| j  t| j| j t| j| j  | j | j | j | j  | j| j | j  ks}J t| j| j | j| j  t| j| j t| j| j  | j | j | j | j  d| j  ks°J td
|j d
|j  d
|j  t	j
ksĒJ t|j|j |j |j|j |j |j|j  |j|j |j  ksķJ td|j d|j ksüJ td|j d|j |j ksJ td	|j d	|j ksJ t|j|j |j|j  |j|j  dd|j  ks;J t|j|j |j|j  dksNJ t|j|j |j|j  d|j ksdJ td|j d|j |j  d	|j  t	j
ks~J d S )Nr!   r"   r#   r'   r)   r*   r+   r    r   r   r   r   é	   )r   r   r$   r%   r0   r2   r&   r	   r4   r   r.   r   r   r   r,   )r!   r)   r9   r9   r:   Ś.test_differential_operators_curvilinear_systemż   s6   6V,N&P’<R
’,&J
’f.L$<&,8rZ   c                  C   s  t d} t d}t d}t| j|j |j| j | j|j  ks"J tdtt | j |j | j| jtt|j    | jd|j tt  | j | j|j tt | j  d| j tt | j |j  ksjJ t| j|j t| j|j ks|J tt| j|j tt| j|j ksJ tdtt | j |j | j	 | j |j|j	  t| j| j |j	  d| j | j	 |j tt |j	t
| j| j   | j d| j | j	 |j tt |j	t
| j| j   | j  d| j | j |j tt | j  d| j | j | j	 tt |j  |j	|j  |jt| j| j  |j  ks,J t| j| j | j| j  | j	| j  |j|j  |j|j  |j	|j  |j|j  |j|j  |j	|j  tdkskJ td| j | j | j	 |j|j |j	  d| j | j	 | j  d| j	 |jt|j|j  ksJ tdtt | j |j |j |j d| j |j tt t|j|j d| j |j tt  d|j |j tt t|j| j  ksēJ t| j|j |j t| j| j | j|j  | j|j |j tt| j| j | j|j  |j|j tt| j| j | j|j | j  | j|j tt| j| j | j|j |j  | j|j tt| j| j | j|j |j  ks_J t| j|j |j | j| j |j|j   d| j |j |j | jd |j t| j|j  | jd |j t| j|j  |jd |j t|j| j  | j|jd  t|j|j  ksĄJ d S )	Nr7   ŚbŚcr    rY   rV   r   r   )r   r   r3   r1   r0   r2   r   rH   r   r,   r	   r4   r   r   r
   r   r   )r7   r[   r\   r9   r9   r:   Śtest_mixed_coordinates  sb   ,4T’$,H88’"’"ž
žž
’~@
’&b
’..,’,ž,ż
’,’žżü’r]   N)?Zsympy.core.functionr   Zsympy.vector.vectorr   Zsympy.vector.coordsysrectr   Zsympy.simplifyr   Zsympy.core.symbolr   Z
sympy.corer   Z(sympy.functions.elementary.trigonometricr   r	   r
   Zsympy.vector.operatorsr   r   r   r   r   r   Zsympy.vector.deloperatorr   Zsympy.vector.functionsr   r   r   r   r   r   Zsympy.testing.pytestr   r   rP   r0   r2   r4   rO   r3   r1   r,   r-   r7   r[   r\   rH   r;   rA   Zorient_new_axisrB   rS   rD   Zvector_fieldrE   rF   rI   rQ   rU   rX   rZ   r]   r9   r9   r9   r:   Ś<module>   s>      _3(!