U
    «Ì0e)$  ã                   @   sò   d dl mZmZ d dlmZ d dlmZmZ d dl	m
Z
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 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ÚFunction)ÚEq)ÚSymbolÚsymbols)ÚexpÚlog)ÚcosÚsin)Ú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s²t‚d S )Núx,y,z,tÚFTXYZu)r   Úmapr   r   ÚDr   r   ÚAssertionError)ÚxÚyÚzÚtÚFÚTÚXÚYÚZÚuÚeqÚres© r$   ú@/tmp/pip-unpacked-wheel-_6tpq7m6/sympy/solvers/tests/test_pde.pyÚtest_pde_separate_add   s
    0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 )NÚ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sVt	‚tˆˆ ˆˆˆƒˆˆƒˆˆƒ|ˆƒgƒtˆˆƒˆƒˆˆƒ t|ˆƒˆƒ |ˆƒ tˆˆƒˆƒˆˆƒ  gksÆt	‚ttˆˆˆƒˆˆƒ| d tˆˆˆƒˆˆƒ ƒ}t|ˆˆˆƒˆˆƒ|ˆƒgƒ}|tˆˆƒˆˆƒˆˆƒ t|ˆƒˆˆƒ| d |ˆƒ  gksTt	‚td| t|||ˆƒ|ƒ t|||ˆƒ|dƒ d|d  t|||ˆƒ|dƒ  t|||ˆƒˆdƒ dƒ‰tˆ|||ˆƒ|ˆƒˆ||ƒgƒ}|t|ˆƒˆˆƒ|ˆƒ tˆ||ƒ||ƒ ˆ||ƒ tˆ||ƒ|ƒ|ˆ||ƒ   tˆ||ƒ||ƒ|d ˆ||ƒ   gks`t	‚t|d | ƒ‰tˆˆ||ƒ||ƒ||ƒgƒ}|t||ƒ||ƒ||ƒ | t||ƒ|ƒ ||ƒ |d t||ƒ||ƒ ||ƒ  | |d   gksöt	‚tˆˆ||ƒ||ƒ||ƒgƒ}||t||ƒ|ƒ ||ƒ |d t||ƒ||ƒ ||ƒ  | |d   t||ƒ||ƒ ||ƒ gks~t	‚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)   +   r*   z'test_pde_separate_mul.<locals>.<lambda>c                      s    t ˆˆ ˆˆˆƒˆˆƒˆˆƒgƒS r0   r1   r$   )r   r   r   r"   r   r   r   r$   r%   r)   -   r*   c                      s"   t ˆˆ ˆˆˆƒˆˆƒˆˆˆƒgƒS r0   r1   r$   )r   r   r   r"   r   r   r   r   r$   r%   r)   0   r*   é   é   )
r   r   r   r   r   r   r   r+   r   r   )	Úcr/   ÚRr   r    ÚrÚthetaZwaver#   r$   )	r   r   r   r"   r   r!   r   r   r   r%   Útest_pde_separate_mul   s`    < ÿ ÿ Jÿ
$Bÿ
.B.ÿÿÿ"ÿ"þÿFÿFÿr8   c                  C   sž   t dƒ\} }t dtd}t dtd\}}|| |ƒ}| | d¡| |d¡ }t|||| ƒ||ƒgƒ}|t|| ƒ| | ƒ|| ƒ t||ƒ||ƒ||ƒ gksšt‚d S )Nzx tÚf)ÚclszX Tr2   )r   r   Údiffr   r   r   )r   r   r9   r   r   r!   r"   r#   r$   r$   r%   Útest_issue_11726Q   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sZt‚qZ|||fD ]}t|ƒdks~t‚q~d S )Nr9   é   r2   ©Z%1st_linear_constant_coeff_homogeneous)Ú1st_linear_variable_coeff)	r   Úar   r   Úbr;   r4   r   r   )r9   Úeq1Úeq2Úeq3Úeq4Úeq5Úeq6r"   r$   r$   r%   Útest_pde_classify\   s    6262>:rH   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 sºt
‚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t
‚ˆ ||fD ]}t|t	|ƒƒd st
‚qt	ˆ ƒ}t|j|j dƒ‰tt‡ ‡fd
d„ƒ d S )Nr9   r   r=   r2   r   r3   Fé   é
   c                      s   t ˆ ˆddS )NF)Zsolve_for_func)r   r$   ©rE   Zsol4r$   r%   r)   |   s    z"test_checkpdesol.<locals>.<lambda>)r   r   r@   r   r   rA   r;   r4   r   r   r   r   r   r   ÚlhsÚrhsr   ÚNotImplementedError)	r9   r   rB   rC   rD   r"   rF   rG   Úsolr$   rK   r%   Útest_checkpdesolk   s$    626262<<þrP   c                  C   sþ   t tddddgƒ\} }}}| ttƒ| ttƒ t¡ | ttƒ t¡ }t|ƒt| ttƒ|tt ƒtt d td  ƒ ƒks~t‚t||dt| ttƒ|tt ƒtt d td  ƒ ƒks¼t‚t||dt| ttƒ|tt ƒtt d td  ƒ ƒksút‚d S )Nr9   r   ÚGÚHr2   )Zsolvefun)	r   r   r   r   r;   r   r   r   r   )r9   r   rQ   rR   rB   r$   r$   r%   Útest_solvefun€   s
    *:>rS   c               	   C   s  t tddgƒ\} }| ttƒ}d| | t¡ | t¡ }t|ƒdksHt‚t|ƒ}|t||tt ƒt	t t ƒ ƒksxt‚t
