a
    ëÝEbƒµ  ã                   @   s  d dl Zd dlmZmZmZ d dlm  mZ	 d dl
Z
d dl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„ Zdd„ Zd	d
„ Ze
j dg g fdgdgfddgddgfg d¢g d¢fg d¢g d¢fg d¢g d¢fg¡dd„ ƒZdd„ Zedgƒ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(ed-gd.d/d0�d1d2„ ƒZ)ed3gd.d4d0�d5d6„ ƒZ*d7d8„ Z+d9d:„ Z,e
jjd;ej-ej.gd<d=gd>�d?d@„ ƒZ/dAdB„ Z0dCdD„ Z1dEdF„ Z2dGdH„ Z3dIdJ„ Z4dKdL„ Z5dMdN„ Z6dOdP„ Z7dQdR„ Z8dSdT„ Z9dS )Ué    N)Úassert_array_equalÚassert_array_almost_equalÚassert_array_less)ÚPath)Úimage_comparisonc            	      C   sP  d} d}t  t  dd| ¡t  dd|¡¡\}}| ¡ }| ¡ }| | }d| d  |d  }d|  | d|   d|  d }t ||¡}t|j|ƒ t|j|ƒ t	|j
ƒ|ks®J ‚t  |j
¡dksÂJ ‚t  |j
¡|d ksÚJ ‚t	|jƒ|ksìJ ‚t  |j¡dk�sJ ‚t  |j¡|d k�sJ ‚|j}d |_t|j|ƒ tt  |j
¡t  |¡ƒ d S )	Né   é   ç        ç      ð?é   é   é   r   )ÚnpÚmeshgridÚlinspaceÚravelÚmtriÚTriangulationr   ÚxÚyÚlenÚ	trianglesÚminÚmaxÚedgesÚ	neighborsÚ
_neighborsr   ÚuniqueÚarange)	ÚnxÚnyr   r   ÚnpointsZ
ntrianglesZnedgesÚtriangr   © r#   úc/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/matplotlib/tests/test_triangulation.pyÚtest_delaunay   s*    $ r%   c                  C   sx   d} d}d}t j d¡ t j | ¡}t j | ¡}|| ||< || ||< t ||¡}tt  |j¡t  t  	| ¡|¡ƒ d S )Né
   é   r   é   )
r   ÚrandomÚseedr   r   r   r   r   Údeleter   )r!   Z	duplicateZduplicate_ofr   r   r"   r#   r#   r$   Útest_delaunay_duplicate_points9   s    ÿr,   c                  C   sz   t  ddd¡} t  ddd¡}t t¡� t | |¡ W d   ƒ n1 sH0    Y  t  | d¡} t  |d¡}t | |¡ d S )Nr	   ç      $@é   ç       @g       @)r   r   ÚpytestÚraisesÚRuntimeErrorr   r   Úappend©r   r   r#   r#   r$   Útest_delaunay_points_in_lineM   s    *r5   zx, yr   r   r   é   )r   r   r   )r   r6   r   )r   r   r   )r   r6   r6   )r   r   r   r   r   r   )r   r   r   r6   r   r6   c                 C   s:   t  t¡� t | |¡ W d   ƒ n1 s,0    Y  d S ©N)r0   r1   Ú
ValueErrorr   r   r4   r#   r#   r$   Ú!test_delaunay_insufficient_points[   s    r9   c               
      sä   t  ddgddgddgddgddgd	d
gddgg¡} t  ddgddgddgddgddgddgddgg¡}dd„ ‰ ‡ fdd„}t | d d …df | d d …df ¡}|D ]}|||ƒdks¤J ‚q¤t | dd …df | dd …df ¡}d S )Ng¨LXèz¶ë?g     à¿gCM‹«?è?g~9B.ÜÈä?g     à¿gè/7ÑRá?gÞÇÒ9ûé?g     Ú¿gH¾ÇÜC„æ?g     Ú¿g³´¼tã?g     Ú¿g�Âõ(\�â?gq=
×£pÝ¿gÍÌÌÌÌÌä?gáz®GáÚ¿çffffffæ?g¸…ëQ¸Þ¿g)\�Âõ(Ü¿ç      è?çš™™™™™é?c                 S   s   t  | |f¡j}t|ƒ |¡S r7   )r   ZvstackÚTr   Zcontains_point)ZxtriZytriÚxyÚ
tri_pointsr#   r#   r$   Útri_contains_point‚   s    z0test_delaunay_robust.<locals>.tri_contains_pointc                    s   t ‡‡ ‡fdd„ˆ jD ƒƒS )Nc                 3   s&   | ]}ˆ ˆj | ˆj| ˆƒV  qd S r7   r4   )Ú.0Útri)r@   r"   r>   r#   r$   Ú	<genexpr>Š   s   ÿzCtest_delaunay_robust.<locals>.tris_contain_point.<locals>.<genexpr>)Úsumr   ©r"   r>   ©r@   rE   r$   Útris_contain_point‰   s    ÿz0test_delaunay_robust.<locals>.tris_contain_pointr   r   )r   ÚarrayÚasarrayr   r   )r?   Ztest_pointsrG   r"   Z
test_pointr#   rF   r$   Útest_delaunay_robustk   s0    ùù$rJ   ztripcolor1.pngc                  C   sø   t  g d¢¡} t  g d¢¡}t  g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g
¡}t | ||¡}| d|  }| |j jdd�}||j jdd�}d| | }t d¡ tj||dd� t 	d¡ t d¡ tj||dd� t 	d¡ d S )N)
r   ç      à?r   r   rK   r   r   rK   r   r;   )
r   r   r   rK   rK   rK   r   r   r   r;   ©r   r   r   )r   r   r   ©r   r   r   )r   r   r   )r   r   r6   )r   r'   r6   )r   r   é	   )r'   r   rN   )é   r'   rN   )r   rO   rN   rK   r   ©Zaxiséy   Úk)Ú
edgecolorszpoint colorséz   )Ú
facecolorsrS   rU   )
r   rI   r   r   r   ÚmeanÚpltZsubplotZ	tripcolorÚtitle)r   r   r   r"   ZCpointsZxmidZymidZCfacesr#   r#   r$   Útest_tripcolor˜   s&    ü


