o
    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rt| ksJ  J t | A t | ksJ 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sJ 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rt| ksJ  J t | @ t | ksJ 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sJ t	t tt  t
t  } t | @ ttj	tj	ttjtj ttj
tj
 ksJ 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sJ t t	 t  krtt	ksJ  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sJ 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 sJ tt @ t	 dksJ tt @ t dksJ tt @ t
 dksJ tt @ t	t t
  tt
 ksJ | t @ t	 t	ksJ | t @ t	t t
  dt	 t t
 ksJ | 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sJ 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sJ t|j|j |j
 d|j ksJ tt	t t
 tt t  tjksJ 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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*    r:   [/var/www/vscode/kcb/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sJ t||A @  }|t|A @ |t|A @   }t|t|ksJ t| | A  }t| |A | t|A    }t|t|ksJ 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)	r4   r2   r-   r1   r3   r5   r.   r   r   )fgur9   lhsrhsr:   r:   r;   test_product_rulesv   sD   $



rB   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/   r1   r3   r5   r2   r-   r4   
grad_field
curl_fieldrC   r:   r:   r:   r;   test_conservative   s   $&*$rG   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 sJ d S )NTr   r    r   F)r   r   r/   r1   r3   r5   r2   r-   r4   rE   rF   r   qr	   rC   r:   r:   r:   r;   test_solenoidal   s   $&2$rJ   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sJ t d|d  | d| d|  | d|d  d| |  ksJ d S )Nr    r   rD   r      Dr"   r#   )e_re_thetae_phi)r)   vector_names)r   r   r4   r2   r-   r1   r3   r5   r   r6   r   base_scalarsbase_vectors)rL   r$   r%   r&   rM   rN   rO   r:   r:   r;   test_directional_derivative   s   ^R*"FrS   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   r4   r3   r   r:   r:   r:   r;   <lambda>   s    z'test_scalar_potential.<locals>.<lambda>)r   r   r/   r   r1   r4   r3   r2   r5   r-   rE   scalar_fieldrC   r   rI   r	   r   
ValueErrorr:   r:   r:   r;   test_scalar_potential   s   :>*rW   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sJ 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sJ d S )NP1r   r   r    P2r   rD      RPPPr   i  )r   origin
locate_newr1   r3   r5   r4   r2   r-   rC   r   r   r6   rU   rE   r	   rI   r   r   )point1point2genericpointCgenericpointPpotential_diff_Pr:   r:   r;    test_scalar_potential_difference   sB   """.


$
rd   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sJ t| j| j | j| j  | j| j  t| j| j t| j| j | j  t| j| jd   d dt| j| j   ksJ 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sJ td
|j d
|j  d
|j  t	j
ksJ t|j|j |j |j|j |j |j|j  |j|j |j  ksJ td|j d|j ksJ 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%   r1   r3   r&   r	   r5   r   r/   r   r   r   r-   )r!   r*   r:   r:   r;   .test_differential_operators_curvilinear_system   s6   6V,N&P<R
,&J
f.L$<&,8rf   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sJ 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sJ 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sJ 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sJ d S )	Nr8   bcr    re   rZ   r   r   )r   r   r4   r2   r1   r3   r   rI   r   r-   r	   r5   r   r   r
   r   r   )r8   rg   rh   r:   r:   r;   test_mixed_coordinates  sb   ,4T$,H88""

~@
&b
..,,,
,ri   N)?sympy.core.functionr   sympy.vector.vectorr   sympy.vector.coordsysrectr   sympy.simplifyr   sympy.core.symbolr   
sympy.corer   (sympy.functions.elementary.trigonometricr   r	   r
   sympy.vector.operatorsr   r   r   r   r   r   sympy.vector.deloperatorr   sympy.vector.functionsr   r   r   r   r   r   sympy.testing.pytestr   r   rR   r1   r3   r5   rQ   r4   r2   r-   r.   r8   rg   rh   rI   r<   rB   orient_new_axisrC   rU   rE   vector_fieldrF   rG   rJ   rS   rW   rd   rf   ri   r:   r:   r:   r;   <module>   s>      _3(!