§
    ‡ÛgèÌ  ã                   óô  — d dl Zd dlmZmZmZ d dlmc 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mZ  G d„ d¦  «        Zd„ Zd„ Zd	„ Zd
„ Zd„ Z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„ ¦   «         Z!d„ Z" edg¦  «        d„ ¦   «         Z#d„ Z$d„ Z%d„ Z&d„ Z'd „ Z(d!„ Z)d"„ Z*d#„ Z+d$„ Z,d%„ Z-d&„ Z. ed'gd(d)¬*¦  «        d+„ ¦   «         Z/ ed,gd(d-¬*¦  «        d.„ ¦   «         Z0d/„ Z1d0„ Z2e
j                              d1ej3        ej4        gd2d3g¬4¦  «        d5„ ¦   «         Z5d6„ Z6d7„ Z7d8„ Z8d9„ Z9d:„ Z:d;„ Z;d<„ Z<d=„ Z=d>„ Z>d?„ Z? e¦   «         d@„ ¦   «         Z@dA„ ZAdS )Bé    N)Úassert_array_equalÚassert_array_almost_equalÚassert_array_less)ÚPath)Úimage_comparisonÚcheck_figures_equalc                   óL  — e Zd Zg d¢Zg d¢Zg d¢g d¢gZddgZej         	                    deegi eeddgfeeegi eeedgfeeg e
e¬	¦  «        eeedgfeeg e
e¬
¦  «        eedegfeeeg e
e¬
¦  «        eeeegfeeg e
ee¬¦  «        eeeegfg¦  «        d„ ¦   «         ZdS )ÚTestTriangulationParams©éÿÿÿÿr   é   r   ©r   r   r   r   ©r   r   é   ©r   r   é   FTzargs, kwargs, expectedN©Ú	triangles©Úmask©r   r   c                 óæ   — ddg}dddœ}t           j                             ||z   i |¥|¥¦  «        \  }}}}	}
}|\  }}}}||u sJ ‚||u sJ ‚t          ||¦  «         |	|u sJ ‚|
|k    sJ ‚||k    sJ ‚d S )Nr   r   r   Ú4)ÚaÚb)ÚmtriÚTriangulationÚ_extract_triangulation_paramsr   )ÚselfÚargsÚkwargsÚexpectedÚ
other_argsÚother_kwargsÚx_Úy_Ú
triangles_Úmask_Úargs_Úkwargs_ÚxÚyr   r   s                   úY/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/tests/test_triangulation.pyÚ!test_extract_triangulation_paramsz9TestTriangulationParams.test_extract_triangulation_params   sÅ   € ð ˜�Vˆ
Ø SÐ)Ð)ˆåÔ×<Ò<Ø�zÑ!Ð#= fÐ#=°Ð#=ñ?ô ?ñ 	2ˆˆB�
˜E 5¨'ð !)Ñˆˆ1ˆi˜Ø�QˆwˆwˆwˆwØ�QˆwˆwˆwˆwÝ˜: yÑ1Ô1Ð1Ø˜ˆ}ˆ}ˆ}ˆ}Ø˜
Ò"Ð"Ð"Ð"Ø˜,Ò&Ð&Ð&Ð&Ð&Ð&ó    )Ú__name__Ú
__module__Ú__qualname__r+   r,   r   r   ÚpytestÚmarkÚparametrizeÚdictr.   © r/   r-   r
   r
      s7  € € € € € Øˆˆ€AØˆˆ€AØ��˜I˜I˜IÐ&€IØ�4ˆ=€Dà„[×ÒÐ5Ø
ˆQˆ��a˜˜D $Ð'Ð(Ø
ˆQ�	Ð	˜B  A y°$Ð 7Ð8Ø
ˆQˆ�� 	Ð*Ñ*Ô*¨Q°°9¸dÐ,CÐDØ
ˆQˆ��˜4�‘” 1 a¨¨tÐ"4Ð5Ø
ˆQ�	Ð	˜D˜D d˜O™OœO¨a°°I¸tÐ-DÐEØ
ˆQˆ�� 	°Ð5Ñ5Ô5¸¸1¸iÈÐ7NÐOð8ñ ô ð'ð 'ñô ð'ð 'ð 'r/   r
   c                  óŽ   — dg} g d¢g d¢g d¢g| g}t           j                             |i ¦  «        \  }}}}}}|�J ‚|| gk    sJ ‚d S )NT©r   r   r   ©r   r   r   r   )r   r   r   )r   r    r%   r&   r'   r(   r)   r*   s           r-   Ú*test_extract_triangulation_positional_maskr;   +   sh   € àˆ6€DØˆIˆI�y�y�y 9 9 9 +¨tÐ4€DåÔ×8Ò8¸¸rÑBÔBñ .€BˆˆJ˜˜u gàˆ=ˆ=ˆ=Ø�T�FŠ?ˆ?ˆ?ˆ?ˆ?ˆ?r/   c                  ó  — g d¢} g d¢}t          j        t          d¬¦  «        5  t          j        | ddg¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          j        | |g d¢¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d	¬¦  «        5  t          j        | |d
¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          j        | |g d¢g¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          j        | |g d¢g¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   zx and y must be equal-length©Úmatchr   r   z>triangles must be a \(N, 3\) int array, but found shape \(3,\)r   z3triangles must be a \(N, 3\) int array, not 'other'Úotherzfound value 99)r   r   éc   zfound value -1)r   r   r   ©r3   ÚraisesÚ
ValueErrorr   r   ©r+   r,   s     r-   Útest_triangulation_initrE   7   sÐ  € Øˆˆ€AØˆˆ€AÝ	Œ•zÐ)GÐ	HÑ	HÔ	Hð &ð &ÝÔ˜1˜q !˜fÑ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &å	ŒÝðð
ñ 
ô 
ð ,ð ,õ 	Ô˜1˜a   Ñ+Ô+Ð+ð	,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,õ
 
ŒÝØHð
Jñ 
Jô 
Jð *ð *õ 	Ô˜1˜a Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *õ 
Œ•zÐ)9Ð	:Ñ	:Ô	:ð /ð /ÝÔ˜1˜a * * * Ñ.Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /å	Œ•zÐ)9Ð	:Ñ	:Ô	:ð /ð /ÝÔ˜1˜a * * * Ñ.Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð /ð /sY   ¤AÁAÁAÁ.BÂBÂBÂ9CÃC Ã#C ÄD(Ä(D,Ä/D,ÅE5Å5E9Å<E9c                  óÐ  — g d¢} g d¢}g d¢g d¢g}t          j        | ||¦  «        }t          |j        g d¢g d¢g¦  «         |                     ddg¦  «         t          |j        ddg¦  «         |                     d ¦  «         |j        �J ‚d	}g d
¢dgdgddfD ]J}t          j        t          |¬¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒKd S )Nr   r   r   )r   r   r   )r   r   r   )r   r   r   FTz3mask array must have same length as triangles array)FTFr=   )	r   r   r   Ú	neighborsÚset_maskr   r3   rB   rC   )r+   r,   r   ÚtriangÚmsgr   s         r-   Útest_triangulation_set_maskrK   K   s\  € Øˆˆ€AØˆˆ€AØ��˜I˜I˜IÐ&€IÝÔ  1 iÑ0Ô0€Fõ �vÔ'¨+¨+¨+°{°{°{Ð)CÑDÔDÐDð ‡O‚O�U˜D�MÑ"Ô"Ð"Ý�v”{ U¨D MÑ2Ô2Ð2ð ‡O‚O�DÑÔÐØŒ;ÐÐÐà
@€CØ%Ð%Ð%¨ w°°¸¸tÐDð "ð "ˆÝŒ]�:¨SÐ1Ñ1Ô1ð 	"ð 	"Ø�OŠO˜DÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"øð"ð "s   Â8CÃC	Ã!C	c                  óÔ  — d} d}t          j        t          j        dd| ¦  «        t          j        dd|¦  «        ¦  «        \  }}|                     ¦   «         }|                     ¦   «         }| |z  }d| dz
  z  |dz
  z  }d| z  |z  d| z  z
  d|z  z
  dz   }t	          j        ||¦  «        }t          |j        |¦  «         t          |j        |¦  «         t          |j
        ¦  «        |k    sJ ‚t          j        |j
        ¦  «        dk    sJ ‚t          j        |j
        ¦  «        |dz
  k    sJ ‚t          |j        ¦  «        |k    sJ ‚t          j        |j        ¦  «        dk    sJ ‚t          j        |j        ¦  «        |dz
  k    sJ ‚|j        }d |_        t!          |j        |¦  «         t!          t          j        |j
        ¦  «        t          j        |¦  «        ¦  «         d S )	Né   é   ç        ç      ð?r   r   r   r   )ÚnpÚmeshgridÚlinspaceÚravelr   r   r   r+   r,   Úlenr   ÚminÚmaxÚedgesrG   Ú
_neighborsr   ÚuniqueÚarange)	ÚnxÚnyr+   r,   ÚnpointsÚ
ntrianglesÚnedgesrI   rG   s	            r-   Útest_delaunayra   b   sà  € à	
€BØ	
€BÝŒ;•r”{ 3¨¨RÑ0Ô0µ"´+¸cÀ3ÈÑ2KÔ2KÑLÔL�D€A€qØ	�Š‰	Œ	€AØ	�Š‰	Œ	€AØ�‰e€GØ�b˜‘d‘˜r !™tÑ$€JØˆr‰T�"‰W�q˜‘t‰^˜a ™dÑ" QÑ&€Fõ Ô  1Ñ%Ô%€Fõ ˜fœh¨Ñ*Ô*Ð*Ý˜fœh¨Ñ*Ô*Ð*õ ˆvÔÑ Ô  JÒ.Ð.Ð.Ð.ÝŒ6�&Ô"Ñ#Ô# qÒ(Ð(Ð(Ð(ÝŒ6�&Ô"Ñ#Ô# w¨q¡yÒ0Ð0Ð0Ð0õ ˆvŒ|ÑÔ Ò&Ð&Ð&Ð&ÝŒ6�&”,ÑÔ 1Ò$Ð$Ð$Ð$ÝŒ6�&”,ÑÔ 7¨1¡9Ò,Ð,Ð,Ð,ð
 Ô €IØ€FÔÝ�vÔ'¨Ñ3Ô3Ð3õ •r”y Ô!1Ñ2Ô2µB´I¸gÑ4FÔ4FÑGÔGÐGÐGÐGr/   c                  óº  — d} d}d}t           j                             d¦  «         t           j                             | ¦  «        }t           j                             | ¦  «        }||         ||<   ||         ||<   t          j        ||¦  «        }t          t          j        |j        ¦  «        t          j        t          j	        | ¦  «        |¦  «        ¦  «         d S )Né
   é   r   é   )
rQ   ÚrandomÚseedr   r   r   rZ   r   Údeleter[   )r^   Ú	duplicateÚduplicate_ofr+   r,   rI   s         r-   Útest_delaunay_duplicate_pointsrk   Œ   sÈ   € Ø€GØ€IØ€Lå„I‡N‚N�2ÑÔÐÝ
Œ	×Ò˜Ñ!Ô!€AÝ
Œ	×Ò˜Ñ!Ô!€AØ�\”?€A€i�LØ�\”?€A€i�Lõ Ô  1Ñ%Ô%€Fõ •r”y Ô!1Ñ2Ô2Ý”y¥¤¨7Ñ!3Ô!3°YÑ?Ô?ñAô Að Að Að Ar/   c                  óh  — t          j        ddd¦  «        } t          j        ddd¦  «        }t          j        t          ¦  «        5  t          j        | |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        | d¦  «        } t          j        |d¦  «        }t          j        | |¦  «         d S )NrO   ç      $@é   ç       @g       @)rQ   rS   r3   rB   ÚRuntimeErrorr   r   ÚappendrD   s     r-   Útest_delaunay_points_in_linerr       sß   € õ 	Œ�C˜˜rÑ"Ô"€AÝ
Œ�C˜˜rÑ"Ô"€AÝ	Œ•|Ñ	$Ô	$ð !ð !ÝÔ˜1˜aÑ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !õ 	Œ	�!�SÑÔ€AÝ
Œ	�!�SÑÔ€AÝÔ�q˜!ÑÔÐÐÐs   ÁA(Á(A,Á/A,zx, yr   rM   r   é   )r   r   r   )rM   rs   rM   )r   r   r   )rM   rs   rs   )r   r   r   r   r   r   )rM   rM   rM   rs   rM   rs   c                 ó”   — t          j        t          ¦  «        5  t          j        | |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©NrA   rD   s     r-   Ú!test_delaunay_insufficient_pointsrv   ®   s‹   € õ 
Œ•zÑ	"Ô	"ð !ð !ÝÔ˜1˜aÑ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   š=½AÁAc            
      óŽ  ‡— t          j        ddgddgddgddgddgd	d
