
    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>                  jA                  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>                  jA                  d1ejf                  ejh                  gd2d3g4      d5        Z5d6 Z6d7 Z7d8 Z8d9 Z9d: Z:d; Z;dDd<Z<d= Z=d> Z>d? Z? e       d@        Z@dA ZAdB ZBdC ZCy)E    N)assert_array_equalassert_array_almost_equalassert_array_less)Path)image_comparisoncheck_figures_equalc                   .   e Zd Zg dZg dZg dg dgZddgZej                  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y)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                  j                  ||z   i ||      \  }}}}	}
}|\  }}}}||u sJ ||u sJ t        ||       |	|u sJ |
|k(  sJ ||k(  sJ y )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                   `/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_triangulation.py!test_extract_triangulation_paramsz9TestTriangulationParams.test_extract_triangulation_params   s     V
S)<<z!#=f#=#=? 	2B
E5' !)1iQwwQww:y1}}
""",&&&    )__name__
__module____qualname__r+   r,   r   r   pytestmarkparametrizedictr.    r/   r-   r
   r
      s    AAI&I4=D[[5
QaD$'(
Q		BAy$ 78
Q	*Q9d,CD
Q41at"45
Q		DdOaIt-DE
Q	51i7NO8 ''r/   r
   c                      dg} g dg dg dg| g}t         j                  j                  |i       \  }}}}}}|J || gk(  sJ y )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;   +   sX    6Dy9+t4D88rB .BJug==TF??r/   c                     g d} g d}t        j                  t        d      5  t        j                  | ddg       d d d        t        j                  t        d      5  t        j                  | |g d       d d d        t        j                  t        d	      5  t        j                  | |d
       d d d        t        j                  t        d      5  t        j                  | |g dg       d d d        t        j                  t        d      5  t        j                  | |g dg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   lxY w# 1 sw Y   y xY w)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   s6   AA	z)G	H &1q!f%&	
 , 	1a+	,
 
H
J * 	1a)* 
z)9	: /1a*./	z)9	: /1a*./ /& &, ,
* */ // /s;   D: EEEE*:EEEE'*E3c                     g d} g d}g dg dg}t        j                  | ||      }t        |j                  g dg dg       |j	                  ddg       t        |j
                  ddg       |j	                  d        |j
                  J d	}g d
dgdgddfD ]7  }t        j                  t        |      5  |j	                  |       d d d        9 y # 1 sw Y   DxY w)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1i0F v''+{)CD OOUDM"v{{UDM2 OOD;;
@C%wtD "]]:S1 	"OOD!	" 	""	" 	"s   9CC	c                     d} d}t        j                  t        j                  dd|       t        j                  dd|            \  }}|j                         }|j                         }| |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$                  |             y )	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"++c32KLDAq		A		AeGbdr!t$JrT"Wqt^ad"Q&F 1%F fhh*fhh* v J...66&""#q(((66&""#wqy000 v||&&&66&,,1$$$66&,,719,,,
   IFv''3 ryy!1!12BIIg4FGr/   c                     d} d}d}t         j                  j                  d       t         j                  j                  |       }t         j                  j                  |       }||   ||<   ||   ||<   t        j                  ||      }t        t        j                  |j                        t        j                  t        j                  |       |             y )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IINN2
		!A
		!A\?AiL\?AiL 1%F ryy!1!12yy7!3Y?Ar/   c                  l   t        j                  ddd      } t        j                  ddd      }t        j                  t              5  t        j                  | |       d d d        t        j                  | d      } t        j                  |d      }t        j                  | |       y # 1 sw Y   LxY w)NrO         $@          @g       @)rQ   rS   r3   rB   RuntimeErrorr   r   appendrD   s     r-   test_delaunay_points_in_linerr      s     	Cr"A
Cr"A	|	$ !1a ! 			!SA
		!SAq!! !s   B**B3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        y # 1 sw Y   y xY wNrA   rD   s     r-   !test_delaunay_insufficient_pointsrw      s5     
z	" !1a ! ! !s	   :Ac            
      x   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(  rJ  t        j                  | dd df   | dd df         }y )NgLXz?g     gCM??g~9B.?g     g/7R?g9?g     ڿgHC?g     ڿgt?g     ڿg(\?gq=
ףpݿg?gzGڿffffff?gQ޿g)\(ܿ      ?皙?c                 x    t        j                  | |f      j                  }t        |      j	                  |      S rv   )rQ   vstackTr   contains_point)xtriytrixy
tri_pointss       r-   tri_contains_pointz0test_delaunay_robust.<locals>.tri_contains_point   s0    YYd|,..
J..r22r/   c                 H     t         fd j                  D              S )Nc              3   f   K   | ](  } j                   |   j                  |          * y wrv   rD   ).0trir   rI   r   s     r-   	<genexpr>zCtest_delaunay_robust.<locals>.tris_contain_point.<locals>.<genexpr>   s2      0 &fhhsmVXXc]BG 0s   .1)sumr   )rI   r   r   s   ``r-   tris_contain_pointz0test_delaunay_robust.<locals>.tris_contain_point   s#     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 5J **	u	u	u	e	e	u	e K30 
1a4 0*QT2BCF! ;
!&*5:::;
 
12q5 1:ab!e3DEFr/   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                     j                  d      }||j                     j                  d      }d|z  |z   }t        j                  d       t        j                  ||d       t        j                  d       t        j                  d       t        j                  ||d       t        j                  d       y )N)
r         ?r   r   r   r   r   r   r   rz   )
r   r   r   r   r   r   r   r   r   rz   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   axisy   k)
edgecolorszpoint colorsz   )
facecolorsr   r   )
rQ   r   r   r   r   meanpltsubplot	tripcolortitle)r+   r,   r   rI   CpointsxmidymidCfacess           r-   test_tripcolorr      s   


>?A


>?A

9999i	4 5I 1i0F#a%iGV###+DV###+DX_FKKMM&'c2IInKKMM&V<IIlr/   c                     g d} g d}t        j                         \  }}t        j                  t        d      5  |j                  | |       d d d        t        j                  t        d      5  |j                  | |g d       d d d        t        j                  t        d      5  |j                  | |g d	       d d d        t        j                  t        d
      5  |j                  | |ddgd       d d d        t        j                  t        d
      5  |j                  | |ddgd       d d d        t        j                  t        d      5  |j                  | |g d       d d d        t        j                  t        d      5  |j                  | |ddgd       d d d        |j                  | |g d       |j                  | |g dd       |j                  | |ddg       |j                  | |ddg	       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   8xY w# 1 sw Y   
xY w# 1 sw Y   xY w# 1 sw Y   xY w)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')CzUnexpected positional parameterunused_positional)r   subplotsr3   rB   	TypeErrorr   rC   )r+   r,   figaxs       r-   test_tripcolor_colorr     s   AAllnGC	y(L	M 
Q	z)L	M &
Q9%&	zK
M 4
Ql34 
zL
N A
Qq!fi@A 
zL
N 6
QAq6956 
yJ
L +
Q\*+ 
y(I	J 8
QAq6#678 LLA|$LLA|YL7LLA1vLLA1a&L)/ & &4 4A A6 6+ +8 8sS   H1H*H%$H2H?IIHH"%H/2H<?I	II!c                     t         j                  j                  d       t         j                  j                  d      t         j                  j                  d      t         j                  j                  d      }}} t	        j
                         j                         }d}|j                  | |||      j                  }|j                  |j                  f|k(  sJ y )Ni!N,rc   )      ?rz   )clim)rQ   rf   rg   randr   figureadd_subplotr   normvminvmax)r   r   cr   r   r   s         r-   test_tripcolor_climr   %  s    IINN8iinnR ")).."4biinnR6H!qA		!	!	#BD<<1ad<+00DIItyy!T)))r/   c                  ^   g d} g d}ddg}t        j                         \  }}t        j                  t        d      5  |j                  | |||       d d d        t        j                  t        d      5  |j                  | |d|       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)	Nr   r   皙?r   z"Positional parameter c .*no effectr=   r   zinterpreted as c)r   r   r3   warnsUserWarningr   )r+   r,   r   r   r   s        r-   test_tripcolor_warningsr   /  s    AA	c
AllnGC	k)M	N ,
Q1+,	k)M	N =
Q-!<= =, ,= =s   B8B#B #B,c                     t        j                  g dg dgt         j                        } t        j                  g d      }| j                         }t	        j
                  |d d df   |d d df   |       j                   t        ||        y )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   ;  sh    )Y/rxx@IXX89FNN$Mvad|VAqD\9=CC}i0r/   c                     t        j                  t        j                  d      t        j                  d            \  } }| j                         } |j                         }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                  | |||      }|j                         }g d}g d}t        j                  ||      \  }}|j                         }|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                  | ||      }|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                  | ||      }|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                  | ||      }|j                         }g d>}g d?} |||      }t        |g d@       |j                  dd g       ||j                         k(  sJ  |||      }t        |g dA       y )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ɿ皙?r{   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  E  sj   ;;ryy|RYYq\2DAq		A		AIy)YIy)Z[*k;|\;I 88C	N#DD2J1i6F$$&I	!B	!B[[R FB	B	BRDt > ?RVRV$Dt = > 
FB	EBRDtGH sB
sBRDtaW% E'A	a!aE1%AIy)YIy2I1i0F$$&I	-B
B[[R FBRDt557 8 E	eVQQ1%A'AIy)YIy2I1i0F$$&I
B	-B[[R FBRDtr2hAAAAA!2h( )
 	AAI&I1i0F$$&I	B	BRDt^,
OOQF,,....RDt_-r/   c                  F   t        j                  t        j                  d      t        j                  d            \  } }| j                         } |j                         }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 ]W  } ||	|
      }t        j                  |d|	z  d|
z  z
         |	dk\  |	d#k  z  |
dk\  z  |
d#k  z  }t        |j                  |       Y 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        | ||	|
             |j!                  | |      \  }} || |      \  }}t        ||       t        ||       d6}t        j                  t        j                  d1d2|dz         t        j                  d1d2|dz               \  } }| j                         } |j                         } || |      }t        j                  | |t#        |dz         7      }t        j                  t        j                  d8d9d3      t        j                  d8d9d3            \  }	}
|	j                         }	|
j                         }
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\  rJ  y );NrN   Gz?)\(@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   rz   r   r  )g      пr         ?r   Tr	  )r   rz   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*QqS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    !QsUac!1Q3#;1#455r/   )r   &jjZ? rh?rO   rP   rP   rO   )333333?HPs?X9v?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   ;;ryy|RYYq\2DAq		A		AQaAIy)YIy)Z[*k;|\;I 88C	N#DD2J1i6F..vq9M++FA6K**616BJ	T4	#B	!B[[R FB +z: ;B^!"tBwb'8:;
 
#B	B[[R FB +z: 22r"277dVAXJqL12
 
T4	#B	!B[[R FB +z: *B^((d2gR.?AaB!G$a0B!G<277D)	* #IQ136 	67A
78A)Y	9#Y	9F GI1i0FQ
A	q!	B	RQ	B	RQ	B[[R FB**616bIJ2r"Iib"6#-#6#6q!#< \<"1a(NUElE2lE2 	A;;r{{2r1Q3/RQqS1IJDAq		A		AQ
A10B1Q30GHF[[S#q12;;sC3KLFB	B	B..vq9M++FA6K**616BJ	b"BvvmB+b01H
+ 6VVF2rNR/0
vvh2z(:#::::x*bffZ445 	6 56r/   c                     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        y )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   }
| j                  |g|g      \  }}|3t        |
|d          t        |d   |d          t        |d   |d           | ||	      |
z
  }| j                  ||	      \  }}||z
  }||z
  }t        |||z         t        |||z         t        |||z         y)	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  sA    B"%%(H!IIIB"%%(H!III%5'*1-!**E7UG<
c%a3%c!ffQi8%c!ffQi8ff-1)2266B'S=S=&'!),(GAI.(GAI.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      @rv   )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   /> HR!HRHR
"b"b"b"-.A
"b"b"b"-.A)Y	9#Y	9F GI1i0Fa GHHQbjj)hhq

+hhq

+1a&

3Qw!$tTAX~19AdGQYCqMQYCqM**616/2Cj: 	"b6!Q$<8"b6!Q$<8"b6!Q$<82b5#+2s{!;<2b5#+2s{!;<2b5#+2s{!;<2b58R-"R%(B!?@2b58B;"2RU2Xb["4D!EF2be8B;"2R2Xb["4D!EF2b5B;"2RU2b5["4D!EF9Gr/   c            	         d } d\  }}t        j                  j                   | ||       }|j                          |j	                         }t        ||z        D ]  }t        j                  ||z  t        j                        }d||<   t         j                  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                  j                  |||||z  d
z   ||z  d
z   f      }|j                          |j	                         }t        ||z  d
z         D ]  }t        j                  ||z  d
z   t        j                        }d||<   t         j                  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                  j                  ||||      }|j                          |j	                         }t        |t        j                  g dg dg dgt        j                               y )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_matrixe  s    aC~~IIarxx(IIac*BIIa"((,KIIac*BIIa"((,KM N ~~IIarxx(IIa"((+RYYqs"((-KIIa"((+RYYqs"((-KM N ~~bggarzz**WWQqS

++bggac.L-LWWQqS

++bggac.L-LN O
 !#Qqs1uacf1f$&QqSU1Q3q5!A#&q&!T4!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  a  s	   ,2 FQ



1
13HA3N
OCIqs ;HHQqS

+%##''#rxx!},2 ( 41!"&&A"6:;  VV/15D$a!TV^$$q$&.'99D!TV^$$q$&.'99D>>4&&(FF1H!EFGD>>4&(FF1Hf!EFGD>>4!123D



1
1$d34Q37AaC!G2DFCIqsQw ;HHQqS1WBJJ/%##''#rwwq1uqy7I,2 ( 41!"&&A"6:; 772RZZ(D88G(($D88G(($D
C



1
1$dC
HCIilL329;*E Fr/   c                  N   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 ]z  }t        j                  |      |z  t        j                  |      |z  z   }t        j                  |       |z  t        j                  |      |z  z   }	t        j                  ||	|      }
t        j                  |
|d      }t        j                  j                  |      }|j                         }t        j                  |d      dz
  |dd d f<   t        d      D ]/  }t        j                  |d      d	|d d |f   z  z
  ||dz   d d f<   1 t!        t        j"                  t        j$                  |      d      t        j                  ddgt         j                               } y )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   
 HR
"c"fb"%&A
"rc2r"#A
"**%AI&IHHaVER255"- Hua"&&-/1q 266%=?2##E5)<..vqvF
,,@@L446ffWa(1,ad!H 	GD!vvgq1Agag6F4FFE$q&!)	G!"&&Q"?"$((B82::"F	HHr/   c                  8   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                  ||      \  }}|j                         }|j                         } |j                         ||      dk(  }t         j                  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 ]J  }|j#                  |||t        j$                  dt         j&                        z        \  }t        ||       L  y )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    s    E	1	2B	2A1eQ/	0B 1v1v1v1vBx"aIO) #5q!"$~a'8';;""2%q(9"(<<AFT!VO	9i	96	##Aq)4[[)266&((+;R@[[)266&((+;R@R$BXXZXXZ*F((*2r2b8EEKKR$r' 1KA	2261=//:..vqvF
$k:> 	5FBB%i4	5 tQw'tQw'[[#r:[[#r:Gd2g%	$k:> 	5F//B$rwwr'B"B 0 DCB%i4	5A#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  j                         }|t        j                  |      z  j                         }t        j                  ||      } |||      }	t        j                  ddd      }
t        j                  ddd      }t        j                  |
|      \  }
}|
j                         }
|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 ];  }||   }|dk(  r ||
|      ||<    |||      }t!        j"                  |||          =  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"                  |||          )  y )Nr  rc   333333?c                    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      &@ry   rQ   hypotarctan2expr;  rW   rV   r+   r,   r1theta1r2theta2r'  s          r-   r'  z)test_triinterp_transformations.<locals>.z  "   XXcAgsQw'C!GS1W-XXqb3hS)QBHqb3h/B
#A%&s*RVVBvI->>vvr"uqj!!#S(266#f*+==>1a4!Q$;  ! q	!bffQi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 KK
D'2E[[Xqw'9!E3FYYvc2::o.a@F
1add7OruuX~%O
v
	'	'	)B
v
	'	'	)B  R(G	
2rB ++c2r
"C
++c2r
"C{{3$HC
))+C
))+CI8 H"%%("W,FF5M"rvve}R//VVE]N2ub 00VVE]3s!22ffUm^C"&&-"33##Aq'*;*;<2262>//;..vrG
**(*
 3 	HJ
+F!|(.sC(8	*% R.001::1FH	HH0 L! M#r!AA#BBAr!AB#B##Aq'*;*;<2262>//;..vrG
**(*
 3 	MJ,j,R4G,,Wi
6KL	M)Mr/   ztri_smooth_contouring.pngTg;On?)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  j                         }|t        j                  |      z  j                         }t        j                  ||      } |||      }	|j                  t        j                  ||j                     j                  d      ||j                     j                  d            |k         t        j                  |      }
|
j                  |	d      \  }}t        j                   ddd      }t#        j$                  |dd       t#        j&                  |||d       y )Nr  rc   r  c                    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>.zk  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  d  s    HGJ3 KK
D'2E[[Xqw'9!E3FYYvc2::o.a@F
1add7OruuX~%O
v
	'	'	)B
v
	'	'	)B  R(G	
2rBRXXb!2!2388a8@ !2!2388a8@B!" #
 $$W-G#00A0>HkYYr2u%FKKCu-NN8[Hr/   ztri_smooth_gradient.pnggZd;O?c                  p   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  j                         }|t        j                  |      z  j                         } | ||      }t        j                  ||      }	|	j                  t        j                  ||	j                     j                  d      ||	j                     j                  d            |k         t        j                  |	      }
|
j                  |d      \  }}t        j                   |	|       }|j#                  |	j$                  |	j&                        \  }}t        j                  ||      }t)        j*                          t)        j,                         j/                  d       t)        j0                  |	d       t        j2                  ddd      }t4        j6                  d   }t)        j8                  ||||g d       t)        j:                  |	j$                  |	j&                  ||z  ||z  ddddddd       y )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  sa    !tad{

1a FF5M$q	!q	"&&) 344r/      rc   r   r  r   r   Fr  .r   r   r   r  equalz0.8)r  rO   rP   g{Gz?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    s7   5 HGJKK
D'2E[[AbeeGX>FYYvc2::o.a@F
1add7OruuX~%O	rvvf~	&&(A	rvvf~	&&(AAA1%F
OOBHHQv//05515=v//05515=? ! "
 $$V,G#0010=Hk 
#
#FQB
/C\\&((FHH-FBXXb"F JJLGGI!KKe$YYr2t$F==DNN8[d24 JJvxx2f9biQfbR9r/   c                  J   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        |j                  d      t         j                  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        |j                         t        j                  dg             d}d }t        j                  dd|dz         } t        j                   || d       || d            \  } }| j!                         } |j!                         }t        j                  | |t#        |dz               }t        j                  |      }|j%                  d      }t        j&                  dt        
      }	g d}
d|	|
<   t)        ||	       t        j&                  dt        
      }d|d<   |j+                  |       |j%                  d      }g d}d|	|<   t)        ||	       y )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                 ^    t        j                  |       |z  t        j                  |       z  S rv   )rQ   r%  sign)r+   r   s     r-   powerztest_tritools.<locals>.power  s!    vvay!|BGGAJ&&r/   r   r   r      )r   r   r   r   r   r   r   r         "   #   ~                                    TP   ),   -   >   ?   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    ss    	&'A
"b#bggbk/334A)Y	:"((KI88(5D1id;F'Hh44q-6HIu-
CR^!4bff=tDF
 	A
#$A)BHH5I1i0F'Hh446"G 	
A' 	CQqS!A;;uQ|U1d^4DAq		A		A10B1Q30GHF'H**3/I#T*JGM $J}y*- 88Ct$DDH
OOD**3/IML#J|y*-r/   c                     d} d}t        j                  dd| dz         }t        j                  ||      \  }}|j                         }|j                         }t        j                  d| dz  z  t
              }d|| dz  d  t        j                  ||t        | dz         |      }t        j                  |      }|j                  |	      }|j                  }|j                  }	| |dz  z  }
t        j                  dd|
dz         }t        j                  ||      \  }}|j                         }|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'                         } |||      }|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                  ||         }|j/                  |d	      \  }}t        j0                  |j                  |j                  |f      d   }|t        j2                  |d d df   |d d df   f         }||gz  } t5        |d   |d          y )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,   isin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QqS!A;;q!DAq		A		A88AadF$'DDAK10B1Q30G%)+F$$V,G..f.=K]]F]]F]Fkk#r6!8,G{{7G4GWmmoGmmoGGGBIIgs7{3Q7IIfc&j1157Eud#   IFF;==1F1F#G()+-/0FF;==1F1F#G()+-/0%%'J!"7"79KK 01My-0 	

'(A


'(A  A	9'=>  A	9'=>@F
S!c'"AH1X ((3$+$8$81$8$E!	ii))>+;+;YGHK"**c!Q$iQT345SE hqk8A;7r/   r>  linearcubic)idsc                    t         j                  d dd df   \  }}t        j                  |j                         d      }t        j                  |j                         d      }t        j                  |      }t        j                  ||      }t        j                  |      } | ||      }|j                  ||d       y )Nr   )triinterpolatorr  )	rQ   mgridr  r  
zeros_liker   r   r  r  )r>  r+   r,   r'  r   r  r+  s          r-   test_trirefine_maskedr;  0  s     88BQBFDAq
		!))+q!A
		!))+q!A
aA


Q
"C$$S)G#q!FF1=r/   c                    g }t        | dz
        D ]N  }t        | dz
        D ];  }||| z  z   }|dz   || z  z   }||dz   | z  z   }|dz   |dz   | z  z   }||||g|||ggz  }= P t        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$  B  s     C1Q3Z *qs 	*AAaCA1!AQqS!GA11aAQ1I1ay))C	** 88Crxx((r/   c                      t        j                         j                         } t        j                  g dg dg dg dg      }| j                  |d      J d       y )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@  Q  sW    		!	!	#B2i(*F ::fd#/ 323/r/   c                  Z   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
                  |      }|j                  d	      }|j                  d	      }	t        |j                  |	j                         y )
Nr  )r   r   r   TF)r   order)g(\?gzG?gQ?g{Gz?)gQ@@gz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     9i01J||J'''*4s;J<<
###
)*A
-.A  Az2G  Az2G%%g.H%%g.H000:L000:L|--|/E/EFr/   c                  @   t        j                  ddd      } t        t         j                  t        j                  | |             \  }}||dz
  kD  |dk  z  |dkD  z  }||   ||   }}t        j
                  d      }|t        j                  |      z  |t        j                  |      z  z
  }|t        j                  |      z  |t        j                  |      z  z   }t        j                  ||      }|j                  }d |_        |j                  }	t        ||	       y )Nr  r   r  r   g333333g333333   )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  r  s    	RC	 BrxxR,-DAq	
QUq5y!QX.AQ41qAJJrNE	
266%=1RVVE]?	*B	
266%=1RVVE]?	*B B'F &&O F$$M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                  |      }|j                          y )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#bggbk/334A)Y	:"((KI88(5D1id;F'H **,r/   c                      g d} g d}g d}t        j                          t        j                  t              5  t        j
                  | ||ddg       d d d        y # 1 sw Y   y xY w)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^    sQ    AAAJJL	z	" -1a#s,- - -s   AA'c                     ddl m}  t        j                  t        d      5  t
        j                  j                          d d d        t        j                  t        d      5  t
        j                  j                  t        j                  g       t        j                  dg      t        j                  g g      dddd       d d d        t        j                  g d	t        j                  
      }t        j                  g dt        j                  
      }t        j                  t        d      5  t
        j                  j                  ||t        j                  ddgg      dddd       d d d        t        j                  g dgt        j                  
      }t        j                  t        d      5  t
        j                  j                  |||t        j                  ddg      ddd       d d d        t        j                  t        d      5  t
        j                  j                  |||dt        j                  dgg      dd       d d d        t        j                  t        d      5  t
        j                  j                  |||ddt        j                  dgg      d       d d d        t
        j                  j                  |||dddd      }t        j                  t        d      5  |j                  g        d d d        ddgd fD ]7  }t        j                  t        d      5  |j                  |       d d d        9 |j                  t        j                  dg             t        |j                         t        j                   d             |j                  d       t        |j                         ddgddgddgg       t        j                  t        d      5  t
        j                  j#                          d d d        t        j                  t        d      5  t
        j                  j#                  |t        j                  dg             d d d        t        j                  g d      }t
        j                  j#                  ||      }t        j                  t        d      5  |j%                  dd       d d d        t        j                  t        d      5  t
        j                  j'                          d d d        t
        j                  j'                  |      }t        j                  t        d      5  |j)                  t        j                  dg      t        j                  ddg             d d d        y # 1 sw Y   exY w# 1 sw Y   xY w# 1 sw Y   NxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   3xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   xY w# 1 sw Y   y xY w)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   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   rQ   r   rQ  int_calculate_plane_coefficientsrH   r   	get_edgesemptyTriContourGeneratorcreate_filled_contourTrapezoidMapTriFinder	find_many)	r`  r+   r,   r   rI   r   r'  tcgr   s	            r-   test_internal_cpp_apirk    s    
F
H ! 	 !
 
M
O &rxx|RXXqc]BHHbTNBPRTV$	&&
 	"**-A