rY   c                  C   sh   t jg d¢g d¢gt jd�} t  g d¢¡}|  ¡ }t |d d …df |d d …df | ¡j t|| ƒ d S )N©r   r   r   )r   r   r   ©Zdtype))r   r   )r   gš™™™™™ñ?)r   r   )r   r   r   r   )r   rH   Úint32Úcopyr   r   r   r   )r   ZpointsZold_trianglesr#   r#   r$   Útest_no_modify´   s
    (r^   c            
      C   s�  t  t  d¡t  d¡¡\} }|  ¡ } | ¡ }g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t  t|ƒ¡}d|dd…< t | |||¡}| ¡ }g d¢}g d¢}t  ||¡\}}| ¡ }| ¡ }|||ƒ}t	|g d¢ƒ ||d |d ƒ}t	|g d¢ƒ g d¢}g d¢}|||ƒ}t	|g d¢ƒ ddg}ddg}|||ƒ}t	|d d!gƒ d}	g d"¢} d#d d d d |	dg}g d$¢g d%¢g d&¢g d¢g d'¢g d(¢g d)¢g d*¢g}t | ||¡}| ¡ }g d+¢}d,d-g}t  ||¡\}}|||ƒ}t	|g d.¢g d/¢gƒ d}	d#|	 d d d d dg} g d0¢}g d1¢g d2¢g d3¢g d4¢g d5¢g d6¢g d7¢g d*¢g}t | ||¡}| ¡ }d,d-g}g d+¢}t  ||¡\}}|||ƒ}t	|d#d#gd d8gd d8gd d9gdd9gdd:gd#d#ggƒ g d;¢} g d<¢}g d1¢g d=¢g}t | ||¡}| ¡ }g d>¢}g d?¢}|||ƒ}t	|g d@¢ƒ | 
dd g¡ || ¡ k�stJ ‚|||ƒ}t	|g dA¢ƒ d S )BNr   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r6   r   ©r   r   r6   ©r   r'   r6   ©r   r   rO   ©r   rN   rO   ©r   r6   rN   ©r6   r&   rN   ©r6   r'   r&   ©r'   r.   r&   ©rO   rN   é   ©rN   é   rl   ©rN   r&   rn   ©r&   é   rn   ©r&   r.   rq   ©r.   é   rq   r   rO   r&   )ç      Ð?ç      ô?ç      @ç      
@)r   r   r   éÿÿÿÿr6   ry   r&   ry   rl   rq   é   ry   ry   ry   ry   ry   rK   )ry   ry   ry   ry   ry   r   r   r   ry   r'   ry   r.   ry   rn   rt   é   )rK   ç      ø?ç      @rK   r|   r}   r|   r|   r	   r
   r/   ç      @)r	   r	   r	   r~   r~   r~   r
   r/   r|   r|   r|   r|   )r   r   r   rn   rt   r{   r   rq   r6   r'   r&   r.   r	   r~   r   r{   ©r|   r   r   r   r   r|   r|   ry   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r6   ©r   r6   r   )çš™™™™™¹¿çš™™™™™Ù?çÍÌÌÌÌÌì?gffffffö?gffffffþ?g333333@g333333@r‡   çš™™™™™¹?)ry   r   r   r   r   r   ry   )ry   r6   r6   r6   r'   r'   ry   )r|   r|   r   r   r   r   r|   ©r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r6   r   )r   r6   r   r   r6   r'   ©r   r   r   r   ©r   r   r   r   ©r   r   r   )gš™™™™™É¿çš™™™™™É?r<   g333333ó?)rK   rK   rK   rK   )ry   r   r   ry   )ry   ry   r   ry   )r   r   r   r   Úzerosr   r   r   Úget_trifinderr   Úset_mask)
r   r   r   Úmaskr"   Ú	trifinderÚxsÚysÚtrisÚdeltar#   r#   r$   Útest_trifinder¾   s�    ý


	ÿ

