o
    à8Vaa#  ã                   @   sÒ   d dl mZmZmZ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ZZZZdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Z dd„ Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dS )é    )	Ú
DerivativeÚEqÚexpÚsinÚFunctionÚSymbolÚsymbolsÚcosÚlog)ÚS)Úpde_separateÚpde_separate_addÚpde_separate_mulÚpdsolveÚclassify_pdeÚcheckpdesol)Úraisesz	a b c x yc                  C   s¶   t dƒ\} }}}ttdƒ\}}}}}}	tt|	| |ƒ| ƒt|	| |ƒ|ƒt|	| |ƒƒ ƒ}
t|
|	| |ƒ|| ƒ||ƒgƒ}|t|| ƒ| ƒt|| ƒ ƒ t||ƒ|ƒt||ƒƒ gksYJ ‚d S )Núx,y,z,tÚFTXYZu)r   Úmapr   r   ÚDr   r   )ÚxÚyÚzÚtÚFÚTÚXÚYÚZÚuÚeqÚres© r#   ú>/usr/lib/python3/dist-packages/sympy/solvers/tests/test_pde.pyÚtest_pde_separate_add   s
   0Br%   c                     sv   t dƒ\‰} }‰ttdƒ\}‰ ‰}}‰ttˆˆˆƒˆƒtˆˆˆƒˆƒtˆˆˆƒƒ ƒ‰tt‡ ‡‡‡‡‡fdd„ƒ d S )Nr   r   c                      s    t ˆˆˆˆƒˆˆƒˆ ˆƒgdƒS )NZdiv)r   r#   ©r   r   r!   r   r    r   r#   r$   Ú<lambda>   ó     z#test_pde_separate.<locals>.<lambda>)r   r   r   r   r   r   r   Ú
ValueError)r   r   r   r   r   r#   r&   r$   Útest_pde_separate   s   0 r*   c            	   
      s~  t dƒ\‰‰‰‰tddd} tdƒ}ttdƒ\‰ }}‰‰}‰t dƒ\}}‰ttˆ ˆˆˆƒˆƒtˆ ˆˆˆƒˆƒ tˆ ˆˆˆƒˆƒ dƒ‰tt‡ ‡‡‡‡‡‡fd	d