gddgg¦  «        } t          j        ddgddgddgddgddgddgddgg¦  «        }d„ Šˆfd„}t          j        | d d …df         | d d …df         ¦  «        }|D ]} |||¦  «        dk    sJ ‚Œt          j        | 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                 ó|   — t          j        | |f¦  «        j        }t          |¦  «                             |¦  «        S ru   )rQ   ÚvstackÚTr   Úcontains_point)ÚxtriÚytriÚxyÚ
tri_pointss       r-   Útri_contains_pointz0test_delaunay_robust.<locals>.tri_contains_pointÕ   s4   € Ý”Y  d˜|Ñ,Ô,Ô.ˆ
Ý�JÑÔ×.Ò.¨rÑ2Ô2Ð2r/   c                 óL   •‡ ‡— t          ˆˆ ˆfd„‰ j        D ¦   «         ¦  «        S )Nc              3   ó^   •K  — | ]'} ‰‰j         |         ‰j        |         ‰¦  «        V — Œ(d S ru   rD   )Ú.0Útrirƒ   rI   r�   s     €€€r-   ú	<genexpr>zCtest_delaunay_robust.<locals>.tris_contain_point.<locals>.<genexpr>Ý   sR   øè è € ð 0ð 0Øð &Ð% f¤h¨s¤m°V´X¸c´]ÀBÑGÔGð 0ð 0ð 0ð 0ð 0ð 0r/   )Úsumr   )rI   r�   rƒ   s   ``€r-   Útris_contain_pointz0test_delaunay_robust.<locals>.tris_contain_pointÜ   sJ   øøø€ Ýð 0ð 0ð 0ð 0ð 0ð 0Ø$Ô.ð0ñ 0ô 0ñ 0ô 0ð 	0r/   r   r   )rQ   ÚarrayÚasarrayr   r   )r‚   Útest_pointsrŠ   rI   Ú
test_pointrƒ   s        @r-   Útest_delaunay_robustr�   ¾   s[  ø€ õ ”Ø	Ð0Ð1Ø	Ð0Ð1Ø	Ð0Ð1Ø	Ð0Ð1Ø	Ð0Ð1Ø	Ð0Ð1Ø	Ð1Ð2ð4ñ 5ô 5€Jõ ”*Ø	ˆuˆØ	ˆuˆØ	ˆuˆØ	ˆeˆØ	ˆeˆØ	ˆuˆØ	ˆeˆðñ ô €Kð3ð 3ð 3ð0ð 0ð 0ð 0ð 0õ Ô 
¨1¨1¨1¨a¨4Ô 0°*¸Q¸Q¸QÀ¸TÔ2BÑCÔC€FØ!ð ;ð ;ˆ
Ø!Ð! &¨*Ñ5Ô5¸Ò:Ð:Ð:Ð:Ð:õ Ô 
¨1¨2¨2¨q¨5Ô 1°:¸a¸b¸bÀ!¸eÔ3DÑEÔE€F€F€Fr/   ztripcolor1.pngc                  óŽ  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g
¦  «        }t          j        | ||¦  «        }| d|z  z   }| |j                                      d¬¦  «        }||j                                      d¬¦  «        }d|z  |z   }t          j        d¦  «         t          j        ||d¬¦  «         t          j	        d¦  «         t          j        d¦  «         t          j        ||d¬¦  «         t          j	        d¦  «         d S )N)
r   ç      à?r   r   r‘   r   r   r‘   r   ry   )
r   r   r   r‘   r‘   r‘   r   r   r   ry   ©r   r   r   )r   rN   r   ©r   r   rN   )r   rM   rN   )r   rN   rs   )rN   rd   rs   )rN   rM   é	   )rd   rN   r”   )é   rd   r”   )rM   r•   r”   r‘   r   ©Úaxiséy   Úk)Ú
edgecolorszpoint colorséz   )Ú
facecolorsrš   rœ   )
rQ   rŒ   r   r   r   ÚmeanÚpltÚsubplotÚ	tripcolorÚtitle)r+   r,   r   rI   ÚCpointsÚxmidÚymidÚCfacess           r-   Útest_tripcolorr¦   ë   sd  € å
Œ
Ð>Ð>Ð>Ñ?Ô?€AÝ
Œ
Ð>Ð>Ð>Ñ?Ô?€AÝ”
Øˆ	ˆ	�9�9�9Øˆ	ˆ	�9�9�9Øˆ	ˆ	�9�9�9Øˆ	ˆ	�9�9�9˜i˜i˜i¨¨¨ð	4ñ 5ô 5€Iõ Ô  1 iÑ0Ô0€Fà�#�a‘%‰i€GàˆVÔÔ×#Ò#¨Ð#Ñ+Ô+€DØˆVÔÔ×#Ò#¨Ð#Ñ+Ô+€DØ�‰X˜‰_€Få„K�ÑÔÐÝ„M�&˜'¨cÐ2Ñ2Ô2Ð2Ý„IˆnÑÔÐå„K�ÑÔÐÝ„M�& V¸Ð<Ñ<Ô<Ð<Ý„IˆlÑÔÐÐÐr/   c                  ó¦  — g d¢} g d¢}t          j        ¦   «         \  }}t          j        t          d¬¦  «        5  |                     | |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |                     | |g d¢¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |                     | |g d¢¬	¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d
¬¦  «        5  |                     | |ddgd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d
¬¦  «        5  |                     | |ddgd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |                     | |g d¢¬¦  «         d d d ¦  «         n# 1 swxY w Y   |                     | |g d¢¦  «         |                     | |g d¢d¬¦  «         |                     | |ddg¦  «         |                     | |ddg¬	¦  «         d S )Nr   r   z!tripcolor\(\) missing 1 required r=   z!The length of c must match either©r   r   r   z,length of facecolors must match .* triangles)r   r   r   rN   ©rœ   z-'gouraud' .* at the points.* not at the facesr   r   Úgouraud)rœ   Úshading)r«   z+positional.*'c'.*keyword-only.*'facecolors')ÚC)rž   Úsubplotsr3   rB   Ú	TypeErrorr    rC   )r+   r,   ÚfigÚaxs       r-   Útest_tripcolor_colorr±     sø  € Øˆˆ€AØˆˆ€AÝŒl‰nŒn�G€CˆÝ	Œ•yÐ(LÐ	MÑ	MÔ	Mð ð Ø
�Š�Q˜ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Œ•zÐ)LÐ	MÑ	MÔ	Mð &ð &Ø
�Š�Q˜˜9˜9˜9Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &å	Œ•zØKð
Mñ 
Mô 
Mð 4ð 4à
�Š�Q˜ l l lˆÑ3Ô3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4õ 
Œ•zØLð
Nñ 
Nô 
Nð Að Aà
�Š�Q˜ q¨! f°iˆÑ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aõ 
Œ•zØLð
Nñ 
Nô 
Nð 6ð 6à
�Š�Q˜˜A˜q˜6¨9ˆÑ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6õ 
Œ•yØJð
Lñ 
Lô 
Lð +ð +à
�Š�Q˜˜\˜\˜\ˆÑ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð
 ‡L‚L��A�|�|�|Ñ$Ô$Ð$Ø‡L‚L��A�|�|�|¨Y€LÑ7Ô7Ð7Ø‡L‚L��A˜˜1�vÑÔÐØ‡L‚L��A 1 a &€LÑ)Ô)Ð)Ð)Ð)sk   ºAÁA!Á$A!ÂB)Â)B-Â0B-ÃC6Ã6C:Ã=C:ÄEÅEÅEÅ*FÆFÆFÆ8GÇG#Ç&G#c                  ó°  — t           j                             d¦  «         t           j                             d¦  «        t           j                             d¦  «        t           j                             d¦  «        }}} t	          j        ¦   «                              ¦   «         }d}|                     | |||¬¦  «        j        }|j	        |j
        f|k    sJ ‚d S )Ni!N,rc   )ç      Ð?ry   )Úclim)rQ   rf   rg   Úrandrž   ÚfigureÚadd_subplotr    ÚnormÚvminÚvmax)r   r   Úcr°   r´   r¸   s         r-   Útest_tripcolor_climr¼   #  s¥   € Ý„I‡N‚N�8ÑÔÐÝŒi�nŠn˜RÑ Ô ¥"¤)§.¢.°Ñ"4Ô"4µb´i·n²nÀRÑ6HÔ6Hˆ!€q€Aå	Œ‰Œ×	!Ò	!Ñ	#Ô	#€BØ€DØ�<Š<˜˜1˜a dˆ<Ñ+Ô+Ô0€DØŒI�t”yÐ! TÒ)Ð)Ð)Ð)Ð)Ð)r/   c                  ó  — g d¢} g d¢}ddg}t          j        ¦   «         \  }}t          j        t          d¬¦  «        5  |                     | ||d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |                     | |||¬	¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |                     | |d
|¬	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   çš™™™™™Ù?r‘   zAdditional positional paramr=   Úunused_positionalz"Positional parameter c .*no effectr©   zinterpreted as c)rž   r­   r3   ÚwarnsÚDeprecationWarningr    ÚUserWarning)r+   r,   r»   r¯   r°   s        r-   Útest_tripcolor_warningsrÃ   -  sÍ  € Øˆˆ€AØˆˆ€AØ	ˆcˆ
€AÝŒl‰nŒn�G€Cˆå	ŒÕ(Ð0MÐ	NÑ	NÔ	Nð 3ð 3Ø
�Š�Q˜˜1Ð1Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3õ 
Œ•kÐ)MÐ	NÑ	NÔ	Nð ,ð ,Ø
�Š�Q˜˜1¨ˆÑ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,å	Œ•kÐ)MÐ	NÑ	NÔ	Nð =ð =Ø
�Š�Q˜Ð-¸!ˆÑ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =s5   ¾A#Á#A'Á*A'Â	B/Â/B3Â6B3ÃC<Ã<D ÄD c                  ó$  — t          j        g d¢g d¢gt           j        ¬¦  «        } t          j        g d¢¦  «        }|                      ¦   «         }t	          j        |d d …df         |d d …df         | ¦  «        j         t          || ¦  «         d S )N©r   r   r   )r   r   r   ©Údtype))r   r   )r   gš™™™™™ñ?)r   r   )r   r   r   r   )rQ   r‹   Úint32Úcopyr   r   rX   r   )r   ÚpointsÚold_triangless      r-   Útest_no_modifyrÌ   <  s�   € å”˜)˜)˜) Y Y YÐ/µr´xÐ@Ñ@Ô@€IÝŒXÐ8Ð8Ð8Ñ9Ô9€Fà—N’NÑ$Ô$€MÝÔ�v˜a˜a˜a ˜d”| V¨A¨A¨A¨q¨D¤\°9Ñ=Ô=ÔCÐCÝ�} iÑ0Ô0Ð0Ð0Ð0r/   c                  ób  — t          j        t          j        d¦  «        t          j        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          j        t          |¦  «        ¦  «        }d|dd…<   t          j        | |||¦  «        }|                     ¦   «         }g d¢}g d¢}t          j        ||¦  «        \  }}|                     ¦   «         }|                     ¦   «         } |||¦  «        }t          |g d¢¦  «          ||dz
  |dz
  ¦  «        }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          j        | ||¦  «        }|                     ¦   «         }g d+¢}d,d-g}t          j        ||¦  «        \  }} |||¦  «        }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          j        | ||¦  «        }|                     ¦   «         }d,d-g}g d+¢}t          j        ||¦  «        \  }} |||¦  «        }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          j        | ||¦  «        }|                     ¦   «         }g d>¢}g d?¢} |||¦  «        }t          |g d@¢¦  «         | 
                    dd g¦  «         ||                     ¦   «         k    sJ ‚ |||¦  «        }t          |g dA¢¦  «         d S )BNrN   ©r   r   rN   ©r   rM   rN   ©r   r   rM   ©r   rs   rM   ©r   r   rs   ©r   rd   rs   ©rN   rM   r•   ©rM   r”   r•   ©rM   rs   r”   ©rs   rc   r”   ©rs   rd   rc   ©rd   rn   rc   ©r•   r”   é   ©r”   é   rÛ   ©r”   rc   rÝ   ©rc   é   rÝ   ©rc   rn   rà   ©rn   é   rà   r   r•   rc   )r³   ç      ô?ç      @ç      