ÿ
ÿ
(ÿ

r™   c                     sœ  t  t  d¡t  d¡¡\} }|  ¡ } | ¡ }d|  d|  }g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t  t|ƒ¡}d|dd…< t | |||¡}t ||¡}t 	||¡}tj	||dd�}t  
ddd¡}	g d¢}
t  |	|
¡\}	}
|||fD ]&}||	|
ƒ}t|d|	 d|
  ƒ �q.g d¢}	|	}
t  |	|
¡\}	}
|||fD ](}||	|
ƒ}t|jd gd gd ƒ �q|t  
dd!d¡}	g d"¢}
t  |	|
¡\}	}
|||fD ]T}||	|
ƒ}t |d|	 d|
  ¡ |	dk|	d#k |
dk |
d#k }t|j|ƒ �qÖd$\‰ ‰‰‡ ‡‡fd%d&„}‡ ‡‡fd'd(„}t  g d)¢¡} t  g d*¢¡}t  g d+¢g d,¢g d-¢g d.¢g d/¢g d0¢g d1¢g d2¢g¡}t | ||¡}|| |ƒ}|| |ƒ}t  
d3d4d5¡}	t  
d3d4d5¡}
t  |	|
¡\}	}
tj	||d6|d7�}||	|
ƒ}t|||	|
ƒƒ | | |¡\}}|| |ƒ\}}t||ƒ t||ƒ d8}t  t  
d3d4|d ¡t  
d3d4|d ¡¡\} }|  ¡ } | ¡ }|| |ƒ}tj| |t|d ƒd9�}t  t  
d:d;d5¡t  
d:d;d5¡¡\}	}
|	 ¡ }	|
 ¡ }
t ||¡}t 	||¡}tj	||dd�}||	|
ƒ}t  ||	|
ƒ| ¡}||fD ]Z}t  ||	|
ƒ| ¡}t  |¡dt  |¡ k�srJ ‚t  ||¡d<t  ||¡ k�s<J ‚�q<d S )=Nr   ç®Gáz®ó?ç)\�Âõ(@r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rm   ro   rp   rr   rs   r   rO   r&   Úgeom©Úkindru   ç      @r6   )ru   r;   rw   rŸ   )g      Ð¿rv   ç      ü?rx   Tr    )ru   r;   rv   r    r   )rš   g)\�Âõ(Àç333333ã?c                    s,   ˆ | d d  ˆ|d d   ˆ|  |  S )NrK   r   r#   r4   ©ÚaÚbÚcr#   r$   ÚquadT  s    ztest_triinterp.<locals>.quadc                    s0   dˆ  | d  ˆ|  dˆ |d  ˆ|   fS )Nr   rK   r#   r4   r¢   r#   r$   Úgradient_quadW  s    z%test_triinterp.<locals>.gradient_quad)r�   ç&jjÙZÕ?çœÄ °rhå?r	   r
   r
   r	   )ç333333Ó?çHPüs×é?çX9´Èv¾Û?r	   r	   r
   r
   r‹   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r6   r   r   ©r6   r   r   ©r6   r   r   r	   r
   r   Úuser©rž   Údzr.   ©r   rŠ   r‰   éd   )r   r   r   r   r�   r   r   r   ÚLinearTriInterpolatorÚCubicTriInterpolatorr   r   r   r“   ÚmatestrH   ÚgradientÚmeshgrid_trianglesÚabsr   Údot)r   r   Úzr   r“   r"   Úlinear_interpÚcubic_min_EÚ
cubic_geomr•   r–   ÚinterpÚzsr¦   r§   r¶   Z
cubic_userZ	interp_zsZinterp_dzsdxZinterp_dzsdyZdzsdxZdzsdyÚnZdiff_linZ
diff_cubicr#   r¢   r$   Útest_triinterp%  s˜    ý


 
ÿ




,
$

ÿrÇ   c                  C   sÀ  ddd„} d\}}d\}}d\}}t  |||ddddg¡}t  |||ddddg¡}t  g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g¡}	t |||	¡}
tdƒD �]}t jdt jd�}t jdt jd�}t jdt jd�}t jddgt jd�}|d }d|||d f< |dk�rd||< n.|dk�r0d||d < n|dk�rFd||d < tj|
|d||fd�}| |||f|d d …df ƒ | |||f|d d …df ƒ | |||f|d d …df ƒ | ||| d || d fƒ | ||| d || d fƒ | ||| d || d fƒ | ||| | d || | d fƒ | |d| | | d d| | | d fƒ | ||d|  | d |d|  | d fƒ | ||| d|  d || d|  d fƒ q¢d S )Nc              	   S   s  d}d}d}|\}}||t  t  ddt j |¡¡  }||t  t  ddt j |¡¡  }	| |g|gƒd }
|  |g|g¡\}}|dur¸t|
|d ƒ t|d |d ƒ t|d |d ƒ | ||	ƒ|
 }|  ||	¡\}}|| }|| }t||| ƒ t||| ƒ t||| ƒ dS )	aJ  
        Checks the continuity of interpolator (and its derivatives) near
        location loc. Can check the value at loc itself if *values* is
        provided.

        *interpolator* TriInterpolator
        *loc* location to test (x0, y0)
        *values* (optional) array [z0, dzx0, dzy0] to check the value at *loc*
        é   ç»½×Ùß|Û=g      Y@r	   r   r   Nr   )r   Úcosr   ÚpiÚsinr¼   r   r   )ÚinterpolatorÚlocÚvaluesZn_starÚepsilonrR   Zloc_xZloc_yZstar_xZstar_yrÀ   ÚdzxÚdzyZdiff_zZtab_dzxZtab_dzyZdiff_dzxZdiff_dzyr#   r#   r$   Úcheck_continuity“  s&    