"**-A	C
E L 	q!RXX1vh%7RUKL
 88YKrww/D	%
& L 	q!T288QF+;RUK	L 
M
O Kq!T2rxx!EJK 
%
& L 	q!T2r288bTF3CUK	L XX##Aq$BEBF	2
3 0 	++B/	0 Q "]])* 	" OOD!		" 	"" OOBHHdV$%v'')288F+;<
OOBv'')QFQFQF+CD 
F
H ' 	$$&'
 
T
V < 	$$VRXXqc];<
 	A
((
&
&vq
1C	I
K (!!!Q'(
 
F
H ) 	&&()
 ..v6I	K
M =BHHaSM288QF+;<= =c! !
& &L LL LK KL L0 0	" 	"' '
< <( (
) )= =s   V$$A!V16<V>=;W;W9;W%<W2:W?7X95XX&>X3<Y $V.1V;>WWW"%W/2W<?X		XX#&X03X= Y	c                  "   t        j                  g d      } t        j                  g d      }d}t        j                  | |      }t        j                  | |z   ||z         }t	        |j
                        t	        |j
                        k(  sJ y )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_offsetro    su    


$%A


$%AF1%F&&q6z1v:>Mv C(?(?$@@@@r/   c            	      N   g d} g d}t        j                  | |      }t        j                          t	        j
                  t        d      5  t        j                  |dddt        j                  g       d d d        t	        j
                  t        d      5  t        j                  |dddt        j                   g       d d d        t	        j
                  t        d      5  t        j                  |dddt        j                  g       d d d        t	        j
                  t        d      5  t        j                  |t        j                  j                  g d	g d
             d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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_zrr    sQ   AA1%FJJL	z *K 