„ƒ tt‡ ‡‡‡‡‡‡fdd
„ƒ tt‡ ‡‡‡‡‡‡‡fdd
„ƒ tˆˆ ˆˆˆƒˆˆƒˆˆˆƒgƒtˆˆƒˆƒˆˆƒ tˆˆˆƒˆƒ ˆˆˆƒ tˆˆˆƒˆƒˆˆˆƒ  gksªJ ‚tˆˆ ˆˆˆƒˆˆƒˆˆƒ|ˆƒgƒtˆˆƒˆƒˆˆƒ t|ˆƒˆƒ |ˆƒ tˆˆƒˆƒˆˆƒ  gksáJ ‚ttˆˆˆƒˆˆƒ| d tˆˆˆƒˆˆƒ ƒ}t|ˆˆˆƒˆˆƒ|ˆƒgƒ}|tˆˆƒˆˆƒˆˆƒ t|ˆƒˆˆƒ| d |ˆƒ  gks(J ‚td| t|||ˆƒ|ƒ t|||ˆƒ|dƒ d|d  t|||ˆƒ|dƒ  t|||ˆƒˆdƒ dƒ‰tˆ|||ˆƒ|ˆƒˆ||ƒgƒ}|t|ˆƒˆˆƒ|ˆƒ tˆ||ƒ||ƒ ˆ||ƒ tˆ||ƒ|ƒ|ˆ||ƒ   tˆ||ƒ||ƒ|d ˆ||ƒ   gks®J ‚t|d | ƒ‰tˆˆ||ƒ||ƒ||ƒgƒ}|t||ƒ||ƒ||ƒ | t||ƒ|ƒ ||ƒ |d t||ƒ||ƒ ||ƒ  | |d   gksùJ ‚tˆˆ||ƒ||ƒ||ƒgƒ}||t||ƒ|ƒ ||ƒ |d t||ƒ||ƒ ||ƒ  | |d   t||ƒ||ƒ ||ƒ gks=J ‚d S )Nr   ÚCT)ÚrealÚPhiZFRTXYZuz	r,theta,zr   c                      s"   t ˆˆ ˆˆˆƒˆˆƒˆˆˆƒgƒS ©N©r   r#   )r   r   r!   r    r   r   r   r#   r$   r'   (   ó   " z'test_pde_separate_mul.<locals>.<lambda>c                      s    t ˆˆ ˆˆˆƒˆˆƒˆˆƒgƒS r.   r/   r#   )r   r   r   r!   r   r   r   r#   r$   r'   *   r(   c                      s"   t ˆˆ ˆˆˆƒˆˆƒˆˆˆƒgƒS r.   r/   r#   )r   r   r   r!   r   r   r   r   r#   r$   r'   -   r0   é   é   )	r   r   r   r   r   r   r   r)   r   )	Úcr-   ÚRr   r   ÚrZthetaZwaver"   r#   )	r   r   r   r!   r   r    r   r   r   r$   Útest_pde_separate_mul   s\   <ÿÿ Jÿ$Bÿ.B.ÿÿÿ"ÿ"þÿFÿFÿr6   c                  C   sž   t dƒ\} }t dtd}t dtd\}}|| |ƒ}| | d¡| |d¡ }t|||| ƒ||ƒgƒ}|t|| ƒ| | ƒ|| ƒ t||ƒ||ƒ||ƒ gksMJ ‚d S )Nzx tÚf)ÚclszX Tr1   )r   r   Údiffr   r   )r   r   r7   r   r   r    r!   r"   r#   r#   r$   Útest_issue_11726N   s   
<r:   c                  C   s”  t dƒ} t| ttƒ t| ttƒ t¡  t| ttƒ t¡  }d| ttƒ d| ttƒ t¡  | ttƒ t¡ }t| ttƒ t| ttƒ t¡  d| ttƒ t¡  }t| ttƒ | ttƒ t¡ d| ttƒ t¡  }td | ttƒ t| ttƒ t¡  tt | ttƒ t¡  }ttd  | ttƒ t| ttƒ t¡  | ttƒ t¡ }|||fD ]
}t|ƒdks·J ‚q­|||fD ]
}t|ƒdksÇJ ‚q½d S )Nr7   é   r1   ©Z%1st_linear_constant_coeff_homogeneous)Ú1st_linear_variable_coeff)r   Úar   r   Úbr9   r3   r   )r7   Úeq1Úeq2Úeq3Úeq4Úeq5Úeq6r!   r#   r#   r$   Útest_pde_classifyY   s   6262>:ÿrF   c            	   	      sd  t tddgƒ\} }t| ttƒ t| ttƒ t¡  t| ttƒ t¡  }d| ttƒ d| ttƒ t¡  | ttƒ t¡ }t| ttƒ t| ttƒ t¡  d| ttƒ t¡  }|||fD ]}t|t	|ƒƒd sjJ ‚q]t| ttƒ | ttƒ t¡ d| ttƒ t¡  ‰ d| ttƒ d| ttƒ t¡  d| ttƒ t¡  }| ttƒd| ttƒ t¡  d| ttƒ t¡  }tˆ t	|ƒt	|ƒgƒdtd |dt t ƒ t
t tdƒ dt tdƒ  ƒ fdtd |dt t ƒ t
t td	ƒ dt td	ƒ  ƒ fgksJ ‚ˆ ||fD ]}t|t	|ƒƒd sJ ‚q	t	ˆ ƒ}t|j|j dƒ‰tt‡ ‡fd
d„ƒ d S )Nr7   r   r;   r1   r   r2   Fé   é
   c                      s   t ˆ ˆddS )NF)Zsolve_for_func)r   r#   ©rC   Zsol4r#   r$   r'   y   s   z"test_checkpdesol.<locals>.<lambda>)r   r   r>   r   r   r?   r9   r3   r   r   r   r   r   ZlhsZrhsr   ÚNotImplementedError)	r7   r   r@   rA   rB   r!   rD   rE   Úsolr#   rI   r$   Útest_checkpdesolh   s$   626262<<þrL   c                  C   sú   t tg d¢ƒ\} }}}| ttƒ| ttƒ t¡ | ttƒ t¡ }t|ƒt| ttƒ|tt ƒtt d td  ƒ ƒks=J ‚t||dt| ttƒ|tt ƒtt d td  ƒ ƒks\J ‚t||dt| ttƒ|tt ƒtt d td  ƒ ƒks{J ‚d S )N)r7   r   ÚGÚHr1   )Zsolvefun)r   r   r   r   r9   r   r   r   )r7   r   rM   rN   r@   r#   r#   r$   Útest_solvefun}   s
   *:>BrO   c               	   C   sö  t tddgƒ\} }| ttƒ}d| | t¡ | t¡ }t|ƒdks$J ‚t|ƒ}|t||tt ƒtt t ƒ ƒks<J ‚t	||ƒd sEJ ‚dd| t¡ |  d| t¡ |  }t|ƒdksaJ ‚t|ƒ}|t||dt dt  ƒtt