""z;test_triinterpcubic_C1_continuity.<locals>.check_continuity)r�   rª   )r¨   r«   )r©   r¬   r	   r
   r‹   r­   r®   r¯   r°   r±   r²   r³   rN   r'   r[   r   r   r   r   r´   rµ   rK   r~   ç      @g      @)N)r   rH   r   r   Úranger�   Úfloat64rº   )rÓ   ÚaxÚayÚbxZbyZcxÚcyr   r   r   r"   ZidofrÀ   rÑ   rÒ   rÏ   ÚcaserÄ   r#   r#   r$   Ú!test_triinterpcubic_C1_continuity„  sH    
ÿ




ÿ&..rÜ   c                  C   sd  dd„ } d\}}t jj| ||ƒŽ }| ¡  | ¡ }t|| ƒD ]T}tj|| tjd�}d||< t jj	||t || ¡dd�\}}t
t ||¡|ƒ q>d\}	}
| ||ƒ\}}}}|d	||	k  d	||
k  }|d	||	k  d	||
k  }t ||	|	d	 |
|
d	 gg¡}t ||	d	 |	|
d	 |
gg¡}t |g d
¢g¡}t j ||||| d || d f¡}| ¡  | ¡ }t|| d ƒD ]^}tj|| d tjd�}d||< t jj	||t || d ¡dd�\}}t
t ||¡|ƒ �qztjdtjd�}tjg d¢tjd�}tjg d¢tjd�}d}t j ||||¡}| ¡  | ¡ }t
|tjg d¢g d¢g d¢gtjd�ƒ d S )Nc                 S   s�  ||  }t  t j|t jd�t j|d t jd�t jd|t jd�t j||  t jd�t j| |t jd�g¡}t  t j|t jd�t jd|t jd�t j|d t jd�t j| |t jd�t j||  t jd�g¡}t  dt j|t jd� t j|d t jd� t j|d t jd� t j||  t jd� t j||  t jd� g¡}d||d| d … |d d|…< d|d| d d| d … |d d|…< |||| | | | ffS )zè
        Return the sparse, (n*m, n*m) matrix in coo format resulting from the
        discretisation of the 2-dimensional Poisson equation according to a
        finite difference numerical scheme on a uniform (n, m) grid.
        r[   r   r   r	   r   Nr   )r   Úconcatenater   r\   ÚonesrÖ   )rÆ   ÚmÚlÚrowsÚcolsÚvalsr#   r#   r$   Úpoisson_sparse_matrixÞ  s&    ""ý""ý((ý"*z<test_triinterpcubic_cg_solver.<locals>.poisson_sparse_matrix)rl   r   r[   r
   rÉ   )ÚAr¤   Úx0Útol)rl   é1   r   )r
   r
   r
   r
   r   r{   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )r
   r/   r	   )r/   r
   ç      @)r	   ré   r
   )r   ÚtriinterpolateZ_Sparse_Matrix_cooZcompress_cscZto_denserÕ   r   r�   rÖ   Z_cgr   r¿   rÝ   rÞ   rH   r\   )rä   rÆ   rß   ÚmatZ	mat_denseZitestr¤   r   Ú_Zi_zeroZj_zerorã   rá   râ   Údimr#   r#   r$   Útest_triinterpcubic_cg_solverÚ  s^    ÿ
ÿÿ

ÿ
ÿÿÿrî   c                  C   sp  d\} }t  | d|  ddg¡}t  || ddg¡}t jdt jd�}g d¢g d¢g}t  dd	g¡}t  dd	t j d
¡D ]ö}t  |¡| t  |¡|  }t  |¡ | t  |¡|  }	t 	||	|¡}
tj
|
|dd�}tj |¡}| ¡ }t  |d¡d |dd d …f< tdƒD ]6}t  |d¡d	|d d …|f   ||d d d …f< �qtt jt  |¡dd�t jddgt jd�ƒ qtd S )N)r	   gË¡E¶óýú?rK   r	   r
   r   r[   )r   r   r   rŽ   r   rq   rœ   r�   r   r   r   rP   )r   rH   r�   rÖ   r   rË   rÊ   rÌ   r   r   rº   rê   Z_DOF_estimator_geomZcompute_geom_weightsrD   rÕ   r   r   r¾   )r×   rØ   r   r   rÀ   r   Zsum_wÚthetaÚx_rotÚy_rotr"   rÃ   Zdof_estimatorÚweightsÚitrir#   r#   r$   Ú test_triinterpcubic_geom_weights(  s&    4ÿrô   c               
   C   sj  d} t  g d¢¡}t  ddddd| dg¡}ddgddgddgddgddgddgg}|D �]}|d | |d |  }|d  | |d |  }|| }}d| d	|  }	g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}