@)r   r   rN   r   rs   r   rc   r   rÛ   rà   é   r   r   r   r   r   r‘   )r   r   r   r   r   r   r   rM   r   rd   r   rn   r   rÝ   rã   é   )r‘   ç      ø?ç      @r‘   ré   rê   ré   ré   rO   rP   ro   ç      @)rO   rO   rO   rë   rë   rë   rP   ro   ré   ré   ré   ré   )r   r   rN   rÝ   rã   rè   r   rà   rs   rd   rc   rn   rO   rë   r   rè   ©ré   r   r   r   r   ré   ré   r   r9   ©r   r   r   ©r   rN   r   ©r   r   rM   ©r   rN   rM   ©r   rM   rs   ©rN   rs   rM   )çš™™™™™¹¿r¾   çÍÌÌÌÌÌì?gffffffö?gffffffþ?g333333@g333333@ró   çš™™™™™¹?)r   r   r   r   r   r   r   )r   rs   rs   rs   rd   rd   r   )ré   ré   r   r   r   r   ré   r   )r   r   rM   r¨   )r   r   rN   )r   rN   rM   )r   rs   r   )r   rs   rN   rM   rs   rd   ©r   r   r   r   ©r   r   r   r   ©r   r   r   )gš™™™™™É¿çš™™™™™É?rz   g333333ó?)r‘   r‘   r‘   r‘   )r   r   r   r   )r   r   r   r   )rQ   rR   r[   rT   ÚzerosrU   r   r   Úget_trifinderr   rH   )
r+   r,   r   r   rI   Ú	trifinderÚxsÚysÚtrisÚdeltas
             r-   Útest_trifinderr  F  s  € åŒ;•r”y ‘|”|¥R¤Y¨q¡\¤\Ñ2Ô2�D€A€qØ	�Š‰	Œ	€AØ	�Š‰	Œ	€AØ��˜I˜I˜I y y y°)°)°)¸Y¸Y¸YØ��˜I˜I˜I y y y°)°)°)¸Z¸Z¸ZØ��˜[˜[˜[¨*¨*¨*°k°k°kÀ;À;À;Ø��˜|˜|˜|¨\¨\¨\ð;€Iõ Œ8•C˜	‘N”NÑ#Ô#€DØ€Dˆˆ2ˆ�JÝÔ  1 i°Ñ6Ô6€FØ×$Ò$Ñ&Ô&€Ià	!Ð	!Ð	!€BØ	!Ð	!Ð	!€BÝŒ[˜˜RÑ Ô �F€BˆØ	�Š‰Œ€BØ	�Š‰Œ€BØˆ9�R˜ÑÔ€DÝ�tð >ð >ð >ñ ?ô ?ð ?àˆ9�R˜‘V˜R ™VÑ$Ô$€DÝ�tð =ð =ð =ñ >ô >ð >ð 
FÐ	EÐ	E€BØ	EÐ	EÐ	E€BØˆ9�R˜ÑÔ€DÝ�tÐGÐGÐGÑHÔHÐHð ˆsˆ€BØ
ˆsˆ€BØˆ9�R˜ÑÔ€DÝ�t˜a ˜WÑ%Ô%Ð%ð €Eà'Ð'Ð'€AØ	ˆa�!�a˜˜E 1Ð%€AØ��˜I˜I˜I y y y°)°)°)¸Y¸Y¸YØ��˜I˜I˜I y y yð2€IåÔ  1 iÑ0Ô0€FØ×$Ò$Ñ&Ô&€Ià	-Ð	-Ð	-€BØ
�ˆ€BÝŒ[˜˜RÑ Ô �F€BˆØˆ9�R˜ÑÔ€DÝ�tÐ5Ð5Ð5Ø5Ð5Ð5ð7ñ 8ô 8ð 8ð €Eà	ˆeˆV�Q˜˜Q  1Ð%€AØ'Ð'Ð'€AØ��˜I˜I˜I y y y°)°)°)¸Y¸Y¸YØ��˜I˜I˜I y y yð2€IåÔ  1 iÑ0Ô0€FØ×$Ò$Ñ&Ô&€Ià
�ˆ€BØ	-Ð	-Ð	-€BÝŒ[˜˜RÑ Ô �F€BˆØˆ9�R˜ÑÔ€DÝ�t˜r 2˜h¨¨A¨°°A°¸¸A¸ÀÀAÀÈÈAÈØ! 2˜hð(ñ )ô )ð )ð
 	ˆˆ€AØˆˆ€AØ��˜I˜I˜IÐ&€IÝÔ  1 iÑ0Ô0€FØ×$Ò$Ñ&Ô&€Ià	Ð	Ð	€BØ	Ð	Ð	€BØˆ9�R˜ÑÔ€DÝ�t˜^˜^˜^Ñ,Ô,Ð,à
‡O‚O�Q˜�FÑÔÐØ˜×,Ò,Ñ.Ô.Ò.Ð.Ð.Ð.Øˆ9�R˜ÑÔ€DÝ�t˜_˜_˜_Ñ-Ô-Ð-Ð-Ð-r/   c                  ó¨  ‡‡‡— t          j        t          j        d¦  «        t          j        d¦  «        ¦  «        \  } }|                      ¦   «         } |                     ¦   «         }d| z  d|z  z
  }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          j        t          |¦  «        ¦  «        }d|dd…<   t          j        | |||¦  «        }t          j        ||¦  «        }t          j	        ||¦  «        }t          j	        ||d¬¦  «        }t          j
        ddd¦  «        }	g d¢}
t          j        |	|
¦  «        \  }	}
|||fD ]'} ||	|
¦  «        }t          |d|	z  d|
z  z
  ¦  «         Œ(g d¢}	|	}
t          j        |	|
¦  «        \  }	}
|||fD ]+} ||	|
¦  «        }t          |j        d gdz  gdz  ¦  «         Œ,t          j
        dd!d¦  «        }	g d"¢}
t          j        |	|
¦  «        \  }	}
|||fD ]\} ||	|
¦  «        }t          j        |d|	z  d|
z  z
  ¦  «         |	dk    |	d#k    z  |
dk    z  |
d#k    z  }t          |j        |¦  «         Œ]d$\  ŠŠŠˆˆˆfd%„}ˆˆˆfd&„}t          j        g d'¢¦  «        } t          j        g d(¢¦  «        }t          j        g d)¢g d*¢g d+¢g d,¢g d-¢g d.¢g d/¢g d0¢g¦  «        }t          j        | ||¦  «        } || |¦  «        } || |¦  «        }t          j
        d1d2d3¦  «        }	t          j
        d1d2d3¦  «        }
t          j        |	|
¦  «        \  }	}
t          j	        ||d4|¬5¦  «        } ||	|
¦  «        }t          | ||	|
¦  «        ¦  «         |                     | |¦  «        \  }} || |¦  «        \  }}t          ||¦  «         t          ||¦  «         d6}t          j        t          j
        d1d2|dz   ¦  «        t          j
        d1d2|dz   ¦  «        ¦  «        \  } }|                      ¦   «         } |                     ¦   «         } || |¦  «        }t          j        | |t#          |dz   ¦  «        ¬7¦  «        }t          j        t          j
        d8d9d3¦  «        t          j
        d8d9d3¦  «        ¦  «        \  }	}
|	                     ¦   «         }	|
                     ¦   «         }
t          j        ||¦  «        }t          j	        ||¦  «        }t          j	        ||d¬¦  «        } ||	|
¦  «        }t          j         ||	|
¦  «        |z
  ¦  «        }||fD ]ƒ}t          j         ||	|
¦  «        |z
  ¦  «        }t          j        |¦  «        dt          j        |¦  «        z  k    sJ ‚t          j        ||¦  «        d:t          j        ||¦  «        z  k    sJ ‚Œ„d S );NrN   ç®Gáz®ó?ç)\�Âõ(@rÎ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   rÜ   rÞ   rß   rá   râ   r   r•   rc   Úgeom©Úkindr³   ç      @rs   )r³   ry   rå   r  )g      Ð¿rä   ç      ü?ræ   Tr	  )r³   ry   rä   r	  r   )r  g)\�Âõ(Àç333333ã?c                 óD   •— ‰| dz
  dz  z  ‰|dz
  dz  z  z   ‰| z  |z  z   S )Nr‘   r   r7   ©r+   r,   r   r   r»   s     €€€r-   Úquadztest_triinterp.<locals>.quadÜ  s3   ø€ Ø�!�C‘%˜!‘‰|˜a  3¡¨¡
™lÑ*¨Q¨q©S°©UÑ2Ð2r/   c                 óH   •— d‰z  | dz
  z  ‰|z  z   d‰z  |dz
  z  ‰| z  z   fS )Nr   r‘   r7   r  s     €€€r-   Úgradient_quadz%test_triinterp.<locals>.gradient_quadß  s8   ø€ Ø�!‘�Q�s‘U‘˜a ™cÑ! 1 Q¡3¨¨#©¡;°°1±Ñ#4Ð5Ð5r/   )rù   ç&jjÙZÕ?çœÄ °rhå?rO   rP   rP   rO   )ç333333Ó?çHPüs×é?çX9´Èv¾Û?rO   rO   rP   rP   r   ©r   r   rN   ©rN   r   r   ©rN   r   rM   ©r   rM   r   ©rs   rM   r   ©rs   r   r   ©rs   r   r   rO   rP   rM   Úuser©r  Údzrn   r   rõ   rô   éd   )rQ   rR   r[   rT   rú   rU   r   r   ÚLinearTriInterpolatorÚCubicTriInterpolatorrS   r   r   r   Úmatestr‹   ÚgradientÚmeshgrid_trianglesÚabsrW   Údot)r+   r,   Úzr   r   rI   Úlinear_interpÚcubic_min_EÚ
cubic_geomrý   rþ   ÚinterpÚzsr  r  r  Ú
cubic_userÚ	interp_zsÚinterp_dzsdxÚinterp_dzsdyÚdzsdxÚdzsdyÚnÚdiff_linÚ
diff_cubicr   r   r»   s                            @@@r-   Útest_triinterpr6  ­  sŒ  øøø€ åŒ;•r”y ‘|”|¥R¤Y¨q¡\¤\Ñ2Ô2�D€A€qØ	�Š‰	Œ	€AØ	�Š‰	Œ	€AØˆQ‰��a‘‰€AØ��˜I˜I˜I y y y°)°)°)¸Y¸Y¸YØ��˜I˜I˜I y y y°)°)°)¸Z¸Z¸ZØ��˜[˜[˜[¨*¨*¨*°k°k°kÀ;À;À;Ø��˜|˜|˜|¨\¨\¨\ð;€Iõ Œ8•C˜	‘N”NÑ#Ô#€DØ€Dˆˆ2ˆ�JÝÔ  1 i°Ñ6Ô6€FÝÔ.¨v°qÑ9Ô9€MÝÔ+¨F°AÑ6Ô6€KÝÔ*¨6°1¸6ÐBÑBÔB€Jå	Œ�T˜4 Ñ	#Ô	#€BØ	!Ð	!Ð	!€BÝŒ[˜˜RÑ Ô �F€BˆØ  +¨zÐ:ð ;ð ;ˆØˆV�B˜‰^Œ^ˆÝ! " t¨B¡w°°b±Ñ'8Ñ:Ô:Ð:Ð:ð 
#Ð	"Ð	"€BØ	€BÝŒ[˜˜RÑ Ô �F€BˆØ  +¨zÐ:ð 2ð 2ˆØˆ]˜2˜rÑ"Ô"ˆÝ˜2œ7 d V¨A¡X J¨q¡LÑ1Ô1Ð1Ð1õ 
Œ�T˜4 Ñ	#Ô	#€BØ	!Ð	!Ð	!€BÝŒ[˜˜RÑ Ô �F€BˆØ  +¨zÐ:ð *ð *ˆØˆV�B˜‰^Œ^ˆÝÔ(¨¨d°2©g¸¸R¹Ñ.?ÑAÔAÐAØ�a’˜B !šGÑ$¨¨aªÑ0°B¸!²GÑ<ˆÝ˜2œ7 DÑ)Ô)Ð)Ð)ð
 #�I€Qˆˆ1ð3ð 3ð 3ð 3ð 3ð 3ð 3ð6ð 6ð 6ð 6ð 6ð 6ð 6õ 	ŒÐ6Ð6Ð6Ñ7Ô7€AÝ
ŒÐ7Ð7Ð7Ñ8Ô8€AÝ”˜)˜)˜) Y Y Y°	°	°	¸9¸9¸9Ø#˜)˜) Y Y Y°	°	°	¸9¸9¸9ðFñ Gô G€IåÔ  1 iÑ0Ô0€FØˆˆQ�‰
Œ
€AØ	ˆ�q˜!Ñ	Ô	€Bå	Œ�R˜˜QÑ	Ô	€BÝ	Œ�R˜˜QÑ	Ô	€BÝŒ[˜˜RÑ Ô �F€BˆÝÔ*¨6°1¸6ÀbÐIÑIÔI€JØ�
˜2˜rÑ"Ô"€IÝ˜i¨¨¨b°"©¬Ñ6Ô6Ð6Ø#-×#6Ò#6°q¸!Ñ#<Ô#<Ñ €\�<Ø"�] 1 aÑ(Ô(�N€UˆEÝ˜l¨EÑ2Ô2Ð2Ý˜l¨EÑ2Ô2Ð2ð 	€AÝŒ;•r”{ 2 r¨1¨Q©3Ñ/Ô/µ´¸RÀÀQÀqÁSÑ1IÔ1IÑJÔJ�D€A€qØ	�Š‰	Œ	€AØ	�Š‰	Œ	€AØˆˆQ�‰
Œ
€AÝÔ  1Õ0BÀ1ÀQÁ3Ñ0GÔ0GÐHÑHÔH€FÝŒ[�œ S¨#¨qÑ1Ô1µ2´;¸sÀCÈÑ3KÔ3KÑLÔL�F€BˆØ	�Š‰Œ€BØ	�Š‰Œ€BÝÔ.¨v°qÑ9Ô9€MÝÔ+¨F°AÑ6Ô6€KÝÔ*¨6°1¸6ÐBÑBÔB€JØ	ˆˆb�"‰Œ€BÝŒv�m�m B¨Ñ+Ô+¨bÑ0Ñ1Ô1€HØ 
Ð+ð 6ð 6ˆÝ”V˜F˜F 2 r™NœN¨RÑ/Ñ0Ô0ˆ
ÝŒv�hÑÔ 2­¬¨zÑ(:Ô(:Ñ#:Ò:Ð:Ð:Ð:Ý”�x Ñ*Ô*Ø•b”f˜Z¨Ñ4Ô4Ñ4ò5ð 5ð 5ð 5ð 5ð6ð 6r/   c                  óB  — dd„} d\  }}d\  }}d\  }}t          j        |||ddddg¦  «        }t          j        |||ddddg¦  «        }t          j        g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g¦  «        }	t          j        |||	¦  «        }
t	          d¦  «        D �]}t          j        dt           j        ¬¦  «        }t          j        dt           j        ¬¦  «        }t          j        dt           j        ¬¦  «        }t          j        ddgt           j        ¬¦  «        }|dz  }d|||dz  f<   |dk    rd||<   n|dk    r	d||dz  <   n|dk    rd||dz  <   t          j        |
|d||f¬¦  «        } | |||f|d d …df         ¦  «          | |||f|d d …df         ¦  «          | |||f|d d …df         ¦  «          | |||z   dz  ||z   dz  f¦  «          | |||z   dz  ||z   dz  f¦  «          | |||z   dz  ||z   dz  f¦  «          | |||z   |z   dz  ||z   |z   dz  f¦  «          | |d|z  |z   |z   dz  d|z  |z   |z   dz  f¦  «          | ||d|z  z   |z   dz  |d|z  z   |z   dz  f¦  «          | |||z   d|z  z   dz  ||z   d|z  z   dz  f¦  «         �Œd S )Nc           	      óÜ  — d}d}d}|\  }}||t          j        t          j        ddt           j        z  |¦  «        ¦  «        z  z   }||t          j        t          j        ddt           j        z  |¦  «        ¦  «        z  z   }	 | |g|g¦  «        d         }
|                      |g|g¦  «        \  }}|�Nt          |
|d         ¦  «         t          |d         |d         ¦  «         t          |d         |d         ¦  «          | ||	¦  «        |
z
  }|                      ||	¦  «        \  }}||z
  }||z
  }t          |||z  ¦  «         t          |||z  ¦  «         t          |||z  ¦  «         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@rO   r   r   Nr   )rQ   ÚcosrS   ÚpiÚsinr#  r   r   )ÚinterpolatorÚlocÚvaluesÚn_starÚepsilonr™   Úloc_xÚloc_yÚstar_xÚstar_yr'  ÚdzxÚdzyÚdiff_zÚtab_dzxÚtab_dzyÚdiff_dzxÚdiff_dzys                     r-   Úcheck_continuityz;test_triinterpcubic_C1_continuity.<locals>.check_continuity  s{  € ð ˆØˆØˆØ‰ˆ�Ø˜¥¤­¬°B¸½"¼%¹ÀÑ(HÔ(HÑ!IÔ!IÑIÑIˆØ˜¥¤­¬°B¸½"¼%¹ÀÑ(HÔ(HÑ!IÔ!IÑIÑIˆØˆL˜%˜ 5 'Ñ*Ô*¨1Ô-ˆØ!×*Ò*¨E¨7°U°GÑ<Ô<‰