dƒ t d	 t
d
ƒt d	  ƒ ƒks‰J ‚t	||ƒd s’J ‚|d| t¡  d| t¡  }t|ƒdksªJ ‚t|ƒ}|t||dt dt  ƒtdt t
dƒ dt t
dƒ  ƒ ƒksÑJ ‚t	||ƒd sÚJ ‚t| t| t¡  t| t¡  }t|ƒ}t	||ƒd sùJ ‚d S )Nr7   r   r1   r<   r   é   r;   é   é   é   é   é   iúÿÿÿéU   )r   r   r   r   r9   r   r   r   r   r   r   r>   r?   r3   ©r7   r   r    r!   rK   r#   r#   r$   Ú.test_pde_1st_linear_constant_coeff_homogeneous…   s(   
((H F$rX   c               
   C   s  t tddgƒ\} }| ttƒ}d| t¡ d| t¡  d|  ttdt  ƒ }t|ƒ}|t| ttƒ|dt dt  ƒtttdƒ dt  ƒtdƒ  tttdƒ t ƒ ƒksZJ ‚t	|ƒd	ksbJ ‚t
||ƒd
 skJ ‚| t¡| | t¡|  d ttt ƒ|  }t|ƒ}|t| ttƒ|tt ƒtt d td  ƒ ttt ƒtdƒ  ƒks¬J ‚t	|ƒd	ks´J ‚t
||ƒd
 s½J ‚d| | t¡  d| t¡  ttƒ }t|ƒ}|t| ttƒ|dt t ƒtttdƒ dt tdƒ  ƒ dttƒ tdƒ  ttƒtdƒ  ƒksJ ‚t	|ƒd	ksJ ‚t
||ƒd
 sJ ‚|| t¡ | t¡ tt  }t|ƒ}|t| ttƒt t t t |tt ƒtt tdƒ ttdƒ  ƒ  d ƒks]J ‚t	|ƒd	ksfJ ‚t
||ƒd
 spJ ‚|| t¡ | t¡ ttƒ }t	|ƒd	ks‰J ‚d S )Nr7   r   éþÿÿÿrP   rG   r;   r1   é   )Ú1st_linear_constant_coeffÚ"1st_linear_constant_coeff_Integralr   r2   )r   r   r   r   r9   r   r   r   r   r   r   r   r	   r
   rW   r#   r#   r$   Ú"test_pde_1st_linear_constant_coeffž   s<   
4F
ÿ0J*Rÿ >ÿ r]   c               
   C   s  t tddgƒ\} }| ttƒ}|| t¡ | t¡ td t  }t|dd}g d¢}t| ¡ ƒ|ks4J ‚|d dks<J ‚|d	 d
ksDJ ‚|d
 t| ttƒtd  t td  dt t  dt  dt  |tt ƒt	t t
dƒ tt
dƒ  ƒ  d ƒks€J ‚d S )Nr7   r   r1   Úall©Zhint)r[   r\   ÚdefaultÚorderra   r2   r`   r[   rP   rT   )r   r   r   r   r9   r   ÚsortedÚkeysr   r   r   )r7   r   r    r!   rK   rc   r#   r#   r$   Útest_pdsolve_allÄ   s   
$^ÿrd   c                  C   sd  t tddgƒ\} }| ttƒ}t| t¡ t| t¡  td |  td  }t|dd}|t||tt ƒttd d ƒ d ƒksCJ ‚t||ƒd sLJ ‚td | t| t¡  tt | t¡  }t|dd}|t||ttt ƒ ƒttd  d ƒ ƒksJ ‚t||ƒd sŠJ ‚ttd  | t| t¡  | t¡ }t|dd}|t||dt td  ƒttd	  d	 ƒ ƒks¾J ‚t||ƒd sÇJ ‚ttƒd | t¡ t }t|dd}|t|ttdt ƒ d |tƒ ƒksïJ ‚t||ƒd søJ ‚tdt ƒ| t¡ t|  | }t|dd}|t|ttd  dt  d|tƒ  tdt ƒ d ƒƒks0J ‚d S )
Nr7   r   r1   r=   r_   r2   r   rY   r;   )	r   r   r   r   r9   r   r   r   r   rW   r#   r#   r$   Útest_pdsolve_variable_coeffÑ   s*   
0.,2(4*"Fre   N)&Zsympyr   r   r   r   r   r   r   r   r	   r
   Z
sympy.corer   Zsympy.solvers.pder   r   r   r   r   r   Zsympy.testing.pytestr   r>   r?   r3   r   r   r%   r*   r6   r:   rF   rL   rO   rX   r]   rd   re   r#   r#   r#   r$   Ú<module>   s    ,  	2&