a
     ¬<b)$  ã                   @   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²J ‚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#   úl/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/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sVJ ‚tˆˆ ˆˆˆƒˆˆƒˆˆƒ|ˆƒgƒtˆˆƒˆƒˆˆƒ t|ˆƒˆƒ |ˆƒ tˆˆƒˆƒˆˆƒ  gksÆJ ‚ttˆˆˆƒˆˆƒ| d tˆˆˆƒˆˆƒ ƒ}t|ˆˆˆƒˆˆƒ|ˆƒgƒ}|tˆˆƒˆˆƒˆˆƒ t|ˆƒˆˆƒ| d |ˆƒ  gksTJ ‚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(   +   r)   z'test_pde_separate_mul.<locals>.<lambda>c                      s    t ˆˆ ˆˆˆƒˆˆƒˆˆƒgƒS r/   r0   r#   )r   r   r   r!   r   r   r   r#   r$   r(   -   r)   c                      s"   t ˆˆ ˆˆˆƒˆˆƒˆˆˆƒgƒS r/   r0   r#   )r   r   r   r!   r   r   r   r   r#   r$   r(   0   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ÿr7   c                  C   sž   t dƒ\} }t dtd}t dtd\}}|| |ƒ}| | d¡| |d¡ }t|||| ƒ||ƒgƒ}|t|| ƒ| | ƒ|| ƒ t||ƒ||ƒ||ƒ gksšJ ‚d S )Nzx tÚf)ÚclszX Tr1   )r   r   Údiffr   r   )r   r   r8   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sZJ ‚qZ|||fD ]}t|ƒdks~J ‚q~d S )Nr8   é   r1   ©Z%1st_linear_constant_coeff_homogeneous)Ú1st_linear_variable_coeff)r   Úar   r   Úbr:   r3   r   )r8   Úeq1Úeq2Úeq3Úeq4Úeq5Úeq6r!   r#   r#   r$   Útest_pde_classify\   s    6262>:rG   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ºJ ‚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 )Nr8   r   r<   r1   r   r2   Fé   é
   c                      s   t ˆ ˆddS )NF)Zsolve_for_func)r   r#   ©rD   Zsol4r#   r$   r(   |   s    z"test_checkpdesol.<locals>.<lambda>)r   r   r?   r   r   r@   r:   r3   r   r   r   r   r   ÚlhsÚrhsr   ÚNotImplementedError)	r8   r   rA   rB   rC   r!   rE   rF   Úsolr#   rJ   r$   Útest_checkpdesolk   s$    626262<<þrO   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szJ ‚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)r8   r   ÚGÚHr1   )Zsolvefun)r   r   r   r   r:   r   r   r   )r8   r   rP   rQ   rA   r#   r#   r$   Útest_solvefun€   s
    *:>rR   c               	   C   s  t tddgƒ\} }| ttƒ}d| | t¡ | t¡ }t|ƒdksHJ ‚t|ƒ}|t||tt ƒtt t ƒ ƒksxJ ‚t	||ƒd sŠJ ‚dd| t¡ |  d| t¡ |  }t|ƒdksÂJ ‚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sZJ ‚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 )Nr8   r   r1   r=   r   é   r<   é   é   é   é   é   iúÿÿÿéU   )r   r   r   r   r:   r   r   r   r   r   r   r?   r@   r3   ©r8   r   r    r!   rN   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ªJ ‚t|ƒd	ksºJ ‚t	||ƒd
 sÌJ ‚| t¡| | t¡|  d ttt ƒ|  }t|ƒ}|t| ttƒ|tt ƒtt d td  ƒ ttt ƒd  ƒksLJ ‚t|ƒd	ks^J ‚t	||ƒd
 srJ ‚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þJ ‚t|ƒd	ksJ ‚t	||ƒd
 s$J ‚|| 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¸J ‚t|ƒd	ksÊJ ‚t	||ƒd
 sÞJ ‚|| t¡ | t¡ ttƒ }t|ƒd	ksJ ‚d S )Nr8   r   éþÿÿÿrS   rH   r<   r1   é   )Ú1st_linear_constant_coeffÚ"1st_linear_constant_coeff_Integralr   r2   )r   r   r   r   r:   r   r   r   r   r   r
   r	   Úexpandr   rZ   r#   r#   r$   Ú"test_pde_1st_linear_constant_coeff¢   s<    
4<ÿ
0H*Bÿ Lÿ ra   c               	   C   s  t tddgƒ\} }| ttƒ}|| t¡ | t¡ td t  }t|dd}g d¢}t| ¡ ƒ|kshJ ‚|d dksxJ ‚|d	 d
ksˆJ ‚|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J ‚d S )Nr8   r   r1   Úall©Úhint)r^   r_   ÚdefaultÚorderrf   r2   re   r^   rS   rW   )r   r   r   r   r:   r   ÚsortedÚkeysr`   r   r   )r8   r   r    r!   rN   rh   r#   r#   r$   Útest_pdsolve_allÈ   s    
$Vÿri   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†J ‚t||ƒd s˜J ‚td | t| t¡  tt | t¡  }t|dd}|t||ttt ƒ ƒttd  d ƒ ƒksJ ‚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t td  tdt ƒ d ƒ ƒksdJ ‚d S )
Nr8   r   r1   r>   rc   r2   r   r\   r<   )	r   r   r   r   r:   r   r   r   r   rZ   r#   r#   r$   Útest_pdsolve_variable_coeffÖ   s*    
0.,4(6,"rj   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?   r@   r3   r   r   r%   r+   r7   r;   rG   rO   rR   r[   ra   ri   rj   r#   r#   r#   r$   Ú<module>   s&    	2&