ˆˆcØÐÝ% a¨°¬Ñ3Ô3Ð3Ý% c¨!¤f¨f°Q¬iÑ8Ô8Ð8Ý% c¨!¤f¨f°Q¬iÑ8Ô8Ð8Ø�˜f fÑ-Ô-°Ñ1ˆØ)×2Ò2°6¸6ÑBÔBÑˆ�'Ø˜S‘=ˆØ˜S‘=ˆÝ˜& '¨!¡)Ñ,Ô,Ð,Ý˜( G¨A¡IÑ.Ô.Ð.Ý˜( G¨A¡IÑ.Ô.Ð.Ð.Ð.r/   )rù   r  )r  r  )r  r  rO   rP   r   r  r  r  r  r  r  r  r”   rd   rÆ   r   r   r   r   r  r  r‘   rë   ç      @g      @ru   )rQ   r‹   r   r   Úrangerú   Úfloat64r!  )rN  r°   ÚayÚbxÚbyÚcxÚcyr+   r,   r   rI   Úidofr'  rG  rH  r@  Úcaser+  s                     r-   Ú!test_triinterpcubic_C1_continuityrY    s—  € ð/ð /ð /ð /ð> �H€RˆØ!�H€RˆØ�H€RˆÝ
Œ�"�b˜"˜b " b¨"Ð-Ñ.Ô.€AÝ
Œ�"�b˜"˜b " b¨"Ð-Ñ.Ô.€AÝ”˜)˜)˜) Y Y Y°	°	°	¸9¸9¸9Ø#˜)˜) Y Y Y°	°	°	¸9¸9¸9ðFñ Gô G€IåÔ  1 iÑ0Ô0€Få�a‘”ð Gñ GˆÝŒH�Q�bœjÐ)Ñ)Ô)ˆÝŒh�q¥¤
Ð+Ñ+Ô+ˆÝŒh�q¥¤
Ð+Ñ+Ô+ˆÝ”˜1˜a˜&­¬
Ð3Ñ3Ô3ˆØ�Q‰wˆØ!$ˆˆt�T˜A‘Xˆ~ÑØ�1Š9ˆ9ØˆAˆd‰GˆGØ�QŠYˆYØˆC��q‘‰MˆMØ�QŠYˆYØˆC��q‘‰MÝÔ*¨6°1¸6Ø/2°C¨jð:ñ :ô :ˆð 	Ð˜ " b ¨6°!°!°!°Q°$¬<Ñ8Ô8Ð8ØÐ˜ " b ¨6°!°!°!°Q°$¬<Ñ8Ô8Ð8ØÐ˜ " b ¨6°!°!°!°Q°$¬<Ñ8Ô8Ð8àÐ˜ 2 b¡5¨#¡+°°2±°s©{Ð!;Ñ<Ô<Ð<ØÐ˜ 2 b¡5¨#¡+°°2±°s©{Ð!;Ñ<Ô<Ð<ØÐ˜ 2 b¡5¨#¡+°°2±°s©{Ð!;Ñ<Ô<Ð<àÐ˜ 2 b¡5¨¡8¨R¡-°"°R±%¸±(¸B±Ð!?Ñ@Ô@Ð@àÐ˜ 2 b¡5¨¡8¨B¡;°Ñ"2°R¸±U¸2±X¸b±[À"Ñ4DÐ!EÑFÔFÐFØÐ˜ 2 b¨¡e¡8¨B¡;°Ñ"2°R¸¸2¹±X¸b±[À"Ñ4DÐ!EÑFÔFÐFØÐ˜ 2 b¡5¨¨B©¡;°Ñ"2°R¸±U¸2¸b¹5±[À"Ñ4DÐ!EÑFÔFÐFÑFð9Gð Gr/   c            	      óÐ  — d„ } d\  }}t          j        j         | ||¦  «        Ž }|                     ¦   «          |                     ¦   «         }t          ||z  ¦  «        D ]ˆ}t          j        ||z  t          j        ¬¦  «        }d||<   t           j         	                    ||t          j        ||z  ¦  «        d¬¦  «        \  }}t          t          j        ||¦  «        |¦  «         Œ‰d\  }	}
 | ||¦  «        \  }}}}|d||	k    z  z   d||
k    z  z   }|d||	k    z  z   d||
k    z  z   }t          j        ||	|	dz
  |
|
dz
  gg¦  «        }t          j        ||	dz
  |	|
dz
  |
gg¦  «        }t          j        |g d	¢g¦  «        }t           j                             |||||z  d
z   ||z  d
z   f¦  «        }|                     ¦   «          |                     ¦   «         }t          ||z  d
z   ¦  «        D ]Ž}t          j        ||z  d
z   t          j        ¬¦  «        }d||<   t           j         	                    ||t          j        ||z  d
z   ¦  «        d¬¦  «        \  }}t          t          j        ||¦  «        |¦  «         Œ�t          j        dt          j        ¬¦  «        }t          j        g d¢t          j        ¬¦  «        }t          j        g d¢t          j        ¬¦  «        }d}t           j                             ||||¦  «        }|                     ¦   «          |                     ¦   «         }t          |t          j        g d¢g d¢g d¢gt          j        ¬¦  «        ¦  «         d S )Nc                 óø  — || z  }t          j        t          j        |t           j        ¬¦  «        t          j        |dz
  t           j        ¬¦  «        t          j        d|t           j        ¬¦  «        t          j        || z
  t           j        ¬¦  «        t          j        | |t           j        ¬¦  «        g¦  «        }t          j        t          j        |t           j        ¬¦  «        t          j        d|t           j        ¬¦  «        t          j        |dz
  t           j        ¬¦  «        t          j        | |t           j        ¬¦  «        t          j        || z
  t           j        ¬¦  «        g¦  «        }t          j        dt          j        |t           j        ¬¦  «        z  t          j        |dz
  t           j        ¬¦  «         t          j        |dz
  t           j        ¬¦  «         t          j        || z
  t           j        ¬¦  «         t          j        || z
  t           j        ¬¦  «         g¦  «        }d||d|z  dz
  …         |dz
  d|…<   d|d|z  dz
  d|z  dz
  …         |dz
  d|…<   |||| |z  | |z  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   rN   rO   r   Nr   )rQ   Úconcatenater[   rÈ   ÚonesrQ  )r3  ÚmÚlÚrowsÚcolsÚvalss         r-   Úpoisson_sparse_matrixz<test_triinterpcubic_cg_solver.<locals>.poisson_sparse_matrixf  s)  € ð ˆa‰CˆÝŒ~ÝŒI�a�rœxÐ(Ñ(Ô(ÝŒI�a˜‘c¥¤Ð*Ñ*Ô*­B¬I°a¸Å"Ä(Ð,KÑ,KÔ,KÝŒI�a˜‘c¥¤Ð*Ñ*Ô*­B¬I°a¸Å"Ä(Ð,KÑ,KÔ,KðMñ Nô Nˆõ Œ~ÝŒI�a�rœxÐ(Ñ(Ô(ÝŒI�a˜¥"¤(Ð+Ñ+Ô+­R¬Y°q¸±sÅ"Ä(Ð-KÑ-KÔ-KÝŒI�a˜¥"¤(Ð+Ñ+Ô+­R¬Y°q¸±sÅ"Ä(Ð-KÑ-KÔ-KðMñ Nô Nˆõ Œ~Ø�bŒg�a�rœzÐ*Ñ*Ô*Ñ*ÝŒW�Q�q‘S¥¤
Ð+Ñ+Ô+Ð+­b¬g°a¸±cÅÄÐ.LÑ.LÔ.LÐ-LÝŒW�Q�q‘S¥¤
Ð+Ñ+Ô+Ð+­b¬g°a¸±cÅÄÐ.LÑ.LÔ.LÐ-LðNñ Oô Oˆð
 !#ˆˆQˆq�‰s�1‰uˆWŒ�a˜‘c�f˜1�fÑØ$&ˆˆQˆq‰S�‰U�1�Q‘3�q‘5ˆ[Ô˜!˜A™#˜&˜q˜&Ñ!Ø�T˜4 ! A¡# q¨¡s Ð+Ð+r/   )rÛ   rN   rÆ   rP   r:  )ÚAr   Úx0Útol)rÛ   é1   r   )rP   rP   rP   rP   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   )rP   ro   rO   )ro   rP   ç      @)rO   rh  rP   )r   Ú_triinterpolateÚ_Sparse_Matrix_cooÚcompress_cscÚto_denserP  rQ   rú   rQ  Ú_cgr   r&  r\  r]  r‹   rÈ   )rc  r3  r^  ÚmatÚ	mat_denseÚitestr   r+   Ú_Úi_zeroÚj_zerorb  r`  ra  Údims                  r-   Útest_triinterpcubic_cg_solverru  b  s¤  € ð,ð ,ð ,ð2 �F€QˆÝ
Ô
Ô
1Ð3HÐ3HÈÈAÑ3NÔ3NÐ
O€CØ×ÒÑÔÐØ—’‘”€Iå�q˜‘s‘”ð ;ð ;ˆÝŒH�Q�q‘S¥¤
Ð+Ñ+Ô+ˆØˆˆ%‰ÝÔ#×'Ò'¨#°µr´xÀÀ!Á±}´}Ø,2ð (ñ 4ô 4‰ˆˆ1å!¥"¤&¨°AÑ"6Ô"6¸Ñ:Ô:Ð:Ð:ð  Ñ€VˆVØ/Ð/°°1Ñ5Ô5Ñ€Dˆ$��aØ�!�T˜V’^Ñ$Ñ$ q¨$°&ª.Ñ'9Ñ9€DØ�!�T˜V’^Ñ$Ñ$ q¨$°&ª.Ñ'9Ñ9€DåŒ>˜4 &¨&°©(°F¸FÀ1¹HÐ!EÐFÑGÔG€DÝŒ>˜4 &¨¡(¨F°F¸1±H¸fÐ!EÐFÑGÔG€DÝŒ>˜4Ð!1Ð!1Ð!1Ð2Ñ3Ô3€DÝ
Ô
×
1Ò
1°$¸¸dØ34°Q±3¸±7¸A¸a¹CÀ!¹GÐ2DñFô F€Cà×ÒÑÔÐØ—’‘”€Iå�q˜‘s˜Q‘w‘”ð ;ð ;ˆÝŒH�Q�q‘S˜1‘W¥B¤JÐ/Ñ/Ô/ˆØˆˆ%‰ÝÔ#×'Ò'¨#°µr´w¸qÀ1¹uÀq¹yÑ7IÔ7IØ,2ð (ñ 4ô 4‰ˆˆ1å!¥"¤&¨°AÑ"6Ô"6¸Ñ:Ô:Ð:Ð:õ Œ7�2�RœZÐ(Ñ(Ô(€DÝŒ8ÐGÐGÐGÝœ(ð$ñ $ô $€DåŒ8ÐGÐGÐGÝœ(ð$ñ $ô $€Dà
€CÝ
Ô
×
1Ò
1°$¸¸dÀCÑ
HÔ
H€CØ×ÒÑÔÐØ—’‘”€IÝ˜i­¬Øˆˆ�l�l�l L L Lð32Ý9;¼ð*Eñ *Eô *Eñ Fô Fð Fð Fð Fr/   c                  ó.  — d\  } }t          j        | d| z  ddg¦  «        }t          j        || ddg¦  «        }t          j        dt           j        ¬¦  «        }g d¢g d¢g}t          j        dd	g¦  «        }t          j        dd	t           j        z  d
¦  «        D �]x}t          j        |¦  «        |z  t          j        |¦  «        |z  z   }t          j        |¦  «         |z  t          j        |¦  «        |z  z   }	t          j	        ||	|¦  «        }
t          j
        |