t |||
¡}t  t  |j¡t  |j¡d¡}t  t  |j¡t  |j¡d¡}t  	||¡\}}| 
¡ }| 
¡ }| ¡ ||ƒdk}t jjd| d	|  |d�}t ||	¡}t ||	¡}tj||	dd�}|||fD ]}|||ƒ}t||ƒ �q¦d}|j|df }|j|df }t  |j| |j| d¡}t  |j| |j| d¡}d| d	|  }|||fD ]2}|j|||t jdt jd� d�\}t||ƒ �q0qVd S )Nr	   r   ry   r   r   r   éþÿÿÿrš   r›   r€   r�   r‚   ra   rƒ   r„   r…   r†   é   ©r“   rœ   r�   r   r&   r[   )Z	tri_index)r   rH   r   r   r   r   r   r   r   r   r   r‘   Úmar¹   rº   r   r   Z_interpolate_multikeysrÞ   r\   )r˜   ræ   Úy0ZtransformationsZtransformationrð   rñ   r   r   rÀ   r   r"   r•   r–   Zmask_outZ	zs_targetrÁ   rÂ   rÃ   rÄ   rÅ   ró   Zpt1Zpt2r#   r#   r$   Útest_triinterp_colinearB  sJ    (

ÿ
ÿrú   c                  C   sÜ  d} d}d}dd„ }t  |d|¡}t jd|  dt j |  | d	d
�}t j|dt jf |dd�}|d d …dd d…f  t j|  7  < |t  |¡  ¡ }|t  |¡  ¡ }t 	||¡}|||ƒ}	t  ddd¡}
t  ddd¡}t  
|
|¡\}
}|
 ¡ }
| ¡ }i }tdƒD �]}dt j |  | }t  |¡| t  |¡|  }t  |¡ | t  |¡|  }t  |¡|
 t  |¡|  }t  |¡ |
 t  |¡|  }t 	|||j¡}t ||	¡}t ||	¡}tj||	dd�}|||dœ}dD ]B}|| }|dk�rü||
|ƒ||< n|||ƒ}t ||| ¡ �qÖ�qd}dD ]°}|dk�rN|| }|}||
 }|}n|}|| }|
}|| }t 	|||j¡}t ||	¡}t ||	¡}tj||	dd�}|||dœ}dD ]$}|| ||ƒ}t ||| ¡ �q®�q&d S )Nrö   r&   ç333333Ã?c                 S   sä   t  d|  d| ¡}t  d|  d| ¡}t  |  d | d ¡}t  |  d | d ¡}dt  |d d ¡d  d t  d| ¡ t  |d d ¡d d t  d| ¡  d	| d |d     }t  |¡| t  |¡t  |¡  S ©
NrK   r�   r   r&   r   g      >@ç      @g      &@r:   ©r   ÚhypotÚarctan2ÚexprÊ   r   r   ©r   r   Úr1Ztheta1Úr2Ztheta2rÀ   r#   r#   r$   rÀ   Ž  s    *&ÿþz)test_triinterp_transformations.<locals>.zçffffffî?r   r   F©Zendpoint.r   rP   ç      ð¿r
   r(   rœ   r�   )ZlinZmin_Erœ   g¬Z¤$.Ar4   r   )r   r   rË   ÚrepeatÚnewaxisrÊ   ÚflattenrÌ   r   r   r   r   rÕ   r   r¹   rº   r»   r   )Ún_anglesÚn_radiiÚ
min_radiusrÀ   ÚradiiÚanglesræ   rù   Útriang0Úz0Zxs0Zys0Z	interp_z0Zi_anglerï   r   r   r•   r–   r"   rÁ   rÂ   rÃ   Z
dic_interpZ
interp_keyrÄ   ZinterpzZscale_factorZscaled_axisr#   r#   r$   Útest_triinterp_transformations€  s€    
ÿ$
þ

ÿ
þr  ztri_smooth_contouring.pngTg;ßO�—n²?)Zremove_textrç   c                  C   s<  d} d}d}dd„ }t  |d|¡}t jd|  dt j |  | d	d
�}t j|dt jf |dd�}|d d …dd d…f  t j|  7  < |t  |¡  ¡ }|t  |¡  ¡ }t 	||¡}|||ƒ}	| 
t  ||j jdd�||j jdd�¡|k ¡ t |¡}
|
j|	dd�\}}t  ddd¡}tj|ddd� tj|||dd� d S )Nrö   r&   rû   c                 S   sä   t  d|  d| ¡}t  d|  d| ¡}t  |  d | d ¡}t  |  d | d ¡}dt  |d d ¡d  d t  d| ¡ t  |d d ¡d d t  d| ¡  d	| d |d     }t  |¡| t  |¡t  |¡  S rü   rþ   r  r#   r#   r$   rÀ   ä  s    *&ÿþz%test_tri_smooth_contouring.<locals>.zr  r   r   Fr  .r   rP   r   ©Úsubdivr	   r
   gš™™™™™™?rK   z0.5)ZlwÚcolorÚblack)ÚlevelsÚcolors)r   r   rË   r  r	  rÊ   r
  rÌ   r   r   r’   rÿ   r   rV   ÚUniformTriRefinerÚrefine_fieldr   rW   ÚtriplotÚ