L 3Aq"&& 123 
z *K 
L 4Aq266' 234 
z *K 
L 3Aq"&& 123 
z *D 
E NL| LMN N3 34 43 3N Ns0   )E6*F')F3:F6F FFF$c                  &   g d} g d}g d}t        j                         \  }}|j                  | ||      }|j                  | ||      }|j                  |j                  k7  sJ |j                  ||      }|j                  |j                  k(  sJ y )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_reuserx    s     	AAAllnGC>>!Q"D==Aq!D""d&=&======q!D""d&=&====r/   c                     g d}g d}g dg}| j                         j                  |||d       |j                         j                  |||d       y )Nr9   r:   r   z--)ls)	linestyle)r   r  )fig_testfig_refr+   r,   datas        r-   test_triplot_with_lsr  ,  sS    AA;D1dt4q!TT:r/   c                      g d} g d}g dg}t        j                         \  }}|j                  | ||d      \  }}|j                         \  }}|dgk(  sJ t	        |      dk(  sJ |d   |u sJ y )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  5  s    AA;DllnGCZZ1d'Z:NE7224OGVgYw<11:r/   c                     g d} g d}t        j                  | |      }t        j                         \  }}|j	                  |g ddg      }|j                         }t        |      dk(  sJ ddgddgddgg}t        |d   j                  |       t        |d   j                  g d	       t        |d   j                  d
      |g       |j	                  |g ddg      }|j                         }t        |      dk(  sJ ddgddgddgddgddgg}t        |d   j                  |       t        |d   j                  g d       t        |d   j                         |g       y )Nr   rN   rN   r   r   r   r   rN   rN   r   r   r   r   r   r   r   r  r   r   r   rt   F)closed_onlyr   r   r   r   r   r   r   r   r   r   r  )r   r   r   r   r  	get_pathsrU   r   verticesr   codesto_polygonsr+   r,   rI   rq  r   cspathsexpected_verticess           r-   test_tricontour_pathr  A  s_   AA1%FLLNEAr 
