rL i ddlZddlmZmZmZddlmcmZ ddl Z ddl Z ddl mZddlmZddlmZddlmZmZGddZdZdZd Zd Zd Zd Ze j>jAd ggfdgdgfddgddgfgdgdfgdgdfgdgdfgdZ!dZ"edgdZ#dZ$dZ%dZ&dZ'd Z(d!Z)d"Z*d#Z+d$Z,d%Z-d&Z.ed'gd(d)*d+Z/ed,gd(d-*d.Z0d/Z1d0Z2e j>jAd1ejfejhgd2d3g4d5Z5d6Z6d7Z7d8Z8d9Z9d:Z:d;Z;dFd<ZZ>d?Z?ed@gAdBZ@dCZAdDZBdEZCy)GN)assert_array_equalassert_array_almost_equalassert_array_less)Path)image_comparisoncheck_figures_equalc.eZdZgdZgdZgdgdgZddgZejjdeegieeddgfeeegieeedgfeege e eeedgfeege e eedegfeeege e eeeegfeege ee eeeegfgd Z y) TestTriangulationParamsrrrr rr rr rrFTzargs, kwargs, expectedN trianglesmaskrrcddg}ddd}tjj||zi||\}}}} } } |\} } }}|| usJ|| usJt||| |usJ| |k(sJ| |k(sJy)Nr rr4)ab)mtri Triangulation_extract_triangulation_paramsr)selfargskwargsexpected other_args other_kwargsx_y_ triangles_mask_args_kwargs_xyrrs i/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_triangulation.py!test_extract_triangulation_paramsz9TestTriangulationParams.test_extract_triangulation_paramssV S)    < <z!#=f#= #= ? 2B E5'!)1iQwwQww:y1}} """,&&&) __name__ __module__ __qualname__r+r,rrpytestmark parametrizedictr.r/r-r r sAAI&I 4=D [[5 QaD$'( Q BAy$ 78 Q *Q9d,CD Q41at"45 Q DdOaIt-DE Q 51i7NO 8 ' 'r/r cdg}gdgdgdg|g}tjj|i\}}}}}}|J||gk(sJy)NTrrr rrr r)rrr)rr r%r&r'r(r)r*s r-*test_extract_triangulation_positional_maskr;+sX 6D y9+t 4D 88rB.BJug == TF??r/cgd}gd}tjtd5tj|ddgdddtjtd5tj||gddddtjtd 5tj||d dddtjtd 5tj||gd gdddtjtd 5tj||gdgdddy#1swYxYw#1swYxYw#1swYxYw#1swYlxYw#1swYyxYw)Nr rzx and y must be equal-lengthmatchr rz>triangles must be a \(N, 3\) int array, but found shape \(3,\)rz3triangles must be a \(N, 3\) int array, not 'other'otherzfound value 99)rr czfound value -1)rr r r3raises ValueErrorrrr+r,s r-test_triangulation_initrE7s6AA z)G H& 1q!f%&   , 1a+ ,  H J* 1a)* z)9 :/ 1a*./ z)9 :/ 1a*.//&&,, **////s;D: EEEE*:EEEE'*E3cgd}gd}gdgdg}tj|||}t|jgdgdg|j ddgt|j ddg|j d|j Jd }gd dgdgddfD]7}t jt| 5|j |ddd9y#1swYDxYw) Nr rr)rrr)r r r )r r rFTz3mask array must have same length as triangles array)FTFr=) rrr neighborsset_maskrr3rBrC)r+r,rtriangmsgrs r-test_triangulation_set_maskrKKsAAI&I   1i 0Fv''+{)CD OOUDM"v{{UDM2 OOD ;;   @C%wtD" ]]:S 1 " OOD ! " "" " "s 9CC cd}d}tjtjdd|tjdd|\}}|j}|j}||z}d|dz z|dz z}d|z|zd|zz d|zz dz}t j ||}t |j|t |j|t|j|k(sJtj|jdk(sJtj|j|dz k(sJt|j|k(sJtj|jdk(sJtj|j|dz k(sJ|j}d|_t!|j|t!tj"|jtj$|y) N?rr rr)npmeshgridlinspaceravelrrrr+r,lenrminmaxedgesrG _neighborsruniquearange) nxnyr+r,npoints ntrianglesnedgesrIrGs r- test_delaunayrabs B B ;;r{{3R0"++c32K LDAq  A  AeGbdr!t$J rT"Wqt^ad "Q &F  1 %F fhh*fhh* v J .. . 66&"" #q (( ( 66&"" #wqy 00 0 v||  && & 66&,, 1 $$ $ 66&,, 719 ,, ,   IFv''3ryy!1!12BIIg4FGr/cd}d}d}tjjdtjj|}tjj|}||||<||||<tj||}t tj |jtjtj||y)N r) rQrandomseedrrrrZrdeleter[)r^ duplicate duplicate_ofr+r,rIs r-test_delaunay_duplicate_pointsrksGILIINN2 !A !A\?AiL\?AiL  1 %Fryy!1!12yy7!3Y?Ar/cltjddd}tjddd}tjt5t j ||dddtj|d}tj|d}t j ||y#1swYLxYw)NrO$@ @g @)rQrSr3rB RuntimeErrorrrappendrDs r-test_delaunay_points_in_linerrs Cr"A Cr"A | $! 1a ! !SA !SAq! !!s B**B3zx, yr rMr)r rr )rMrsrMr rr)rMrsrs)r r r rr r)rMrMrMrsrMrsctjt5tj||dddy#1swYyxYwNrArDs r-!test_delaunay_insufficient_pointsrws5 z "! 1a !!!s :Ac xtjddgddgddgddgddgd d gd d gg}tjd dgddgddgddgddgddgddgg}dfd}tj|dddf|dddf}|D]}|||dk(rJtj|dddf|dddf}y)NgLXz?ggCM??g~9B.?gg/7 R?g9?gڿgHC?gڿgt ?gڿg(\?gq= ףpݿg?gzGڿffffff?gQ޿g)\(ܿ?皙?cxtj||fj}t|j |Srv)rQvstackTrcontains_point)xtriytrixy tri_pointss r-tri_contains_pointz0test_delaunay_robust..tri_contains_points0YYd|,.. J..r22r/cHtfdjDS)Nc3fK|](}j|j|*ywrvrD).0trirrIrs r- zCtest_delaunay_robust..tris_contain_point..s20&fhhsmVXXc]BG0s.1)sumr)rIrrs``r-tris_contain_pointz0test_delaunay_robust..tris_contain_points#0$..00 0r/rr )rQarrayasarrayrr)r test_pointsrrI test_pointrs @r-test_delaunay_robustrs 01 01 01 01 01 01 1245J** u u u e e u e K30    1a4 0*QT2B CF!; !&*5:::;    12q5 1:ab!e3D EFr/ztripcolor1.pngc tjgd}tjgd}tjgdgdgdgdgdgdgd gd gd gd g }tj|||}|d |zz}||jj d}||jj d}d |z|z}t jdt j||dt jdt jdt j||dt jdy)N) r?r rrr rrr rz) rrrrrrr r r rzrr r)r rNrr rrN)rrMrN)rrNrs)rNrdrs)rNrM )rdrNr)rdr)rMrrrr axisyk) edgecolorsz point colorsz) facecolorsrr) rQrrrrmeanpltsubplot tripcolortitle)r+r,rrICpointsxmidymidCfacess r-test_tripcolorrs >?A >?A 9999i 45I  1i 0F#a%iG V    # # # +D V    # # # +D X_FKKMM&'c2IInKKMM&V<IIlr/cgd}gd}tj\}}tjtd5|j ||dddtjt d5|j ||gddddtjt d5|j ||gd dddtjt d 5|j ||d d gd dddtjt d 5|j ||d d gd dddtjtd5|j ||gddddtjtd5|j ||d d gdddd|j ||gd|j ||gdd |j ||d d g|j ||d d g y#1swYxYw#1swYxYw#1swYfxYw#1swY8xYw#1swY xYw#1swYxYw#1swYxYw)Nr rz!tripcolor\(\) missing 1 required r=z!The length of c must match eitherr rrz,length of facecolors must match .* triangles)r rrrNrz-'gouraud' .* at the points.* not at the facesr rgouraud)rshading)rz+positional.*'c'.*keyword-only.*'facecolors')CzUnexpected positional parameterunused_positional)rsubplotsr3rB TypeErrorrrC)r+r,figaxs r-test_tripcolor_colorrsAAllnGC y(L M Q z)L M& Q9%& zK M4 Ql 34 zL NA Qq!fi @A zL N6 QAq69 56 yJ L+ Q\ *+ y(I J8 QAq6#678LLA|$LLA|YL7LLA1vLLA1a&L)/&&44AA66++88sSH 1H*H%$H2H?I I HH"%H/2H<?I  II!ctjjdtjjdtjjdtjjd}}}t j j }d}|j||||j}|j|jf|k(sJy)Ni!N,rc)?rz)clim) rQrfrgrandrfigure add_subplotrnormvminvmax)rrcrrrs r-test_tripcolor_climr%sIINN8iinnR ")).."4biinnR6H!qA  ! ! #B D <<1ad< + 0 0D IItyy !T )) )r/c^gd}gd}ddg}tj\}}tjtd5|j ||||dddtjtd5|j ||d|dddy#1swYCxYw#1swYyxYw) Nr r皙?rz"Positional parameter c .*no effectr=rzinterpreted as c)rrr3warns UserWarningr)r+r,rrrs r-test_tripcolor_warningsr/sAA c AllnGC k)M N, Q1 +, k)M N= Q-! <==,,==sB8B#B #B,ctjgdgdgtj}tjgd}|j}t j |dddf|dddf|j t||y)Nrrr)rr rdtype))rr)rg?)r r)r r rr )rQrint32copyrrrXr)rpoints old_triangless r-test_no_modifyr;sh)Y/rxx@I XX8 9FNN$Mvad|VAqD\9=CC}i0r/ctjtjdtjd\}}|j}|j}gdgdgdgdgdgdgdgd gd gd gd gd gdgdgdgdgdgdg}tjt |}d|ddt j||||}|j}gd}gd}tj||\}}|j}|j}|||}t|gd||dz |dz }t|gdgd}gd}|||}t|gdddg}ddg}|||}t|d d!gd} gd"}d#d d d d | dg}gd$gd%gd&gdgd'gd(gd)gd*g}t j|||}|j}gd+}d,d-g}tj||\}}|||}t|gd.gd/gd} d#| d d d d dg}gd0}gd1gd2gd3gd4gd5gd6gd7gd*g}t j|||}|j}d,d-g}gd+}tj||\}}|||}t|d#d#gd d8gd d8gd d9gdd9gdd:gd#d#gggd;}gd<}gd1gd=g}t j|||}|j}gd>}gd?}|||}t|gd@|jdd g||jk(sJ|||}t|gdAy)BNrNrr rNr rMrNr rrMrrsrMrrrsrrdrsrNrMrrMrrrMrsrrsrcrrsrdrcrdrnrcrr r rrrcrrcrrcrnrrnrr rrc)r?@ @)rrrNr rsr rcr rrr r r r r r)r r r r r r rrMr rdr rnr rr) r?@rrrrrrOrPro@) rOrOrOrrrrProrrrr) rrrNrrrrrrsrdrcrnrOrrrrrr rrrrr r9rrrrrNrrrrMrrNrMr rMrsrNrsrM)皙r?gffffff?gffffff?g333333@g333333@r皙?)r rrr r rr )r rsrsrsrdrdr )rrrr rrrr)rr rMr)r rrN)r rNrM)rrsr)rrsrNrMrsrdrr rr rrr r r rr)gɿ皙?r{g333333?)rrrr)r rr r )r r r r ) rQrRr[rTzerosrUrr get_trifinderrrH) r+r,rrrI trifinderxsystrisdeltas r-test_trifinderrEsj ;;ryy|RYYq\ 2DAq  A  AIy)YIy)Z[*k;|\;I 88C N #DD2J   1i 6F$$&I !B !B [[R FB B B R Dt>? RVRV $Dt=> FB EB R DtGH sB sB R DtaW% E'A a!aE1%AIy)YIy2I   1i 0F$$&I -B B [[R FB R Dt5578 E eVQQ1%A'AIy)YIy2I   1i 0F$$&I B -B [[R FB R Dtr2hAAAAA!2h() AAI&I   1i 0F$$&I B B R Dt^, OOQF ,,. .. . R Dt_-r/cF tjtjdtjd\}}|j}|j}d|zd|zz }gdgdgdgdgdgd gd gd gd gd gdgdgdgdgdgdgdgdg}tjt |}d|ddt j||||}t j||}t j||}t j||d}tjddd} gd} tj| | \} } |||fD] } | | | } t| d| zd| zz "gd} | } tj| | \} } |||fD])} || | } t| jd gdzgdz+tjdd!d} gd"} tj| | \} } |||fD]W} | | | } tj| d| zd| zz | dk\| d#kz| dk\z| d#kz}t| j|Yd$\fd%} fd&}tjgd'}tjgd(}tjgd)gd*gd+gd,gd-gd.gd/gd0g}t j|||}| ||}|||}tjd1d2d3} tjd1d2d3} tj| | \} } t j||d4|5}|| | }t|| | | |j!||\}}|||\}}t||t||d6}tjtjd1d2|dztjd1d2|dz\}}|j}|j}| ||}t j||t#|dz7}tjtjd8d9d3tjd8d9d3\} } | j} | j} t j||}t j||}t j||d}| | | } tj$|| | | z }||fD]} tj$| | | | z }tj&|dtj&|zk\sJtj(||d:tj(||zk\rJy);NrNGz?)\(@rrrrrrrrrrrrrrrrrrr rrcgeomkindr@rs)rrzrr)gпr?rTr )rrzrr r)rg)\(333333?cD|dz dzz|dz dzzz|z|zzS)Nrrr7r+r,rrrs r-quadztest_triinterp..quads3!C%!|a3 l*QqSU22r/cHdz|dz z|zzdz|dz z|zzfS)Nrrr7r s r- gradient_quadz%test_triinterp..gradient_quads8!QsU ac!1Q3#;1#455r/)r&jjZ? rh?rOrPrPrO)333333?HPs?X9v?rOrOrPrPrrrrNrNrrrNrrMr rMrrsrMr rsr rrsrrrOrPrMuserrdzrnrrrd)rQrRr[rTrrUrrLinearTriInterpolatorCubicTriInterpolatorrSrrrmatestrgradientmeshgrid_trianglesabsrWdot)r+r,zrrrI linear_interp cubic_min_E cubic_geomrrinterpzsr rr cubic_user interp_zs interp_dzsdx interp_dzsdydzsdxdzsdyndiff_lin diff_cubicrrrs @@@r-test_triinterpr6s ;;ryy|RYYq\ 2DAq  A  A QaAIy)YIy)Z[*k;|\;I 88C N #DD2J   1i 6F..vq9M++FA6K**616BJ T4 #B !B [[R FB +z:; B^!"tBwb'8:; #B B [[R FB +z:2 2r "277dVAXJqL12 T4 #B !B [[R FB +z:* B^((d2gR.?AaB!G$a0B!G<277D) *#IQ136 67A 78A)Y 9#Y 9FGI   1i 0F Q A q! B RQ B RQ B [[R FB**616bIJ2r"Iib"6#-#6#6q!#< \<"1a(NUElE2lE2 A ;;r{{2r1Q3/RQqS1I JDAq  A  A Q A   10B1Q30G HF [[S#q12;;sC3K LFB B B..vq9M++FA6K**616BJ b"BvvmB+b01H +6VVF2rNR/0 vvh2z(:#::::x*bffZ445 656r/c dd}d\}}d\}}d\}}tj|||ddddg}tj|||ddddg}tjgdgdgd gd gd gd gd gdg} tj||| } t dD]} tj dtj } tj dtj } tj dtj }tj ddgtj }| dz}d||| dzf<|dk(rd| | <n|dk(r d| | dz<n |dk(rd|| dz<tj| | d| |f}||||f|dddf||||f|dddf||||f|dddf||||zdz||zdzf||||zdz||zdzf||||zdz||zdzf||||z|zdz ||z|zdz f||d|z|z|zdz d|z|z|zdz f|||d|zz|zdz |d|zz|zdz f||||zd|zzdz ||zd|zzdz fy)Nc d}d}d}|\}}||tjtjddtjz|zz}||tjtjddtjz|zz} ||g|gd} |j |g|g\} } |3t | |dt | d|dt | d|d||| | z } |j || \}}|| z }|| z }t| ||zt|||zt|||zy) 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* 绽|=gY@rOrrNr )rQcosrSpisinr#rr) interpolatorlocvaluesn_starepsilonrloc_xloc_ystar_xstar_yr'dzxdzydiff_ztab_dzxtab_dzydiff_dzxdiff_dzys r-check_continuityz;test_triinterpcubic_C1_continuity..check_continuitysA  B"%%(H!III B"%%(H!III %5' *1 -!**E7UG< c   %a 3 %c!ffQi 8 %c!ffQi 8ff-1)2266B'S=S=&'!),(GAI.(GAI.r/)rr)rr)rrrOrPrrrrrrrrrrdrrrr rrrrr@g@rv)rQrrrrangerfloat64r!)rNraybxbycxcyr+r,rrIidofr'rGrHr@caser+s r-!test_triinterpcubic_C1_continuityrY s/>HR!HRHR "b"b"b"-.A "b"b"b"-.A)Y 9#Y 9FGI   1i 0FaG HHQbjj )hhq +hhq +1a& 3Qw!$tTAX~ 19AdG QYCqM QYCqM**616/2Cj: "b6!Q$<8"b6!Q$<8"b6!Q$<82b5#+2s{!;<2b5#+2s{!;<2b5#+2s{!;<2b58R-"R%(B!?@2b58B;"2RU2Xb["4D!EF2be8B;"2R2Xb["4D!EF2b5B;"2RU2b5["4D!EF9Gr/c d}d\}}tjj|||}|j|j }t ||zD]}t j||zt j}d||<tjj||t j||zd\}}tt j|||d\} } |||\} } } }| d| | k\zzd| | k\zz} | d| | k\zzd| | k\zz} t j| | | dz | | dz gg} t j| | dz | | dz | gg} t j| gd g} tjj| | | ||zd z||zd zf}|j|j }t ||zd zD]}t j||zd zt j}d||<tjj||t j||zd zd\}}tt j|||t jd t j} t jgd t j} t jgd t j} d}tjj| | | |}|j|j }t|t jgdgdgdgt jy)Nc ||z}tjtj|tjtj|dz tjtjd|tjtj||z tjtj||tjg}tjtj|tjtjd|tjtj|dz tjtj||tjtj||z tjg}tjdtj|tj ztj|dz tj  tj|dz tj  tj||z tj  tj||z tj  g}d||d|zdz |dz d|<d|d|zdz d|zdz |dz d|<|||||z||zffS)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. rr rNrOrNr)rQ concatenater[ronesrQ)r3mlrowscolsvalss r-poisson_sparse_matrixz.poisson_sparse_matrixes aC~~ IIarxx ( IIac *BIIa"((,K IIac *BIIa"((,KMN~~ IIarxx ( IIa"(( +RYYqs"((-K IIa"(( +RYYqs"((-KMN~~ bggarzz* * WWQqS + +bggac.L-L WWQqS + +bggac.L-LNO !#Qqs1u acf1f$&QqSU1Q3q5!A#&q&!T4!A#qs++r/)rrNrrPr:)Arx0tol)r1r )rPrPrPrPrr)rr rrrr r rrrrrr r r r r )rr rr r rrr r r r r rrrrr)rr)rProrO)rorP@)rOrhrP)r_triinterpolate_Sparse_Matrix_coo compress_cscto_denserPrQrrQ_cgrr&r\r]rr)rcr3r^mat mat_denseitestrr+_i_zeroj_zerorbr`radims r-test_triinterpcubic_cg_solverruas ,2FQ    1 13HA3N OC Iqs; HHQqS +%##''#rxx!},2(41!"&&A"6: ; VV/15D$a !TV^$ $q$&.'9 9D !TV^$ $q$&.'9 9D >>4&&(FF1H!EF GD >>4&(FF1Hf!EF GD >>4!12 3D    1 1$d34Q37AaC!G2D FC IqsQw; HHQqS1WBJJ /%##''#rwwq1uqy7I,2(41!"&&A"6: ; 772RZZ (D 88G(( $D 88G(( $D C    1 1$dC HC IilL329;*EFr/cNd\}}tj|d|zddg}tj|| ddg}tjdtj}gdgdg}tjdd g}tjdd tj zd D]z}tj ||ztj||zz}tj| |ztj ||zz} tj|| |} tj| |d } tjj| } | j} tj| d d z |dddf<tdD]/}tj| d d | dd|fzz ||d zddf<1t!tj"tj$|dtjddgtj}y)N)rOgˡE?rrOrPrNrrrrrrrr rrr)rQrrrQrSr<r;r=rrr!ri_DOF_estimator_geomcompute_geom_weightsrrPrrVr%)rrRr+r,r'rsum_wthetax_roty_rotrIr* dof_estimatorweightsitris r- test_triinterpcubic_geom_weightsrs HR "c"fb"%&A "rc2r"#A "**%AI&I HHaV ER255"- Hu a"&&-/1q 266%=?2##E5)<..vqvF ,,@@L 446ffWa(1,ad !H GD!vvgq1Agag6F4FFE$q&!)  G!"&&Q"?"$((B82::"F H Hr/c 8d}tjgd}tjddddd|dg}ddgddgddgddgddgddgg}|D]}|d|z|d|zz}|d |z|d|zz}||}}d|zd |zz } gd gd gd gd gdgdgdgdg} tj||| } tjtj | j tj| j d} tjtj | jtj| jd} tj| | \} } | j} | j} | j| | dk(}tjjd| zd | zz |}tj| | }tj| | }tj| | d}|||fD]}|| | }t||d}| j |df}| j |df}tj| j || j |d} tj| j|| j|d} d| zd | zz }|||fD]J}|j#| | |tj$dtj&z\}t||Ly)NrOrr rr rrrr9rrrrrrrrrrrNrcr) tri_index)rQrrrrSrVr+rWr,rRrTrmar r!rr_interpolate_multikeysr]r)rrey0transformationstransformationr{r|r+r,r'rrIrrmask_out zs_targetr(r)r*r+r,rpt1pt2s r-test_triinterp_colinearrs E 1 2B 2A1eQ/ 0B 1v1v1v1vBx"aIO)#5q!"$~a'8';;""2%q(9"(<<A FT!VO 9i 96 ##Aq)4 [[)266&((+;R @ [[)266&((+;R @R$B XXZ XXZ*F((*2r2b8EEKKR$r' 1KA 2261= //: ..vqvF $k:> 5FBB %i 4 5 tQw'tQw' [[# r : [[# r :Gd2g% $k:> 5F//B$rwwr'B"B0DCB %i 4 5A#5r/cd}d}d}d}tj|d|}tjd|zdtjz|z|d }tj|d tjf|d }|ddd ddfxxtj|z z cc<|tj |zj }|tj|zj }tj||}|||} tjd dd} tjd dd} tj| | \} } | j} | j} i} tdD]} dtjz|z | z}tj ||ztj||zz}tj| |ztj ||zz}tj || ztj|| zz}tj| | ztj || zz}tj|||j}tj|| }tj|| }tj|| d}|||d}dD];}||}| dk(r || | | |<|||}t!j"|| |=d}dD]}|dk(r||z}|}|| z}| }n|}||z}| }|| z}tj|||j}tj|| }tj|| }tj|| d}|||d}dD]'}||||}t!j"|| |)y)Nrrc333333?ctjd|z d|z }tjd|z d|z }tj| dz | dz }tj| dz | dz }dtj|dz dzdz zdztjd|zztj|dz dzdz dztjd|zzzd |dz|dzzzz }tj ||z tj |tj |z z S Nrrrrcr g>@@g&@ryrQhypotarctan2expr;rWrVr+r,r1theta1r2theta2r's r-r'z)test_triinterp_transformations..z" XXcAgsQw 'C!GS1W- XXqb3hS )QBHqb3h/B #A%&s*RVVBvI->>vvr"uqj!!#S(266#f*+==>1a4!Q$;  !q ! bffQiq 122r/ffffff?rrFendpoint.r rrPrerr)linmin_ErgZ $.ArDr+)rQrSr<repeatnewaxisr;flattenr=rrrRrTrPrr r!r"r)n_anglesn_radii min_radiusr'radiianglesrertriang0z0xs0ys0 interp_z0i_anglerzr+r,rrrIr(r)r* dic_interp interp_keyr+interpz scale_factor scaled_axiss r-test_triinterp_transformationsrsHGJ3 KK D' 2E [[Xqw'9!E3F YYvc2::o.a @F 1add7OruuX~%O v  ' ' )B v  ' ' )B  R(G 2rB ++c2r "C ++c2r "C{{3$HC ))+C ))+CI8H"%%("W, FF5M" rvve}R/ / VVE]N2 u b 0 0 VVE]3 s!2 2ffUm^C "&&-"3 3##Aq'*;*;<2262> //; ..vrG **(* 3 HJ +F!|(.sC(8 *% R.001::1FH  HH0L!M # r!AA#BBAr!AB#B##Aq'*;*;<2262> //; ..vrG **(* 3 MJ,j,R4G  , ,Wi 6K L M)Mr/ztri_smooth_contouring.pngTg;On?) remove_textrfcd}d}d}d}tj|d|}tjd|zdtjz|z|d }tj|d tjf|d }|ddd ddfxxtj|z z cc<|tj |zj }|tj|zj }tj||}|||} |jtj||jjd ||jjd |ktj|} | j| d \} } tj ddd} t#j$|ddt#j&| | | dy)Nrrcrctjd|z d|z }tjd|z d|z }tj| dz | dz }tj| dz | dz }dtj|dz dzdz zdztjd|zztj|dz dzdz dztjd|zzzd |dz|dzzzz }tj ||z tj |tj |z z Srrrs r-r'z%test_tri_smooth_contouring..zkrr/rrrFr.r rrNsubdivrOrPg?rz0.5)lwcolorblack)levelscolors)rQrSr<rrr;rr=rrrHrrrUniformTriRefiner refine_fieldr[rtriplot tricontour)rrrr'rrrerrrrefinertri_refi z_test_refirs r-test_tri_smooth_contouringrdsHGJ3 KK D' 2E [[Xqw'9!E3F YYvc2::o.a @F 1add7OruuX~%O v  ' ' )B v  ' ' )B  R(G 2rB RXXb!2!2388a8@ !2!2388a8@B!"# $$W-G#00A0>Hk YYr2u %FKKCu-NN8[Hr/ztri_smooth_gradient.pnggZd;O?c pd}d}d}d}tj|d|}tjddtjz|d }tj|d tjf|d }|ddd ddfxxtj|z z cc<|tj |zj }|tj|zj }|||}tj||} | jtj|| jjd || jjd |ktj| } | j|d \} } tj | | } | j#| j$| j&\}}tj||}t)j*t)j,j/dt)j0| dtj2ddd}t4j6d}t)j8| | ||gdt)j:| j$| j&||z ||z ddd dddd y)Nc|dz|dzz}tj||}tj||z }tj||z tj|tj|z z S)zAn electric dipole potential V.r)rQrr;rWrV)r+r,r_sqrzr's r-dipole_potentialz2test_tri_smooth_gradient..dipole_potentialsa!tad{ 1a  FF5M$ q ! q "&&) 344r/rcrrrrFr.r rrrequalz0.8)rrOrPg{Gz?hot)rorPrPrP)rcmap linewidthsrrmbluegy&1|?rrO)unitsscalezorderrwidth headwidth headlength)rQrSr<rrr;rr=rrrHrrrrrr!r#r+r,rrgca set_aspectrr[mpl colormapsrquiver)rrrrrrr+r,VrIrrrtciExEyE_normrrs r-test_tri_smooth_gradientrs75HGJ KK D' 2E [[AbeeGX >F YYvc2::o.a @F 1add7OruuX~%O rvvf~ &&(A rvvf~ &&(AAA   1 %F OOBHHQv//05515=v//05515=? !" $$V,G#0010=Hk  # #FQB /C \\&((FHH -FB XXb" FJJLGGI!KKe$ YYr2t $F == DNN8[d24JJvxx2f9biQfbR9r/c Jtjgd}tjdddtjdzddg}tjgdgdgd gtj }tjgd t }t j |||| }t j|}t|jd dgt|jdtjjdddtjdzz tjg|tjgd}tjgd}tjgdgtj }t j |||}t j|}t|jtjdgd}d}tjdd|d z}tj||d||d\}}|j!}|j!}t j ||t#|d z}t j|}|j%d}tj&dt } gd} d| | <t)|| tj&dt }d|d<|j+||j%d}gd} d| | <t)|| y)NrOrPrrOrorOrrrrPrrrrFFTrr gV͞^&?F)rescalero)rOrPro)rPrOrrc^tj||ztj|zSrv)rQr%sign)r+rs r-powerztest_tritools..powers!vvay!|BGGAJ&&r/rrr)rr rrrrrr"#~TP),->?NOrQRSbr@tu)rQrsqrtrboolrr TriAnalyzerr scale_factors circle_ratiosr masked_arraynanrSrRrTr$get_flat_tri_maskrrrH) r+r,rrrIanalyserr3r mask_flat verif_mask corners_index center_indexs r- test_tritoolsrss &'A "b#bggbk/334A)Y :"((KI 88( 5D   1id ;F'Hh44q-6HIu- CR ^!4bff=tDF A #$A)BHH5I   1i 0F'Hh446"G A' CQqS!A ;;uQ|U1d^ 4DAq  A  A   10B1Q30G HF'H**3/I#T*JGM $J}y*- 88Ct $DDH OOD**3/IML#J|y*-r/cd}d}tjdd|dz}tj||\}}|j}|j}tjd|dzzt }d||dzdt j||t|dz|}t j|}|j| }|j}|j} ||dzz} tjdd| dz} tj| | \} } | j} | j} tjtj| d | zzd tj|d | zzd } t| d|j }tj"|j|j$d d z }tj"|j|j$d d z }|j'}|||}|j |}t||tj(gd}tj(gd}t j||gdgdgt j||gdgdgg}tj*|dz |dz }g}t-dD]}t j||}|j/|d \}}tj0|j|j|fd}|tj2|dddf|dddff}||gz }t5|d|dy)NrrrrPr rTrrrrrrrOrPrOrPrOrOrPrPrrrrrrrr)rQrSrRrTrr rrr$rrefine_triangulationr+r,isinaroundrrrrrrrrPrdstacklexsortr)r3rr+r,rrIr refi_triangx_refiy_refin_refix_verify_verifind1d refi_maskrefi_tri_barycenter_xrefi_tri_barycenter_y tri_finderrefi_tri_indices refi_tri_maskr'xyz_datairefined_triang refined_zxyzs r-test_trirefiner3s A F CQqS!A ;;q! DAq  A  A 88AadF$ 'DDAK   10B1Q30G%)+F$$V,G..f.=K ]]F ]]F ]Fkk#r6!8,G{{7G4GWmmoGmmoG GGBIIgs7{3Q7IIfc&j115 7Eud#  IFF;==1F1F#G()+-/0FF;==1F1F#G()+-/0%%'J!"7"79KK 01My-0 '(A '(A  A 9'=>  A 9'=>@F S!c'"AH 1X((3$+$8$81$8$E! ii))>+;+;YGHK"**c!Q$iQT345SE  hqk8A;7r/r>linearcubic)idsctjddddf\}}tj|jd}tj|jd}tj|}t j ||}t j|}|||}|j||dy)Nr)triinterpolatorr) rQmgridrr zeros_likerrrr)r>r+r,r'rrr+s r-test_trirefine_maskedr;0s 88BQBF DAq !))+q!A !))+q!A aA   Q "C$$S)G #q !F F1=r/cg}t|dz D]N}t|dz D];}|||zz}|dz||zz}||dz|zz}|dz|dz|zz}||||g|||ggz }=Ptj|tjS)zU Return (2*(N-1)**2, 3) array of triangles to mesh (N, N)-point np.meshgrid. r r)rPrQrr)r3rr/jrrrds r-r$r$Bs C 1Q3Z*qs *AAaCA1! AQqS!G A11aA Q1I1ay) )C  ** 88Crxx ((r/ctjj}tjgdgdgdgdg}|j |dJdy)Nrrrrrzb-z(triplot should return the artist it adds)rrrrrr)rrIs r-test_triplot_returnr@QsW  ! ! #B   2i(*F ::fd # /323 /r/cZtjgdgdg}tj|rJtj|dd}tj|sJtjgd}tjgd}tj|||}tj|||}tj |}tj |}|j d }|j d } t|j| jy) Nr)rr rTF)rorder)g(\?gzG?gQ?g{Gz?)gQ@@gzGA@gQA@gףp= A@r r) rQr isfortranrrrrrr) triangles1 triangles2r+r,triang1triang2refiner1refiner2 fine_triang1 fine_triang2s r-,test_trirefiner_fortran_contiguous_trianglesrM[s9i01J||J'' '*4s;J << ## # )*A -.A  Az2G  Az2G%%g.H%%g.H000:L000:L|--|/E/EFr/c@tjddd}ttjtj||\}}||dz kD|dkz|dkDz}||||}}tj d}|tj |z|tj|zz }|tj|z|tj |zz}tj||}|j}d|_ |j} t|| y)Nrrrr g333333g333333) rQrSmaprTrRradiansr;r=rrrGrYr) xir+r,wrzx1y1rIqhull_neighbors own_neighborss r-test_qhull_triangle_orientationrXrs RC B rxxR, -DAq QUq5y!QX.A Q41qA JJrNE 266%=1RVVE]? *B 266%=1RVVE]? *B  B 'F&&OF$$M 6r/ctjgd}tjdddtjdzddg}tjgdgdgd gtj }tjgd t }t j |||| }t j|}|jy) NrrOrrrrPrrrrrr) rQrr rr rrr _get_compressed_triangulation)r+r,rrrIrs r-#test_trianalyzer_mismatched_indicesr[s &'A "b#bggbk/334A)Y :"((KI 88( 5D   1id ;F'H **,r/cgd}gd}gd}tjtjt5tj |||ddgdddy#1swYyxYw)N)rOrPrP)rOrOrP)rrr rPrO)rrr3rBrC tricontourf)r+r,r's r-"test_tricontourf_decreasing_levelsr^sQAAAJJL z "- 1a#s,---s AA'c  ddlm}tjtd5t jj dddtjtd5t jj tjgtjdgtjggdddddddtjgd tj }tjgd tj }tjtd 5t jj ||tjddggdddddddtjgd gtj }tjtd5t jj |||tjddgddddddtjtd5t jj |||dtjdggdddddtjtd5t jj |||ddtjdggddddt jj |||dddd}tjtd5|jgdddddgdfD]7}tjtd5|j|ddd9|jtjdgt|jtj d|jdt|jddgddgddggtjtd5t jj#dddtjtd5t jj#|tjdgdddtjgd }t jj#||}tjtd5|j%dddddtjtd5t jj'dddt jj'|}tjtd5|j)tjdgtjddgdddy#1swYexYw#1swYxYw#1swYNxYw#1swYxYw#1swYxYw#1swY3xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYMxYw#1swYxYw#1swYyxYw)Nr)_triz1__init__\(\): incompatible constructor arguments.r=z,x and y must be 1D arrays of the same lengthr r7F)rr r rr:z.triangles must be a 2D array of shape \(\?,3\)rzCmask 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)rrrz?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`r3rBrrrrCrQrrQint_calculate_plane_coefficientsrHr get_edgesemptyTriContourGeneratorcreate_filled_contourTrapezoidMapTriFinder find_many) r`r+r,rrIrr'tcgrs r-test_internal_cpp_apirks  F H!  !  M O& rxx|RXXqc]BHHbTNBPRTV$ && "**-A "**-A  C EL q!RXX1vh%7RUKL 88YKrww /D  % &L q!T288QF+;RUK L  M OK q!T2rxx!EJK  % &L q!T2r288bTF3CUK L XX # #Aq$BE BF  2 30 ++B/ 0 Q" ]])* " OOD !  " "" OOBHHdV$%v'')288F+;< OOBv'')QFQFQF+CD  F H' $$&'  T V< $$VRXXqc];< A (( & &vq 1C  I K( !!!Q'(  F H) &&() ..v6I  K M=BHHaSM288QF+;<==c!! &&LL LL KKLL00 " "'' <<(( ))==sV$$A!V16=;W ;W9;W%<W2:W?7X 95XX&>X3W WW"%W/2W<?X XX#&X03X=Y c"tjgd}tjgd}d}tj||}tj||z||z}t |j t |j k(sJy)N)rr rr r)rrr r rg _B)rQrrrrUr)r+r,offsetrI triang_offsets r-test_qhull_large_offsetrosu $%A $%A F   1 %F&&q6z1v:>M v C (?(?$@ @@ @r/c Ngd}gd}tj||}tjt j t d5tj|dddtjgdddt j t d5tj|dddtj gdddt j t d5tj|dddtjgdddt j t d5tj|tjjgd gd  dddy#1swYxYw#1swYxYw#1swYxYw#1swYyxYw) NrrzCz array must not contain non-finite values within the triangulationr=rr rz9z must not contain masked points within the triangulation)rr rr)r rrrr) rrrrr3rBrCr]rQinfrrr)r+r,rIs r-test_tricontour_non_finite_zrrsQAA   1 %FJJL z*K L3 Aq"&& 123 z*K L4 Aq266' 234 z*K L3 Aq"&& 123 z*D EN  L| LMNN334433NNs0)E6*F')F3:F6FF FF$c&gd}gd}gd}tj\}}|j|||}|j|||}|j|jk7sJ|j||}|j|jk(sJy)N)rOrrP)rOrPrO)rPror)rrr]r_contour_generator)r+r,r'rrtcs1tcs2tcs3s r-test_tricontourset_reuserxs AAAllnGC >>!Q "D ==Aq !D  " "d&=&= == = ==q !D  " "d&=&= == =r/png) extensionscgd}gd}gdg}|jj|||d|jj|||dy)Nr9r:rz--)ls) linestyle)rr)fig_testfig_refr+r,datas r-test_triplot_with_lsr,sSAA ;D 1dt4 q!TT:r/cgd}gd}gdg}tj\}}|j|||d\}}|j\}}|dgk(sJt |dk(sJ|d|usJy)Nr9r:rlabel)rr r)rrrget_legend_handles_labelsrU) r+r,rrrlinesmarkershandleslabelss r-test_triplot_labelr5sAA ;DllnGCZZ1d'Z:NE7224OGV gY   w<1   1:  r/cgd}gd}tj||}tj\}}|j |gddg}|j }t |dk(sJddgddgddgg}t|dj|t|djgd t|djd |g|j |gd dg}|j }t |dk(sJd dgd d gdd gddgd dgg}t|dj|t|djgdt|dj|gy)NrrNrNrrrrrNrNrr rrrrrrr rrrtF) closed_onlyrrrrr rr rrrr) rrrrr get_pathsrUrverticesrcodes to_polygonsr+r,rIrqrcspathsexpected_verticess r-test_tricontour_pathrAs_AA   1 %F LLNEAr vu =B LLNE u:??Q!Q!Q0eAh//1BCuQx~~y1 a/2C1DF vu =B LLNE u:??Q!Q!Q!Q!Q@eAh//1BCuQx~~'78eAh2247H6IJr/c Vgd}gd}tj||}tj\}}|j |gdddg}|j }t |dk(sJddgddgddgddgddgg}t|d j|t|d jgd t|d j|g|j |gd ddg}|j }t |dk(sJd d gddgd d gd d gd d gg}t|d j|t|d jgd t|d j|g|j |gdd dg}|j }t |dk(sJd d gdd gddgd dgd d gddgddgddgddgddgg }t|d j|t|d jgdt|d jtj|dgy)Nrrrrrrr rrrrrgrN) r rrrrr rrrrrM)rrrrr]rrUrrrrrrQsplitrs r-test_tricontourf_pathr[s2AA   1 %F LLNEAr c  CB LLNE u:??Q!Q!Q!Q!Q@eAh//1BCuQx~~'78eAh2247H6IJ c  CB LLNE u:??Q!Q!Q!Q!Q@eAh//1BCuQx~~'78eAh2247H6IJ s  DB LLNE u:??Q!Q!Q!Q!QQ!Q!Q!Q!QAeAh//1BCuQx~~'GHeAh224bhh?PSTRU6VWr/)returnN)DnumpyrQ numpy.testingrrrnumpy.ma.testutilsr testutilsr"r3rarmatplotlib.pyplotpyplotrmatplotlib.trirrmatplotlib.pathrmatplotlib.testing.decoratorsrrr r;rErKrarkrrr4r5rwrrrrrrrr6rYrurrrrrrr3r r!r;r$r@rMrXr[r^rkrorrrxrrrrr7r/r-rs(FF##  O'':/(".'HTA( HS1#JVaV  +, " ! ! *FZ#$%&6*<* =1d.N\6~SGlKF\H4;5|ZMz./TuM#IN#IL,-4UK/9L/9h5.p58p44335&02 > 2 > )3G.7. --X=vAN0 >(;); K4 Xr/