||ƒd sŠt‚dd| t¡ |  d| t¡ |  }t|ƒdksÂt‚t|ƒ}|t||dt dt  ƒt	tdƒ t d	 td
ƒt d	  ƒ ƒkst‚t
||ƒd s(t‚|d| t¡  d| t¡  }t|ƒdksZt‚t|ƒ}|t||dt dt  ƒt	dt tdƒ dt tdƒ  ƒ ƒksªt‚t
||ƒd s¾t‚t| t| t¡  t| t¡  }t|ƒ}t
||ƒd sþt‚d S )Nr9   r   r2   r>   r   é   r=   é   é   é   é   é   iúÿÿÿéU   )r   r   r   r   r;   r   r   r   r   r   r   r   r@   rA   r4   ©r9   r   r!   r"   rO   r$   r$   r%   Ú.test_pde_1st_linear_constant_coeff_homogeneousˆ   s(    
((J H$r\   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d ƒ ttdt  ƒd  tt ƒ ƒksªt‚t	|ƒd	ksºt‚t
||ƒd
 sÌt‚| t¡| | t¡|  d ttt ƒ|  }t|ƒ}|t| ttƒ|tt ƒtt d td  ƒ ttt ƒd  ƒksLt‚t	|ƒd	ks^t‚t
||ƒd
 srt‚d| | t¡  d| t¡  ttƒ }t|ƒ}|t| ttƒ|dt t ƒttd dt d  ƒ dttƒ d  ttƒd  ƒksþt‚t	|ƒd	kst‚t
||ƒd
 s$t‚|| t¡ | t¡ tt  }t|ƒ}| ¡ t| ttƒtt tt d d  tt d d  |tt ƒtt d td  ƒ  d ƒ ¡ ks¸t‚t	|ƒd	ksÊt‚t
||ƒd
 sÞt‚|| t¡ | t¡ ttƒ }t	|ƒd	kst‚d S )Nr9   r   éþÿÿÿrT   rI   r=   r2   é   )Ú1st_linear_constant_coeffÚ"1st_linear_constant_coeff_Integralr   r3   )r   r   r   r   r;   r   r   r   r   r   r   r
   r	   Úexpandr   r[   r$   r$   r%   Ú"test_pde_1st_linear_constant_coeff¢   s<    
4<ÿ
0H*Bÿ Lÿ rb   c               	   C   s
  t tddgƒ\} }| ttƒ}|| t¡ | t¡ td t  }t|dd}dddd	g}t| ¡ ƒ|kslt‚|d	 d
ks|t‚|d dksŒt‚|d  	¡ t
| ttƒtd  t td  dt t  dt  dt  |tt ƒtt d td  ƒ  d ƒ 	¡ kst‚d S )Nr9   r   r2   Úall©Úhintr_   r`   ÚdefaultÚorderr3   rT   rX   )r   r   r   r   r;   r   ÚsortedÚkeysr   ra   r   r   )r9   r   r!   r"   rO   ri   r$   r$   r%   Útest_pdsolve_allÈ   s    
$  ÿVÿrj   c               	   C   sh  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s†t‚t	||ƒd s˜t‚td | t| t¡  tt | t¡  }t|dd}|t||ttt ƒ ƒttd  d ƒ ƒkst‚t	||ƒd st‚ttd  | t| t¡  | t¡ }t|dd}|t||dt td  ƒttd	  d	 ƒ ƒks‚t‚t	||ƒd s–t‚ttƒd | t¡ t }t|dd}|t|ttdt ƒ d |tƒ ƒksèt‚t	||ƒd süt‚tdt ƒ| t¡ t|  | }t|dd}|t||tƒtt td  tdt ƒ d ƒ ƒksdt‚d S )
Nr9   r   r2   r?   rd   r3   r   r]   r=   )
r   r   r   r   r;   r   r   r   r   r   r[   r$   r$   r%   Útest_pdsolve_variable_coeffÖ   s*    
0.,4(6,"rk   N)*Zsympy.core.functionr   r   r   Zsympy.core.relationalr   Zsympy.core.symbolr   r   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.trigonometricr	   r
   Z
sympy.corer   Zsympy.solvers.pder   r   r   r   r   r   Zsympy.testing.pytestr   r@   rA   r4   r   r   r&   r,   r8   r<   rH   rP   rS   r\   rb   rj   rk   r$   r$   r$   r%   Ú<module>   s&    	2&