|d¬¦  «        }t          j                             |¦  «        }|                     ¦   «         }t          j        |d¦  «        dz
  |dd d …f<   t          d¦  «        D ]1}t          j        |d¦  «        d	|d d …|f         z  z
  ||dz   d d …f<   Œ2t!          t          j        t          j        |¦  «        d¬¦  «        t          j        ddgt           j        ¬¦  «        ¦  «         �Œzd S )N)rO   gË¡E¶óýú?r‘   rO   rP   rN   rÆ   r   rø   r   rà   r  r  r   r   r   r–   )rQ   r‹   rú   rQ  rS   r<  r;  r=  r   r   r!  ri  Ú_DOF_estimator_geomÚcompute_geom_weightsr‰   rP  r   rV   r%  )r°   rR  r+   r,   r'  r   Úsum_wÚthetaÚx_rotÚy_rotrI   r*  Údof_estimatorÚweightsÚitris                  r-   Ú test_triinterpcubic_geom_weightsr€  °  s	  € ð
 �H€RˆÝ
Œ�"�c˜"‘f˜b "Ð%Ñ&Ô&€AÝ
Œ�"�r�c˜2˜rÐ"Ñ#Ô#€AÝ
Œ��"œ*Ð%Ñ%Ô%€AØ��˜I˜I˜IÐ&€IÝŒH�a˜�VÑÔ€EÝ”˜R ¥2¤5¡¨"Ñ-Ô-ð Hñ HˆÝ”�u‘”˜a‘¥"¤&¨¡-¤-°¡/Ñ1ˆÝ”˜‘”�˜qÑ ¥2¤6¨%¡=¤=°¡?Ñ2ˆÝÔ# E¨5°)Ñ<Ô<ˆÝÔ.¨v°q¸vÐFÑFÔFˆ
ÝÔ,×@Ò@ÀÑLÔLˆØ×4Ò4Ñ6Ô6ˆå”f˜W aÑ(Ô(¨1Ñ,ˆˆa���ˆd‰Ý˜!‘H”Hð 	Gð 	GˆDÝ!œv g¨qÑ1Ô1°A°g¸a¸a¸aÀ¸gÔ6FÑ4FÑFˆE�$�q‘&˜!˜!˜!�)ÑÐÝ!¥"¤&­¬°©¬¸QÐ"?Ñ"?Ô"?Ý"$¤(¨B°¨8½2¼:Ð"FÑ"FÔ"Fñ	Hô 	Hð 	Hñ 	HðHð Hr/   c                  ó  — d} t          j        g d¢¦  «        }t          j        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         |z  |d         |z  z   }|d          |z  |d         |z  z   }||}}d|z  d	|z  z
  }	g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}
t          j        |||
¦  «        }t          j        t          j        |j        ¦  «        t          j        |j        ¦  «        d¦  «        }t          j        t          j        |j        ¦  «        t          j        |j        ¦  «        d¦  «        }t          j	        ||¦  «        \  }}| 
                    ¦   «         }| 
                    ¦   «         } |                     ¦   «         ||¦  «        dk    }t           j                             d|z  d	|z  z
  |¬¦  «        }t          j        ||	¦  «        }t          j        ||	¦  «        }t          j        ||	d¬¦  «        }|||fD ]} |||¦  «        }t          ||¦  «         Œd}|j        |df         }|j        |df         }t          j        |j        |         |j        |         d¦  «        }t          j        |j        |         |j        |         d¦  «        }d|z  d	|z  z
  }|||fD ]M}|                     |||t          j        dt           j        ¬¦  «        z  ¬¦  «        \  }t          ||¦  «         ŒN�ŒÂd S )NrO   rì   r   r   r   r   éþÿÿÿr  r  r9   rí   rî   rÐ   rï   rð   rñ   rò   é   r   r  r  rN   rc   rÆ   )Ú	tri_index)rQ   r‹   r   r   rS   rV   r+   rW   r,   rR   rT   rû   Úmar   r!  r   r   Ú_interpolate_multikeysr]  rÈ   )r   re  Úy0ÚtransformationsÚtransformationr{  r|  r+   r,   r'  r   rI   rý   rþ   Úmask_outÚ	zs_targetr(  r)  r*  r+  r,  r  Úpt1Úpt2s                           r-   Útest_triinterp_colinearrŽ  Ê  sI  € ð €Eå	ŒÐ1Ð1Ð1Ñ	2Ô	2€BÝ	Œ�2˜˜A  1 e¨QÐ/Ñ	0Ô	0€Bð ˜1�v  1˜v¨¨1 v°°1¨v¸¸B°xÀ"ÀaÀÐI€OØ)ð #5ñ #5ˆØ˜qÔ! "Ñ$ ~°aÔ'8¸Ñ';Ñ;ˆØ Ô"Ð" 2Ñ%¨°qÔ(9¸"Ñ(<Ñ<ˆØ˜ˆAˆØ�‰F�T˜!‘V‰OˆØ�Y�Y 	 	 	¨9¨9¨9°i°i°iÀÀÀØ�Y�Y 	 	 	¨9¨9¨9ð6ˆ	åÔ# A q¨)Ñ4Ô4ˆÝŒ[�œ ¤Ñ)Ô)­2¬6°&´(Ñ+;Ô+;¸RÑ@Ô@ˆÝŒ[�œ ¤Ñ)Ô)­2¬6°&´(Ñ+;Ô+;¸RÑ@Ô@ˆÝ”˜R Ñ$Ô$‰ˆˆBØ�XŠX‰ZŒZˆØ�XŠX‰ZŒZˆØ*�F×(Ò(Ñ*Ô*¨2¨rÑ2Ô2°bÒ8ˆÝ”E—K’K  R¡¨$¨r©'Ñ 1¸�KÑAÔAˆ	åÔ2°6¸1Ñ=Ô=ˆÝÔ/°¸Ñ:Ô:ˆÝÔ.¨v°q¸vÐFÑFÔFˆ
à$ k°:Ð>ð 	5ð 	5ˆFØ�˜˜B‘”ˆBÝ% i°Ñ4Ô4Ð4Ð4ð ˆØÔ˜t Q˜wÔ'ˆØÔ˜t Q˜wÔ'ˆÝŒ[˜œ #œ¨¬°¬°rÑ:Ô:ˆÝŒ[˜œ #œ¨¬°¬°rÑ:Ô:ˆØ˜‘G˜d 2™gÑ%ˆ	Ø$ k°:Ð>ð 	5ð 	5ˆFØ×/Ò/Ø�B $¥r¤w¨r½¼Ð'BÑ'BÔ'BÑ"Bð 0ñ Dô D‰CˆBå% i°Ñ4Ô4Ð4Ð4ñ	5ðA#5ð #5r/   c                  ó˜  — d} d}d}d„ }t          j        |d|¦  «        }t          j        d| z   dt           j        z  | z   | d¬	¦  «        }t          j        |d
t           j        f         |d¬¦  «        }|d d …dd d…fxx         t           j        | z  z  cc<   |t          j        |¦  «        z                       ¦   «         }|t          j        |¦  «        z                       ¦   «         }t          j	        ||¦  «        } |||¦  «        }	t          j        ddd¦  «        }
t          j        ddd¦  «        }t          j
        |
|¦  «        \  }
}|
                     ¦   «         }
|                     ¦   «         }i }t          d¦  «        D �]‚}dt           j        z  | z  |z  }t          j        |¦  «        |z  t          j        |¦  «        |z  z   }t          j        |¦  «         |z  t          j        |¦  «        |z  z   }t          j        |¦  «        |
z  t          j        |¦  «        |z  z   }t          j        |¦  «         |
z  t          j        |¦  «        |z  z   }t          j	        |||j        ¦  «        }t          j        ||	¦  «        }t          j        ||	¦  «        }t          j        ||	d¬¦  «        }|||dœ}dD ]G}||         }|dk    r ||
|¦  «        ||<   Œ  |||¦  «        }t!          j        |||         ¦  «         ŒH�Œ„d}dD ]¹}|dk    r||z  }|}||
z  }|}n|}||z  }|
}||z  }t          j	        |||j        ¦  «        }t          j        ||	¦  «        }t          j        ||	¦  «        }t          j        ||	d¬¦  «        }|||dœ}dD ]/} ||         ||¦  «        }t!          j        |||         ¦  «         Œ0Œºd S )Nrƒ  rc   ç333333Ã?c                 ól  — t          j        d| z
  d|z
  ¦  «        }t          j        d| z
  d|z
  ¦  «        }t          j        |  dz
  | dz
  ¦  «        }t          j        |  dz
  | dz
  ¦  «        }dt          j        |dz  dz  ¦  «        dz
  z  dz  t          j        d|z  ¦  «        z  t          j        |dz  dz  ¦  «        dz
  dz  t          j        d|z  ¦  «        z  z   d	| dz  |dz  z   z  z    }t          j        |¦  «        |z
  t          j        |¦  «        t          j        |¦  «        z
  z  S ©
Nr‘   rù   r   rc   r   g      >@ç      @g      &@rx   ©rQ   ÚhypotÚarctan2Úexpr;  rW   rV   ©r+   r,   Úr1Útheta1Úr2Útheta2r'  s          r-   r'  z)test_triinterp_transformations.<locals>.z  ó*  € ÝŒX�c˜A‘g˜s Q™wÑ'Ô'ˆÝ”˜C !™G S¨1¡WÑ-Ô-ˆÝŒX�q�b˜3‘h   S¡Ñ)Ô)ˆÝ”˜Q˜B ™H q b¨3¡hÑ/Ô/ˆØ•”˜˜B™ ™
Ñ#Ô# AÑ%Ñ& sÑ*­R¬V°B°v±IÑ->Ô->Ñ>ÝŒv�r˜"‘u˜q‘jÑ!Ô! !Ñ# SÑ(­2¬6°#°f±*Ñ+=Ô+=Ñ=ñ>à�1�a‘4˜!˜Q™$‘;Ññ ð !ˆõ ”�q‘	”	˜!‘�bœf Q™iœi­¬¨q©	¬	Ñ1Ñ2Ð2r/   çffffffî?r   r   F©Úendpoint.r   r–   ç      ð¿rP   re   r  r  )ÚlinÚmin_Er  g¬Z¤$.ArD   r+   )rQ   rS   r<  ÚrepeatÚnewaxisr;  Úflattenr=  r   r   rR   rT   rP  r   r   r!  r"  r   )Ún_anglesÚn_radiiÚ
min_radiusr'  ÚradiiÚanglesre  r‡  Útriang0Úz0Úxs0Úys0Ú	interp_z0Úi_anglerz  r+   r,   rý   rþ   rI   r(  r)  r*  Ú
dic_interpÚ
interp_keyr+  ÚinterpzÚscale_factorÚscaled_axiss                                r-   Útest_triinterp_transformationsr·    s*  € ð €HØ€GØ€Jð3ð 3ð 3õ ŒK˜
 D¨'Ñ2Ô2€EÝŒ[˜˜X™ q­¬¡w°Ñ'9Ø!¨Eð3ñ 3ô 3€FåŒY�v˜c¥2¤:˜oÔ.°¸aÐ@Ñ@Ô@€FØ