tricontour)r  r  r  rÀ   r  r  ræ   rù   r  r  ÚrefinerÚtri_refiÚz_test_refir  r#   r#   r$   Útest_tri_smooth_contouringÝ  s0    ÿ$
ÿþ
r   ztri_smooth_gradient.pnggZd;ßO�·?c                  C   s¶  dd„ } d}d}d}t  |d|¡}t jddt j |d	d
�}t j|dt jf |dd�}|d d …dd d…f  t j| 7  < |t  |¡  ¡ }|t  |¡  ¡ }| ||ƒ}t 	||¡}	|	 
t  ||	j jdd�||	j jdd�¡|k ¡ t |	¡}
|
j|dd�\}}t |	| ¡}| |	j|	j¡\}}t  ||¡}t ¡  t ¡  d¡ tj|	dd� t  ddd¡}tjdd d�}tj||||g d¢d� tj|	j|	j|| || dddddddd � d S )!Nc                 S   sL   | d |d  }t  || ¡}t  |¡| }t  |¡| t  |¡t  |¡  S )zAn electric dipole potential V.r   )r   r   rÊ   r   r   )r   r   Zr_sqrï   rÀ   r#   r#   r$   Údipole_potential  s    z2test_tri_smooth_gradient.<locals>.dipole_potentialé   r&   r�   r  r   r   Fr  .r   rP   r   r  Úequalz0.8)r  r	   r
   g{®Gáz„?Zhot)ÚnameZlut)r/   r
   r
   r
   )r  ÚcmapZ
linewidthsr>   r-   Úbluegyé&1¬|?r~   rÔ   )ZunitsÚscaleZzorderr  ÚwidthZ	headwidthZ
headlength)r   r   rË   r  r	  rÊ   r
  rÌ   r   r   r’   rÿ   r   rV   r  r  rº   r¼   r   r   rW   ÚfigureZgcaZ
set_aspectr  r   ÚcmZget_cmapr  Zquiver)r!  r  r  r  r  r  r   r   ÚVr"   r  r  r  ZtciZExZEyZE_normr  r%  r#   r#   r$   Útest_tri_smooth_gradient  sD    $
ÿþ
ÿþr,  c                  C   s  t  g d¢¡} t  dddt  d¡ ddg¡}t jg d¢g d¢g d	¢gt jd
�}t jg d¢td
�}tj| |||d�}t |¡}t|j	t  ddddt  d¡   g¡ƒ t|j
dd�t j dddt  d¡  t jg|¡ƒ t  g d¢¡} t  g d¢¡}t jg d¢gt jd
�}t | ||¡}t |¡}t| 
¡ t  dg¡ƒ d}dd„ }t  dd|d ¡} t  || dƒ|| dƒ¡\} }|  ¡ } | ¡ }tj| |t|d ƒd�}t |¡}| d¡}t jdtd
�}	g d¢}
d|	|
< t||	ƒ t jdtd
�}d|d< | |¡ | d¡}g d¢}d|	|< t||	ƒ d S )N©r	   r
   rK   r	   r/   r	   rK   r~   r  r
   r‹   rL   rM   r[   ©FFTr÷   F)Zrescaler/   )r	   r
   r/   )r
   rÔ   rý   rN   c                 S   s   t  | ¡| t  | ¡ S r7   )r   r¾   Úsign)r   r£   r#   r#   r$   ÚpowerV  s    ztest_tritools.<locals>.powerr   ru   r·   r�   é¢   )r   r   r   r   rq   rt   rz   r{   é   é   é"   é#   é~   é   éŽ   é�   é�   é‘   é’   é“   éž   éŸ   é    é¡   TéP   )é,   é-   é>   é?   éN   éO   rB  éQ   éR   éS   éb   éc   ét   éu   )r   rH   Úsqrtr\   Úboolr   r   ÚTriAnalyzerr   Zscale_factorsZcircle_ratiosrø   Zmasked_arrayÚnanr   r   r   r½   Zget_flat_tri_maskr�   r   r’   )r   r   r   r“   r"   ÚanalyserrÆ   r0  Z	mask_flatZ
verif_maskZcorners_indexZcenter_indexr#   r#   r$   Útest_tritools9  sN    "
ÿ
"þ