vu	=BLLNEu:??Q!Q!Q0eAh//1BCuQx~~y1a/2C1DF 
vu	=BLLNEu:??Q!Q!Q!Q!Q@eAh//1BCuQx~~'78eAh2247H6IJr/   c                  V   g d} g d}t        j                  | |      }t        j                         \  }}|j	                  |g dddg      }|j                         }t        |      dk(  sJ ddgddgddgddgddgg}t        |d	   j                  |       t        |d	   j                  g d
       t        |d	   j                         |g       |j	                  |g dddg      }|j                         }t        |      dk(  sJ dd	gddgd	dgd	d	gdd	gg}t        |d	   j                  |       t        |d	   j                  g d
       t        |d	   j                         |g       |j	                  |g dddg      }|j                         }t        |      dk(  sJ d	d	gdd	gddgd	dgd	d	gddgddgddgddgddgg
}t        |d	   j                  |       t        |d	   j                  g d       t        |d	   j                         t        j                  |dg             y )Nr  r  r  r   r   r  r   r   r   r  r  r   g      rN   )
r   r   r   r   r  r   r   r   r   r  rM   )r   r   r   r   r]  r  rU   r   r  r   r  r  rQ   splitr  s           r-   test_tricontourf_pathr  [  s2   AA1%FLLNEAr 
c
	CBLLNEu:??Q!Q!Q!Q!Q@eAh//1BCuQx~~'78eAh2247H6IJ 
c
	CBLLNEu:??Q!Q!Q!Q!Q@eAh//1BCuQx~~'78eAh2247H6IJ 
s	DBLLNEu:??Q!Q!Q!Q!QQ!Q!Q!Q!QAeAh//1BCuQx~~'GHeAh224bhh?PSTRU6VWr/   )returnN)D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   rw   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^  rk  ro  rr  rx  r  r  r  r  r7   r/   r-   <module>r     s$   F F # #       O' ':/(".'HTA( HS1#JVaV 		+,
" 
!
!
*FZ #$% &6*<*	=1d.N\6~SGlKF\H4;5|ZMz ./TuM#I N#IL ,-4UK/9 L/9h5.p58p 44335&0  2>	2>)3G.7.
--X=vAN0> ; ;	K4 Xr/   