ˆ1ˆ1ˆ1ˆaˆd�ˆdˆ7€O€O„O•r”u˜X‘~Ñ%€O€O�OØ
•”�v‘”Ñ
×	'Ò	'Ñ	)Ô	)€BØ
•”�v‘”Ñ
×	'Ò	'Ñ	)Ô	)€BÝÔ   RÑ(Ô(€GØ	
ˆˆ2ˆr‰Œ€Bõ Œ+�c˜2˜rÑ
"Ô
"€CÝ
Œ+�c˜2˜rÑ
"Ô
"€CÝŒ{˜3 Ñ$Ô$�H€CˆØ
�)Š)‰+Œ+€CØ
�)Š)‰+Œ+€Cà€IÝ˜‘8”8ð Hñ Hˆà•"”%‘˜(Ñ" WÑ,ˆÝŒF�5‰MŒM˜"Ñ�rœv e™}œ}¨RÑ/Ñ/ˆÝŒV�E‰]Œ]ˆN˜2Ñ¥¤ u¡¤¨bÑ 0Ñ0ˆÝŒV�E‰]Œ]˜3Ñ¥¤¨¡¤¨sÑ!2Ñ2ˆÝŒf�U‰mŒmˆ^˜CÑ¥"¤&¨¡-¤-°Ñ"3Ñ3ˆÝÔ# A q¨'Ô*;Ñ<Ô<ˆÝÔ2°6¸2Ñ>Ô>ˆÝÔ/°¸Ñ;Ô;ˆÝÔ.¨v°rÀÐGÑGÔGˆ
Ø*Ø*Ø(ð*ð *ˆ
ð 3ð 	Hð 	HˆJØ 
Ô+ˆFØ˜!Š|ˆ|Ø(.¨¨s°CÑ(8Ô(8�	˜*Ñ%Ð%à ˜&  R™.œ.�ÝÔ0°Ø1:¸:Ô1FñHô Hð Hð Hñ	Hð €LØ!ð Mð Mˆà˜#ÒÐØ˜rÑ!ˆAØˆAØ Ñ#ˆBØˆBˆBàˆAØ˜rÑ!ˆAØˆBØ Ñ#ˆBÝÔ# A q¨'Ô*;Ñ<Ô<ˆÝÔ2°6¸2Ñ>Ô>ˆÝÔ/°¸Ñ;Ô;ˆÝÔ.¨v°rÀÐGÑGÔGˆ
Ø*Ø*Ø(ð*ð *ˆ
ð 3ð 	Mð 	MˆJØ,�j Ô,¨R°Ñ4Ô4ˆGÝÔ,¨W°iÀ
Ô6KÑLÔLÐLÐLð	Mð)Mð Mr/   ztri_smooth_contouring.pngTg;ßO�—n²?)Úremove_textrf  c                  óÔ  — d} d}d}d„ }t          j        |d|¦  «        }t          j        d| z   dt           j        z  | z   | d¬	¦  «        }t          j        |d
t           j        f         |d¬¦  «        }|d d …dd d…fxx         t           j        | z  z  cc<   |t          j        |¦  «        z                       ¦   «         }|t          j        |¦  «        z                       ¦   «         }t          j	        ||¦  «        } |||¦  «        }	| 
                    t          j        ||j                                      d¬¦  «        ||j                                      d¬¦  «        ¦  «        |k     ¦  «         t          j        |¦  «        }
|
                     |	d¬¦  «        \  }}t          j        ddd¦  «        }t#          j        |dd¬¦  «         t#          j        |||d¬¦  «         d S )Nrƒ  rc   r�  c                 ól  — t          j        d| z
  d|z
  ¦  «        }t          j        d| z
  d|z
  ¦  «        }t          j        |  dz
  | dz
  ¦  «        }t          j        |  dz
  | dz
  ¦  «        }dt          j        |dz  dz  ¦  «        dz
  z  dz  t          j        d|z  ¦  «        z  t          j        |dz  dz  ¦  «        dz
  dz  t          j        d|z  ¦  «        z  z   d	| dz  |dz  z   z  z    }t          j        |¦  «        |z
  t          j        |¦  «        t          j        |¦  «        z
  z  S r’  r”  r˜  s          r-   r'  z%test_tri_smooth_contouring.<locals>.zl  r�  r/   rž  r   r   FrŸ  .r   r–   rN   ©ÚsubdivrO   rP   gš™™™™™™?r‘   z0.5)ÚlwÚcolorÚblack)ÚlevelsÚcolors)rQ   rS   r<  r¤  r¥  r;  r¦  r=  r   r   rH   r•  r   r�   ÚUniformTriRefinerÚrefine_fieldr[   rž   ÚtriplotÚ
tricontour)r§  r¨  r©  r'  rª  r«  re  r‡  r¬  r­  ÚrefinerÚtri_refiÚz_test_refirÀ  s                 r-   Útest_tri_smooth_contouringrÉ  e  sì  € ð €HØ€GØ€Jð3ð 3ð 3õ ŒK˜
 D¨'Ñ2Ô2€EÝŒ[˜˜X™ q­¬¡w°Ñ'9Ø!¨Eð3ñ 3ô 3€FåŒY�v˜c¥2¤:˜oÔ.°¸aÐ@Ñ@Ô@€FØ
ˆ1ˆ1ˆ1ˆaˆd�ˆdˆ7€O€O„O•r”u˜X‘~Ñ%€O€O�OØ
•”�v‘”Ñ
×	'Ò	'Ñ	)Ô	)€BØ
•”�v‘”Ñ
×	'Ò	'Ñ	)Ô	)€BÝÔ   RÑ(Ô(€GØ	
ˆˆ2ˆr‰Œ€BØ×Ò•R”X˜b Ô!2Ô3×8Ò8¸aÐ8Ñ@Ô@Ø  Ô!2Ô3×8Ò8¸aÐ8Ñ@Ô@ñBô Bà!ò"ñ #ô #ð #õ
 Ô$ WÑ-Ô-€GØ#×0Ò0°¸AÐ0Ñ>Ô>Ñ€HˆkÝŒY�r˜2˜uÑ%Ô%€FÝ„K�˜C uÐ-Ñ-Ô-Ð-Ý„N�8˜[°ÀÐHÑHÔHÐHÐHÐHr/   ztri_smooth_gradient.pnggZd;ßO�·?c                  ó\  — d„ } d}d}d}t          j        |d|¦  «        }t          j        ddt           j        z  |d¬	¦  «        }t          j        |d
t           j        f         |d¬¦  «        }|d d …dd d…fxx         t           j        |z  z  cc<   |t          j        |¦  «        z                       ¦   «         }|t          j        |¦  «        z                       ¦   «         } | ||¦  «        }t          j	        ||¦  «        }	|	 
                    t          j        ||	j                                      d¬¦  «        ||	j                                      d¬¦  «        ¦  «        |k     ¦  «         t          j        |	¦  «        }
|
                     |d¬¦  «        \  }}t          j        |	| ¦  «        }|                     |	j        |	j        ¦  «        \  }}t          j        ||¦  «        }t)          j        ¦   «          t)          j        ¦   «                              d¦  «         t)          j        |	d¬¦  «         t          j        ddd¦  «        }t4          j        d         }t)          j        ||||g d¢¬¦  «         t)          j        |	j        |	j        ||z  ||z  ddddddd¬¦  «         d S )Nc                 óò   — | dz  |dz  z   }t          j        || ¦  «        }t          j        |¦  «        |z  }t          j        |¦  «        |z
  t          j        |¦  «        t          j        |¦  «        z
  z  S )zAn electric dipole potential V.r   )rQ   r–  r;  rW   rV   )r+   r,   Úr_sqrz  r'  s        r-   Údipole_potentialz2test_tri_smooth_gradient.<locals>.dipole_potential�  sb   € à�!‰t�a˜‘d‰{ˆÝ”
˜1˜aÑ Ô ˆÝŒF�5‰MŒM˜$ÑˆÝ”�q‘	”	˜!‘¥¤ q¡	¤	­"¬&°©)¬)Ñ 3Ñ4Ð4r/   é   rc   rù   rž  r   r   FrŸ  .r   r–   r   r»  Úequalz0.8)r¾  rO   rP   g{®Gáz„?Úhot)ro   rP   rP   rP   )rÀ  ÚcmapÚ
linewidthsr�   rm   Úbluegyé&1¬|?rë   rO  )ÚunitsÚscaleÚzorderr¾  ÚwidthÚ	headwidthÚ
headlength)rQ   rS   r<  r¤  r¥  r;  r¦  r=  r   r   rH   r•  r   r�   rÂ  rÃ  r!  r#  r+   r,   rž   r¶   ÚgcaÚ
set_aspectrÄ  r[   ÚmplÚ	colormapsrÅ  Úquiver)rÍ  r§  r¨  r©  rª  r«  r+   r,   ÚVrI   rÆ  rÇ  rÈ  ÚtciÚExÚEyÚE_normrÀ  rÑ  s                      r-   Útest_tri_smooth_gradienträ  Œ  s   € ð5ð 5ð 5ð €HØ€GØ€JÝŒK˜
 D¨'Ñ2Ô2€EÝŒ[˜˜A�bœe™G X¸Ð>Ñ>Ô>€FÝŒY�v˜c¥2¤:˜oÔ.°¸aÐ@Ñ@Ô@€FØ
ˆ1ˆ1ˆ1ˆaˆd�ˆdˆ7€O€O„O•r”u˜X‘~Ñ%€O€O�OØ	�rŒv�f‰~Œ~Ñ	×&Ò&Ñ(Ô(€AØ	�rŒv�f‰~Œ~Ñ	×&Ò&Ñ(Ô(€AØÐ˜˜AÑÔ€AÝÔ  1Ñ%Ô%€FØ
‡O‚O•B”H˜Q˜vÔ/Ô0×5Ò5¸1Ð5Ñ=Ô=Ø˜vÔ/Ô0×5Ò5¸1Ð5Ñ=Ô=ñ?ô ?à ò!ñ "ô "ð "õ
 Ô$ VÑ,Ô,€GØ#×0Ò0°¸1Ð0Ñ=Ô=Ñ€Hˆkõ Ô
# F¨Q¨BÑ
/Ô
/€CØ�\Š\˜&œ( F¤HÑ-Ô-�F€BˆÝŒX�b˜"ÑÔ€Fõ „J�L„L€LÝ„G�I„I×Ò˜Ñ!Ô!Ð!Ý„K�˜eÐ$Ñ$Ô$Ð$åŒY�r˜2˜tÑ$Ô$€FÝŒ=˜Ô€DÝ„N�8˜[°¸dØ2Ð2Ð2ð4ñ 4ô 4ð 4õ „JˆvŒx˜œ 2 f¡9¨b°©iØ ¨Q°fØ b°Rð9ñ 9ô 9ð 9ð 9ð 9r/   c                  ó|  — t          j        g d¢¦  «        } t          j        dddt          j        d¦  «        z  ddg¦  «        }t          j        g d¢g d¢g d	¢gt           j        ¬
¦  «        }t          j        g d¢t          ¬
¦  «        }t          j        | |||¬¦  «        }t          j        |¦  «        }t          |j	        ddg¦  «         t          | 
                    d¬¦  «        t           j                             dddt          j        d¦  «        z   z  t           j        g|¦  «        ¦  «         t          j        g d¢¦  «        } t          j        g d¢¦  «        }t          j        g d¢gt           j        ¬
¦  «        }t          j        | ||¦  «        }t          j        |¦  «        }t          | 
                    ¦   «         t          j        dg¦  «        ¦  «         d}d„ }t          j        dd|dz   ¦  «        } t          j         || d¦  «         || d¦  «        ¦  «        \  } }|                      ¦   «         } |                     ¦   «         }t          j        | |t#          |dz   ¦  «        ¬¦  «        }t          j        |¦  «        }|                     d¦  «        }t          j        dt          ¬
¦  «        }	g d¢}
d|	|
<   t)          ||	¦  «         t          j        dt          ¬
¦  «        }d|d<   |                     |¦  «         |                     d¦  «        }g d¢}d|	|<   t)          ||	¦  «         d S )N©rO   rP   r‘   rO   ro   rO   r‘   rë   r¡  rP   r   r’   r“   rÆ   ©FFTr   r   gVÍž^&á?F)Úrescalero   )rO   rP   ro   )rP   rO  r“  r”   c                 óZ   — t          j        | ¦  «        |z  t          j        | ¦  «        z  S ru   )rQ   r%  Úsign)r+   r   s     r-   Úpowerztest_tritools.<locals>.powerÝ  s!   € ÝŒv�a‰yŒy˜!‰|�BœG A™JœJÑ&Ð&r/   r³   r   rù   é¢   )r   r   r   r   rà   rã   rç   rè   é   é   é"   é#   é~   é   éŽ   é�   é�   é‘   é’   é“   éž   éŸ   é    é¡   TéP   )é,   é-   é>   é?   éN   éO   rý  éQ   éR   éS   éb   r@   ét   éu   )rQ   r‹   ÚsqrtrÈ   Úboolr   r   ÚTriAnalyzerr   Úscale_factorsÚcircle_ratiosr…  Úmasked_arrayÚnanrS   rR   rT   r$  Úget_flat_tri_maskrú   r   rH   )r+   r,   r   r   rI   Úanalyserr3  rë  Ú	mask_flatÚ
verif_maskÚcorners_indexÚcenter_indexs               r-   Útest_tritoolsr  Á  s  € õ 	ŒÐ&Ð&Ð&Ñ'Ô'€AÝ
Œ�"�b˜#�bœg b™kœk™/¨3°Ð3Ñ4Ô4€AÝ”˜)˜)˜) Y Y Y°	°	°	Ð:Å"Ä(ÐKÑKÔK€IÝŒ8Ð(Ð(Ð(µÐ5Ñ5Ô5€DÝÔ  1 i°dÐ;Ñ;Ô;€FÝÔ Ñ'Ô'€HÝ˜hÔ4°q¸-Ð6HÑIÔIÐIÝØ×Ò uÐÑ-Ô-Ý
Œ×Ò˜C  R­¬°©¬¡^Ñ!4µb´fÐ=¸tÑDÔDñFô Fð Fõ
 	Œ���ÑÔ€AÝ
ŒÐ#Ð#Ð#Ñ$Ô$€AÝ”˜)˜)˜)˜­B¬HÐ5Ñ5Ô5€IÝÔ  1 iÑ0Ô0€FÝÔ Ñ'Ô'€HÝ˜h×4Ò4Ñ6Ô6½¼À"À¹¼ÑGÔGÐGð 	
€Að'ð 'ð 'õ 	Œ�C˜˜Q˜q™SÑ!Ô!€AÝŒ;�u�u˜Q ‘|”| U U¨1¨d¡^¤^Ñ4Ô4�D€A€qØ	�Š‰	Œ	€AØ	�Š‰	Œ	€AåÔ  1Õ0BÀ1ÀQÁ3Ñ0GÔ0GÐHÑHÔH€FÝÔ Ñ'Ô'€HØ×*Ò*¨3Ñ/Ô/€IÝ”˜#¥TÐ*Ñ*Ô*€JðGð Gð G€Mà $€Jˆ}ÑÝ�y *Ñ-Ô-Ð-õ Œ8�C�tÐ$Ñ$Ô$€DØ€Dˆ�HØ
‡O‚O�DÑÔÐØ×*Ò*¨3Ñ/Ô/€IØMÐMÐM€LØ#€Jˆ|ÑÝ�y *Ñ-Ô-Ð-Ð-Ð-r/   c                  óò  — d} d}t          j        dd| dz   ¦  «        }t          j        ||¦  «        \  }}|                     ¦   «         }|                     ¦   «         }t          j        d| dz  z  t
          ¬¦  «        }d|| dz  d …<   t          j        ||t          | dz   ¦  «        |¬¦  «        }t          j	        |¦  «        }| 
                    |¬	¦  «        }|j        }|j        }	| |dz  z  }