rU  c                  C   sj  d} d}t  dd| d ¡}t  ||¡\}}| ¡ }| ¡ }t jd| d  td�}d|| d d …< tj||t| d ƒ|d�}t 	|¡}|j
|d	�}|j}|j}	| |d  }
t  dd|
d ¡}t  ||¡\}}| ¡ }| ¡ }t  t  |d
|  d¡t  |d
|	  d¡¡}t|dƒ |j}t j|j|j dd�d }t j|j|j dd�d }| ¡ }|||ƒ}|j| }t||ƒ t  g d¢¡}t  g d¢¡}t ||g d¢g d¢g¡t ||g d¢g d¢g¡g}t  |d |d ¡}g }tdƒD ]r}t 	|| ¡}|j|dd	�\}}t  |j|j|f¡d }|t  |d d …df |d d …df f¡ }||g7 }�qàt|d |d ƒ d S )Nr   r   r  r
   r   r[   T)r   r“   r  r}   rO   rP   r~   ©r	   r
   r	   r
   ©r	   r	   r
   r
   rL   rZ   ©r   r   r   rª   rˆ   r   )r   r   r   r   r�   rQ  r   r   r½   r  Úrefine_triangulationr   r   Zin1dZaroundr   r“   rD   r   r‘   rI   rÿ   rÕ   r  ZdstackZlexsortr   )rÆ   r  r   r   r“   r"   r  Zrefi_triangZx_refiZy_refiZn_refiZx_verifZy_verifZind1dZ	refi_maskZrefi_tri_barycenter_xZrefi_tri_barycenter_yZ
tri_finderZrefi_tri_indicesZrefi_tri_maskrÀ   Zxyz_dataÚiZrefined_triangZ	refined_zZxyzr#   r#   r$   Útest_trirefiner  sn    ÿ
ÿ
ÿÿÿÿÿ

ÿ*r[  rÍ   ZlinearZcubic)Úidsc                 C   sx   t jd d…d d…f \}}t  | ¡ d¡}t  | ¡ d¡}t  |¡}t ||¡}t |¡}| ||ƒ}|j||dd� d S )Nr   )Ztriinterpolatorr  )	r   Zmgridr  r
  Z
zeros_liker   r   r  r  )rÍ   r   r   rÀ   rB   r  rÄ   r#   r#   r$   Útest_trirefine_maskedª  s    


r]  c                 C   s�   g }t | d ƒD ]n}t | d ƒD ]\}|||   }|d ||   }||d |   }|d |d |   }||||g|||gg7 }q qtj|tjd�S )zU
    Return (2*(N-1)**2, 3) array of triangles to mesh (N, N)-point np.meshgrid.
    r   r[   )rÕ   r   rH   r\   )rÆ   rB   rZ  Újr£   r¤   r¥   Údr#   r#   r$   r½   ¼  s    r½   c                  C   sL   t  ¡  ¡ } tjg d¢g d¢g d¢g d¢gd�}|  |d¡d usHJ dƒ‚d S )NrV  rW  rL   rZ   r·   zb-z(triplot should return the artist it adds)rW   r)  Zadd_subplotr   r   r  )r×   r"   r#   r#   r$   Útest_triplot_returnË  s    þÿr`  c            
      C   s¸   t  g d¢g d¢g¡} t  | ¡r$J ‚t j| ddd�}t  |¡sBJ ‚t  g d¢¡}t  g d¢¡}t ||| ¡}t |||¡}t |¡}t |¡}|jdd	�}|jdd	�}	t|j|	jƒ d S )
NrX  )r   r   r   TÚF)r]   Úorder)gö(\�ÂõØ?gáz®Gáâ?g…ëQ¸…Û?g{®GázÔ?)g…ëQ¸þ@@gáz®GA@g¸…ëQA@g×£p=
A@r   r  )	r   rH   Z	isfortranr   r   r  rY  r   r   )
Z
triangles1Z
triangles2r   r   Ztriang1Ztriang2Zrefiner1Zrefiner2Zfine_triang1Zfine_triang2r#   r#   r$   Ú,test_trirefiner_fortran_contiguous_trianglesÕ  s    

rc  c            
      C   sÂ   t  ddd¡} tt jt  | | ¡ƒ\}}||d k|dk @ |dk@ }|| ||  }}t  d¡}|t  |¡ |t  |¡  }|t  |¡ |t  |¡  }t 	||¡}|j
}d |_|j
}	t||	ƒ d S )Nrõ   r   r¸   r   g333333ÿ¿g333333ó¿é   )r   r   Úmapr   r   ÚradiansrÊ   rÌ   r   r   r   r   r   )
Úxir   r   Úwrï   Úx1Úy1r"   Zqhull_neighborsZown_neighborsr#   r#   r$   Útest_qhull_triangle_orientationì  s    
rk  c                  C   sˆ   t  g d¢¡} t  dddt  d¡ ddg¡}t jg d¢g d¢g d	¢gt jd
�}t jg d¢td
�}tj| |||d�}t |¡}| ¡  d S )Nr-  r	   rK   r~   r  r
   r‹   rL   rM   r[   r.  r÷   )	r   rH   rP  r\   rQ  r   r   rR  Z_get_compressed_triangulation)r   r   r   r“   r"   rT  r#   r#   r$   Ú#test_trianalyzer_mismatched_indices  s    "