t          j        dd|
dz   ¦  «        }t          j        ||¦  «        \  }}|                     ¦   «         }|                     ¦   «         }t          j        t          j        |d
|z   z  d¦  «        t          j        |d
|	z   z  d¦  «        ¦  «        }t          |d¦  «         |j        }t          j        |j        |j                 d¬¦  «        dz  }t          j        |j        |j                 d¬¦  «        dz  }|                     ¦   «         } |||¦  «        }|j        |         }t          ||¦  «         t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        ||g d¢g d¢g¦  «        t          j        ||g d¢g d¢g¦  «        g}t          j        |dz
  |dz
  ¦  «        }g }t-          d¦  «        D ]“}t          j	        ||         ¦  «        }|                     |d¬	¦  «        \  }}t          j        |j        |j        |f¦  «        d         }|t          j        |d d …df         |d d …df         f¦  «                 }||gz  }Œ”t5          |d         |d         ¦  «         d S )Nr   r   r¡  rP   r   rÆ   Tr   r»  rê   r•   r–   rë   ©rO   rP   rO   rP   ©rO   rO   rP   rP   r’   rÅ   ©r   r   r   r  r¾   r   )rQ   rS   rR   rT   rú   r  r   r   r$  rÂ  Úrefine_triangulationr+   r,   Úin1dÚaroundr   r   r‰   r   rû   rŒ   r•  rP  rÃ  ÚdstackÚlexsortr   )r3  r¼  r+   r,   r   rI   rÆ  Úrefi_triangÚx_refiÚy_refiÚn_refiÚx_verifÚy_verifÚind1dÚ	refi_maskÚrefi_tri_barycenter_xÚrefi_tri_barycenter_yÚ
tri_finderÚrefi_tri_indicesÚrefi_tri_maskr'  Úxyz_dataÚiÚrefined_triangÚ	refined_zÚxyzs                             r-   Útest_trirefiner3  ù  s†  € à	€AØ€FÝ
Œ�C˜˜Q˜q™SÑ!Ô!€AÝŒ;�q˜!ÑÔ�D€A€qØ	�Š‰	Œ	€AØ	�Š‰	Œ	€AÝŒ8�A�a˜‘d‘F¥$Ð'Ñ'Ô'€DØ€DˆˆA‰ˆˆ�KÝÔ  1Õ0BÀ1ÀQÁ3Ñ0GÔ0GØ%)ð+ñ +ô +€FåÔ$ VÑ,Ô,€GØ×.Ò.°fÐ.Ñ=Ô=€KØŒ]€FØŒ]€Fà�˜‘‰]€FÝŒk˜#˜r 6¨!¡8Ñ,Ô,€GÝ”{ 7¨GÑ4Ô4Ñ€GˆWØ�mŠm‰oŒo€GØ�mŠm‰oŒo€GÝŒG•B”I˜g s¨7¡{Ñ3°QÑ7Ô7Ý”I˜f c¨&¡jÑ1°1Ñ5Ô5ñ7ô 7€Eå�u˜dÑ#Ô#Ð#ð Ô €IÝœF ;¤=°Ô1FÔ#GØ()ð+ñ +ô +Ø-/ñ0ÐåœF ;¤=°Ô1FÔ#GØ()ð+ñ +ô +Ø-/ñ0Ðà×%Ò%Ñ'Ô'€JØ!�zÐ"7Ø"7ñ9ô 9Ðà”KÐ 0Ô1€MÝ�y -Ñ0Ô0Ð0õ 	Œ
Ð'Ð'Ð'Ñ(Ô(€AÝ
Œ
Ð'Ð'Ð'Ñ(Ô(€AÝÔ   A¨	¨	¨	°9°9°9Ð'=Ñ>Ô>ÝÔ   A¨	¨	¨	°9°9°9Ð'=Ñ>Ô>ð@€Få
Œ��S‘˜!˜c™'Ñ"Ô"€Aà€HÝ�1‰XŒXð ð ˆÝÔ(¨°¬Ñ3Ô3ˆØ$+×$8Ò$8¸À1Ð$8Ñ$EÔ$EÑ!ˆ˜	ÝŒi˜Ô)¨>Ô+;¸YÐGÑHÔHÈÔKˆØ•"”*˜c ! ! ! Q $œi¨¨Q¨Q¨Q°¨T¬Ð3Ñ4Ô4Ô5ˆØ�S�EÑˆˆÝ˜h qœk¨8°A¬;Ñ7Ô7Ð7Ð7Ð7r/   r>  ÚlinearÚcubic)Úidsc                 óš  — t           j        d d…d d…f         \  }}t          j        |                     ¦   «         d¦  «        }t          j        |                     ¦   «         d¦  «        }t          j        |¦  «        }t          j        ||¦  «        }t          j        |¦  «        } | ||¦  «        }|                     ||d¬¦  «         d S )Nr   )Útriinterpolatorr¼  )	rQ   Úmgridr¤  r¦  Ú
zeros_liker   r   rÂ  rÃ  )r>  r+   r,   r'  r‡   rÆ  r+  s          r-   Útest_trirefine_maskedr;  1  sµ   € õ Œ8�B�Q�B˜˜˜�FÔ�D€A€qÝ
Œ	�!—)’)‘+”+˜qÑ!Ô!€AÝ
Œ	�!—)’)‘+”+˜qÑ!Ô!€Aå
Œ�aÑÔ€AÝ
Ô
˜Q Ñ
"Ô
"€CÝÔ$ SÑ)Ô)€GØˆ\˜#˜qÑ!Ô!€FØ×Ò˜¨F¸1ÐÑ=Ô=Ð=Ð=Ð=r/   c                 ó  — g }t          | dz
  ¦  «        D ]P}t          | dz
  ¦  «        D ];}||| z  z   }|dz   || z  z   }||dz   | z  z   }|dz   |dz   | z  z   }||||g|||ggz  }Œ<ŒQt          j        |t          j        ¬¦  «        S )zU
    Return (2*(N-1)**2, 3) array of triangles to mesh (N, N)-point np.meshgrid.
    r   rÆ   )rP  rQ   r‹   rÈ   )r3  r‡   r/  Újr   r   r»   Úds           r-   r$  r$  C  sº   € ð €CÝ�1�Q‘3‰ZŒZð *ð *ˆÝ�q˜‘s‘”ð 	*ð 	*ˆAØ�A�a‘C‘ˆAØ�1‘˜˜!™‘ˆAØ�Q�q‘S˜!‘G‘ˆAØ�1‘˜˜1™˜a™‘ˆAØ�Q˜˜1�I  1 a˜yÐ)Ñ)ˆCˆCð	*õ Œ8�C�rœxÐ(Ñ(Ô(Ð(r/   c                  óÒ   — t          j        ¦   «                              ¦   «         } t          j        g d¢g d¢g d¢g d¢g¬¦  «        }|                      |d¦  «        €
J d¦   «         ‚d S )Nr  r  r’   rÅ   r   zb-z(triplot should return the artist it adds)rž   r¶   r·   r   r   rÄ  )r°   rI   s     r-   Útest_triplot_returnr@  R  s   € å	Œ‰Œ×	!Ò	!Ñ	#Ô	#€BÝÔØÐÐÐ2Ð2Ð2Ø�9�9˜i˜i˜iÐ(ð*ñ *ô *€Fð �:Š:�f˜dÑ#Ô#Ð/Ð/Ø2ñ 0Ô/Ð/Ð/Ð/r/   c                  óL  — t          j        g d¢g d¢g¦  «        } t          j        | ¦  «        rJ ‚t          j        | dd¬¦  «        }t          j        |¦  «        sJ ‚t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        ||| ¦  «        }t          j        |||¦  «        }t          j        |¦  «        }t          j        |¦  «        }|                     d¬	¦  «        }|                     d¬	¦  «        }	t          |j        |	j        ¦  «         d S )
Nr  )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»  )	rQ   r‹   Ú	isfortranr   r   rÂ  r  r   r   )
Ú
triangles1Ú
triangles2r+   r,   Útriang1Útriang2Úrefiner1Úrefiner2Úfine_triang1Úfine_triang2s
             r-   Ú,test_trirefiner_fortran_contiguous_trianglesrM  \  s  € õ ”˜9˜9˜9 i i iÐ0Ñ1Ô1€JÝŒ|˜JÑ'Ô'Ð'Ð'Ð'å”˜*¨4°sÐ;Ñ;Ô;€JÝŒ<˜
Ñ#Ô#Ð#Ð#Ð#å
ŒÐ)Ð)Ð)Ñ*Ô*€AÝ
ŒÐ-Ð-Ð-Ñ.Ô.€AÝÔ   A zÑ2Ô2€GÝÔ   A zÑ2Ô2€GåÔ% gÑ.Ô.€HÝÔ% gÑ.Ô.€Hà×0Ò0¸Ð0Ñ:Ô:€LØ×0Ò0¸Ð0Ñ:Ô:€Lå�|Ô-¨|Ô/EÑFÔFÐFÐFÐFr/   c                  ó8  — t          j        ddd¦  «        } t          t           j        t          j        | | ¦  «        ¦  «        \  }}||dz
  k    |dk     z  |dk    z  }||         ||         }}t          j        d¦  «        }|t          j        |¦  «        z  |t          j        |¦  «        z  z
  }|t          j        |¦  «        z  |t          j        |¦  «        z  z   }t          j	        ||¦  «        }|j
        }d |_        |j
        }	t          ||	¦  «         d S )Nr‚  r   r  r   g333333ÿ¿g333333ó¿é   )rQ   rS   ÚmaprT   rR   Úradiansr;  r=  r   r   rG   rY   r   )
Úxir+   r,   Úwrz  Úx1Úy1rI   Úqhull_neighborsÚown_neighborss
             r-   Útest_qhull_triangle_orientationrX  s  sý   € å	Œ�R˜˜CÑ	 Ô	 €BÝ�rŒx�œ R¨Ñ,Ô,Ñ-Ô-�D€A€qØ	
ˆQ�‰UŠ�q˜5’yÑ! Q¨¢XÑ.€AØˆQŒ4��1”€q€AÝŒJ�r‰NŒN€EØ	
�2Œ6�%‰=Œ=‰˜1�RœV E™]œ]™?Ñ	*€BØ	
�2Œ6�%‰=Œ=‰˜1�RœV E™]œ]™?Ñ	*€Bõ Ô  BÑ'Ô'€Fð Ô&€Oð €FÔØÔ$€Må�¨Ñ6Ô6Ð6Ð6Ð6r/   c                  óš  — t          j        g d¢¦  «        } t          j        dddt          j        d¦  «        z  ddg¦  «        }t          j        g d¢g d¢g d	¢gt           j        ¬
¦  «        }t          j        g d¢t          ¬
¦  «        }t          j        | |||¬¦  «        }t          j        |¦  «        }|                     ¦   «          d S )Nræ  rO   r‘   rë   r¡  rP   r   r’   r“   rÆ   rç  r   )	rQ   r‹   r
  rÈ   r  r   r   r  Ú_get_compressed_triangulation)r+   r,   r   r   rI   r  s         r-   Ú#test_trianalyzer_mismatched_indicesr[  Š  sÅ   € å
ŒÐ&Ð&Ð&Ñ'Ô'€AÝ
Œ�"�b˜#�bœg b™kœk™/¨3°Ð3Ñ4Ô4€AÝ”˜)˜)˜) Y Y Y°	°	°	Ð:Å"Ä(ÐKÑKÔK€IÝŒ8Ð(Ð(Ð(µÐ5Ñ5Ô5€DÝÔ  1 i°dÐ;Ñ;Ô;€FÝÔ Ñ'Ô'€Hð ×*Ò*Ñ,Ô,Ð,Ð,Ð,r/   c                  óÚ   — g d¢} g d¢}g d¢}t          j        ¦   «          t          j        t          ¦  «        5  t          j        | ||ddg¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)rO   rP   rP   )rO   rO   rP   )rù   r¾   r
  rP   rO   )rž   r¶   r3   rB   rC   Útricontourf)r+   r,   r'  s      r-   Ú"test_tricontourf_decreasing_levelsr^  —  s¶   € àˆˆ€AØˆˆ€AØˆˆ€AÝ„J�L„L€LÝ	Œ•zÑ	"Ô	"ð -ð -ÝŒ˜˜1˜a # s Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   ¹A Á A$Á'A$c            
      ó‚
  — ddl m}  t          j        t          d¬¦  «        5  t
          j                             ¦   «          d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t
          j                             g dgg gdddd¦  «         d d d ¦  «         n# 1 swxY w Y   g d	¢}g d
¢}t          j        t          d¬¦  «        5  t
          j                             ||ddggdddd¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢g}t          j        t          d¬¦  «        5  t
          j                             |||ddgddd¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t
          j                             |||ddggdd¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t
          j                             |||dddggd¦  «         d d d ¦  «         n# 1 swxY w Y   t
          j                             |||dddd¦  «        }t          j        t          d¬¦  «        5  |                     g ¦  «         d d d ¦  «         n# 1 swxY w Y   ddgd fD ]J}t          j        t          d¬¦  «        5  | 	                    |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒK| 	                    dg¦  «         t          |                     ¦   «         t          j        d¦  «        ¦  «         | 	                    d¦  «         t          |                     ¦   «         ddgddgddgg¦  «         t          j        t          d¬¦  «        5  t
          j                             ¦   «          d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t
          j                             |dg¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢}t
          j                             ||¦  «        }t          j        t          d¬¦  «        5  |                     dd¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t
          j                             ¦   «          d d d ¦  «         n# 1 swxY w Y   t
          j                             |¦  «        }t          j        t          d¬¦  «        5  |                     dgddg¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )Ú_triz1__init__\(\): incompatible constructor arguments.r=   z,x and y must be 1D arrays of the same lengthr   r7   F)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 arrayr   zMz must be a 1D array with the same length as the triangulation x and y arraysT)r   r   r   z?z must be a 1D array with the same length as the x and y arraysz(filled contour levels must be increasingz*x and y must be array-like with same shape)Ú
matplotlibr`  r3   rB   r®   rÜ  r   rC   Úcalculate_plane_coefficientsrH   r   Ú	get_edgesrQ   ÚemptyÚTriContourGeneratorÚcreate_filled_contourÚTrapezoidMapTriFinderÚ	find_many)	r`  r+   r,   rÿ   rI   r   r'  Útcgrü   s	            r-   Útest_internal_cpp_apirj  ¡  s	  € àÐÐÐÐÐõ 
ŒÝØFð
Hñ 
Hô 
Hð !ð !õ 	Œ×ÒÑ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !õ
 
ŒÝÐMð
Oñ 
Oô 
Oð Að AåŒ×Ò˜r A 3¨¨¨b°"°b¸%Ñ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Að 	ˆ	ˆ	€AØˆ	ˆ	€AÝ	ŒÝØCð
Eñ 
Eô 
Eð Bð Bõ 	Œ×Ò˜q ! q¨! f X¨r°2°r¸5ÑAÔAÐAðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bð
 ˆIˆIˆ;€DÝ	ŒÝð%ð
&ñ 
&ô 
&ð Bð Bõ 	Œ×Ò˜q ! T¨A¨q¨6°2°r¸5ÑAÔAÐAð	Bð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bõ 
ŒÝÐMð
Oñ 
Oô 
Oð Að AåŒ×Ò˜q ! T¨2°°¨u°b¸%Ñ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aõ 
ŒÝð%ð
&ñ 
&ô 
&ð Bð Bõ 	Œ×Ò˜q ! T¨2¨r°R°D°6¸5ÑAÔAÐAð	Bð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bõ ŒX×#Ò# A q¨$°°B¸¸EÑBÔB€Få	ŒÝð2ð
3ñ 
3ô 
3ð 0ð 0ð 	×+Ò+¨BÑ/Ô/Ð/ð	0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð �Q�˜�ð "ð "ˆÝŒ]Ýð)ð*ñ *ô *ð 	"ð 	"ð �OŠO˜DÑ!Ô!Ð!ð		"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"øð ‡O‚O�T�FÑÔÐÝ�v×'Ò'Ñ)Ô)­2¬8°FÑ+;Ô+;Ñ<Ô<Ð<à
‡O‚O�BÑÔÐÝ�v×'Ò'Ñ)Ô)¨Q°¨F°Q¸°F¸QÀ¸FÐ+CÑDÔDÐDõ 
ŒÝØFð
Hñ 
Hô 
Hð 'ð 'õ 	Œ×$Ò$Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ
 
ŒÝðð
ñ 
ô 
ð 2ð 2õ 	Œ×$Ò$ V¨a¨SÑ1Ô1Ð1ð	2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 	ˆ	ˆ	€AÝ
Œ(×
&Ò
& v¨qÑ
1Ô
1€Cå	ŒÝÐIð
Kñ 
Kô 
Kð (ð (à×!Ò! ! QÑ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (õ
 
ŒÝØFð
Hñ 
Hô 
Hð )ð )õ 	Œ×&Ò&Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ
 ”×.Ò.¨vÑ6Ô6€Iå	ŒÝÐKð
Mñ 
Mô 
Mð )ð )à×Ò˜Q˜C ! Q Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )sé   ¢AÁAÁAÁ3(B'Â'B+Â.B+Ã)D
Ä
DÄDÄ5(E)Å)E-Å0E-Æ(GÇGÇ
GÇ)(HÈH!È$H!É(J
Ê
JÊJÊ8KËK	Ë!K	ÎN6Î6N:Î=N:Ï"P
Ð
PÐPÑQ7Ñ7Q;Ñ>Q;ÒSÓSÓSÔT4Ô4T8Ô;T8c                  ó  — t          j        g d¢¦  «        } t          j        g d¢¦  «        }d}t          j        | |¦  «        }t          j        | |z   ||z   ¦  «        }t	          |j        ¦  «        t	          |j        ¦  «        k    sJ ‚d S )N)r   r   r   r   r‘   )r   r   r   r   r‘   g    _ B)rQ   rŒ   r   r   rU   r   )r+   r,   ÚoffsetrI   Útriang_offsets        r-   Útest_qhull_large_offsetrn  ü  sŒ   € å
Œ
Ð$Ð$Ð$Ñ%Ô%€AÝ
Œ
Ð$Ð$Ð$Ñ%Ô%€Aà€FÝÔ  1Ñ%Ô%€FÝÔ& q¨6¡z°1°v±:Ñ>Ô>€MÝˆvÔÑ Ô ¥C¨Ô(?Ñ$@Ô$@Ò@Ð@Ð@Ð@Ð@Ð@r/   c            	      óD  — g d¢} g d¢}t          j        | |¦  «        }t          j        ¦   «          t	          j        t          d¬¦  «        5  t          j        |dddt          j	        g¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  t          j        |dddt          j	         g¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  t          j        |dddt          j
        g¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  t          j        |t          j                             g d	¢g d
¢¬¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrö   r÷   zCz array must not contain non-finite values within the triangulationr=   r   r   r   z9z must not contain masked points within the triangulation)r   r   r   r   )r   r   r   r   r   )r   r   rž   r¶   r3   rB   rC   r]  rQ   Úinfr  r…  r‹   )r+   r,   rI   s      r-   Útest_tricontour_non_finite_zrq    s»  € àˆˆ€AØˆˆ€AÝÔ  1Ñ%Ô%€FÝ„J�L„L€Lå	Œ•zð *Kð 
Lñ 
Lô 
Lð 3ð 3åŒ˜  A q­"¬&Ð 1Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3õ 
Œ•zð *Kð 
Lñ 
Lô 
Lð 4ð 4åŒ˜  A q­2¬6¨'Ð 2Ñ3Ô3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4õ 
Œ•zð *Kð 
Lñ 
Lô 
Lð 3ð 3åŒ˜  A q­"¬&Ð 1Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3õ 
Œ•zð *Dð 
Eñ 
Eô 
Eð Nð NåŒ˜¥¤§¢¨L¨L¨L¸|¸|¸| Ñ LÔ LÑMÔMÐMðNð Nð Nñ Nô Nð Nð Nð Nð Nð Nð Nð Nøøøð Nð Nð Nð Nð Nð NsH   Á$A<Á<B ÂB Â"%CÃCÃCÃ9$D)Ä)D-Ä0D-Å9FÆFÆFc                  ó  — g d¢} g d¢}g d¢}t          j        ¦   «         \  }}|                     | ||¦  «        }|                     | ||¦  «        }|j        |j        k    sJ ‚|                     ||¦  «        }|j        |j        k    sJ ‚d S )N)rO   r‘   rP   )rO   rP   rO   )rP   ro   rë   )rž   r­   r]  rÅ  Ú_contour_generator)r+   r,   r'  r¯   r°   Útcs1Útcs2Útcs3s           r-   Útest_tricontourset_reuserw    sŸ   € ð 	ˆˆ€AØˆˆ€AØˆˆ€AÝŒl‰nŒn�G€CˆØ�>Š>˜!˜Q Ñ"Ô"€DØ�=Š=˜˜A˜qÑ!Ô!€DØÔ" dÔ&=Ò=Ð=Ð=Ð=Ø�=Š=˜˜qÑ!Ô!€DØÔ" dÔ&=Ò=Ð=Ð=Ð=Ð=Ð=r/   c                 óÌ   — g d¢}g d¢}g d¢g}|                       ¦   «                              |||d¬¦  «         |                      ¦   «                              |||d¬¦  «         d S )Nr9   r:   r   z--)Úls)Ú	linestyle)r­   rÄ  )Úfig_testÚfig_refr+   r,   Údatas        r-   Útest_triplot_with_lsr~  -  sw   € àˆ	ˆ	€AØˆ	ˆ	€AØˆIˆIˆ;€DØ×ÒÑÔ×Ò  1 d¨tÐÑ4Ô4Ð4Ø×ÒÑÔ×Ò˜q ! T°TÐÑ:Ô:Ð:Ð:Ð:r/   c                  ó  — g d¢} g d¢}g d¢g}t          j        ¦   «         \  }}|                     | ||d¬¦  «        \  }}|                     ¦   «         \  }}|dgk    sJ ‚t	          |¦  «        dk    sJ ‚|d         |u sJ ‚d S )Nr9   r:   r   Úlabel)r€  r   r   )rž   r­   rÄ  Úget_legend_handles_labelsrU   )	r+   r,   r}  r¯   r°   ÚlinesÚmarkersÚhandlesÚlabelss	            r-   Útest_triplot_labelr†  6  s¥   € Øˆ	ˆ	€AØˆ	ˆ	€AØˆIˆIˆ;€DÝŒl‰nŒn�G€CˆØ—Z’Z  1 d°'�ZÑ:Ô:�N€Eˆ7Ø×2Ò2Ñ4Ô4�O€GˆVØ�g�YÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐØ�1Œ:˜ÐÐÐÐÐÐr/   )BÚnumpyrQ   Únumpy.testingr   r   r   Únumpy.ma.testutilsr…  Ú	testutilsr"  r3   ra  rÜ  Úmatplotlib.pyplotÚpyplotrž   Úmatplotlib.trir‡   r   Úmatplotlib.pathr   Úmatplotlib.testing.decoratorsr   r   r
   r;   rE   rK   ra   rk   rr   r4   r5   rv   r�   r¦   r±   r¼   rÃ   rÌ   r  r6  rY  ru  r€  rŽ  r·  rÉ  rä  r  r3  r   r!  r;  r$  r@  rM  rX  r[  r^  rj  rn  rq  rw  r~  r†  r7   r/   r-   ú<module>r�     s¤  ðØ Ð Ð Ð ðFð Fð Fð Fð Fð Fð Fð Fð Fð Fà #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø €€€à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ Oð'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ð:ð ð ð/ð /ð /ð("ð "ð "ð.'Hð 'Hð 'HðTAð Að Að(ð ð ð „×Ò˜àˆ€HØ€Sˆ1ˆ#€JØˆ€Vˆa�ˆVÐð €Y€Y�	�	�	ÐØ€Y€Y�	�	�	ÐØÐÐÐ+Ð+Ð+Ð,ð
"ñ 
ô 
ð!ð !ñ
ô 
ð!ð
*Fð *Fð *FðZ ÐÐ#Ð$Ñ%Ô%ðð ñ &Ô%ðð6*ð *ð *ð8*ð *ð *ð=ð =ð =ð1ð 1ð 1ðd.ð d.ð d.ðN\6ð \6ð \6ð~SGð SGð SGðlKFð KFð KFð\Hð Hð Hð4;5ð ;5ð ;5ð|ZMð ZMð ZMðz ÐÐ.Ð/¸TÀuÐMÑMÔMð#Ið #Iñ NÔMð#IðL ÐÐ,Ð-¸4ÀUÐKÑKÔKð/9ð /9ñ LÔKð/9ðh5.ð 5.ð 5.ðp58ð 58ð 58ðp „×Ò˜ØÔ4ØÔ3ð5à&¨Ð0ð ñ 2ô 2ð>ð >ñ	2ô 2ð>ð)ð )ð )ð3ð 3ð 3ðGð Gð Gð.7ð 7ð 7ð.
-ð 
-ð 
-ð-ð -ð -ðX)ð X)ð X)ðvAð Að AðNð Nð Nð0>ð >ð >ð ÐÑÔð;ð ;ñ Ôð;ð	ð 	ð 	ð 	ð 	r/   