rl  c                  C   sb   g d¢} g d¢}g d¢}t  ¡  t t¡�$ t  | ||ddg¡ W d   ƒ n1 sT0    Y  d S )N)r	   r
   r
   )r	   r	   r
   )r�   rˆ   r¡   r
   r	   )rW   r)  r0   r1   r8   Útricontourf)r   r   rÀ   r#   r#   r$   Ú"test_tricontourf_decreasing_levels  s    rn  c               
   C   sÀ  ddl m}  tjtdd�� tj ¡  W d   ƒ n1 s:0    Y  tjtdd��, tj g dgg gd d d d¡ W d   ƒ n1 s„0    Y  g d¢}g d	¢}tjtd
d��. tj ||ddggd d d d¡ W d   ƒ n1 sà0    Y  g d¢g}tjtdd��, tj |||ddgd d d¡ W d   ƒ n1 �s60    Y  tjtdd��, tj |||d dggd d¡ W d   ƒ n1 �s‚0    Y  tjtdd��, tj |||d d dggd¡ W d   ƒ n1 �sÎ0    Y  tj |||d d d d¡}tjtdd�� | g ¡ W d   ƒ n1 �s 0    Y  tjtdd�� | 	ddg¡ W d   ƒ n1 �s^0    Y  tjtdd�� tj 
¡  W d   ƒ n1 �s˜0    Y  tjtdd��  tj 
|dg¡ W d   ƒ n1 �sØ0    Y  g d¢}tj 
||¡}tjtdd�� | dd¡ W d   ƒ n1 �s*0    Y  tjtdd�� tj ¡  W d   ƒ n1 �sd0    Y  tj |¡}tjtdd��" | dgddg¡ W d   ƒ n1 �s²0    Y  d S )Nr   )Ú_triz.function takes exactly 7 arguments \(0 given\)©Úmatchz,x and y must be 1D arrays of the same lengthr   F)r   r   r   )r   r   r   z.triangles must be a 2D array of shape \(\?,3\)r‹   zCmask must be a 1D array with the same length as the triangles arrayz,edges must be a 2D array with shape \(\?,2\)zGneighbors must be a 2D array with the same shape as the triangles arrayry   z<z array must have same length as triangulation x and y arrayz.function takes exactly 2 arguments \(0 given\)z?z must be a 1D array with the same length as the x and y arraysz(filled contour levels must be increasingz-function takes exactly 1 argument \(0 given\)z*x and y must be array-like with same shape)Ú
matplotlibro  r0   r1   Ú	TypeErrorÚmplr   r8   Zcalculate_plane_coefficientsr’   ZTriContourGeneratorZcreate_filled_contourZTrapezoidMapTriFinderZ	find_many)ro  r   r   r—   r"   rÀ   Ztcgr”   r#   r#   r$   Útest_internal_cpp_api  sˆ    þ(ÿ:þ<
þ<ÿ<þ<þ*þ.þ*þ0ÿ,ÿ*ÿru  c                  C   s\   t  g d¢¡} t  g d¢¡}d}t | |¡}t | | || ¡}t|jƒt|jƒksXJ ‚d S )N)r   r   r   r   rK   )r   r   r   r   rK   g    _ B)r   rI   r   r   r   r   )r   r   Úoffsetr"   Ztriang_offsetr#   r#   r$   Útest_qhull_large_offsetm  s    rw  c                  C   sF  g d¢} g d¢}t  | |¡}t ¡  tjtdd��& t |dddtj	g¡ W d   ƒ n1 s^0    Y  tjtdd��( t |dddtj	 g¡ W d   ƒ n1 s¤0    Y  tjtdd��& t |dddtj
g¡ W d   ƒ n1 sè0    Y  tjtdd��0 t |tjjg d	¢g d
¢d�¡ W d   ƒ n1 �s80    Y  d S )NrŒ   r�   zCz array must not contain non-finite values within the triangulationrp  r   r   r   z9z must not contain masked points within the triangulation)r   r   r   r   )r   r   r   r   r÷   )r   r   rW   r)  r0   r1   r8   rm  r   ÚinfrS  rø   rH   )r   r   r"   r#   r#   r$   Útest_tricontour_non_finite_zx  s    464ry  c                  C   sp   g d¢} g d¢}g d¢}t  ¡ \}}| | ||¡}| | ||¡}|j|jksPJ ‚| ||¡}|j|jkslJ ‚d S )N)r	   rK   r
   )r	   r
   r	   )r
   r/   r~   )rW   Zsubplotsrm  r  Z_contour_generator)r   r   rÀ   Zfigr×   Ztcs1Ztcs2Ztcs3r#   r#   r$   Útest_tricontourset_reuse�  s    rz  ):Únumpyr   Znumpy.testingr   r   r   Znumpy.ma.testutilsrø   Z	testutilsr»   r0   rr  rt  Zmatplotlib.cmr*  Zmatplotlib.pyplotZpyplotrW   Zmatplotlib.trirB   r   Zmatplotlib.pathr   Zmatplotlib.testing.decoratorsr   r%   r,   r5   ÚmarkZparametrizer9   rJ   rY   r^   r™   rÇ   rÜ   rî   rô   rú   r  r   r,  rU  r[  r¹   rº   r]  r½   r`  rc  rk  rl  rn  ru  rw  ry  rz  r#   r#   r#   r$   Ú<module>   sn   *
÷
-

g_VN>]
&
498ÿý


S