
    _-Ph                         d Z ddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZ  G d d	e          Z G d
 de          ZdS )zTest adaptive SA.    N)TestCase)SparseEfficiencyWarning)poissonlinear_elasticity)smoothed_aggregation_solver)adaptive_sa_solverc                   &    e Zd Zd Zd Zd Zd ZdS )TestAdaptiveSAc                 D    t           j                            d           d S )Nl   "Iw nprandomseedselfs    e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pyamg/aggregation/tests/test_adaptive.pysetUpzTestAdaptiveSA.setUp       
	z"""""    c                    t          dd          }t          |d          \  }}t          |t          j        |j        d         df                    }t          j                            |j        d                   }g }g }|                    |dd	|
          }|                    |dd	|
          }	~~	|d         |d         z  dt          |          z  z  }
|d         |d         z  dt          |          z  z  }|
d|z  k     sJ d S )N2   r   csrformat   )num_candidatesr   B   绽|=maxitertol	residuals      ?g333333?)
r   r   r   r   onesshaper   randsolvelen)r   Aasaworksab
residuals0
residuals1sol0sol1conv_asaconv_sas               r   test_poissonzTestAdaptiveSA.test_poisson   s   HU+++(1===d(bgqwqz1o.F.FGGGINN171:&&

yyBEZyHHxx25JxGG$rNZ]2c*oo8MNb>JqM1sS__7LM #-''''''r   c                 ,   t          j        dt          d           t          dd          \  }}ddd	d
f}t	          |dd|          \  }}t          ||          }t          j                            |j	        d                   }g }g }	|
                    |dd|          }
|
                    |dd|	          }~
~|d         |d         z  dt          |          z  z  }|	d         |	d         z  dt          |	          z  z  }|d|z  k     sJ d S )NignorezHaving less target vectors)categorymessage)#   r=   bsrr   gauss_seidel	symmetric   )sweep
iterations      )r   improvement_itersprepostsmootherr   r   r    r!   r"   r&   r'   g?)warningsfilterwarningsUserWarningr   r   r   r   r   r*   r)   r+   r,   )r   r-   r   smootherr.   r/   r0   r1   r2   r3   r4   r5   r6   r7   s                 r   test_elasticityzTestAdaptiveSA.test_elasticity&   sC   ;(D	F 	F 	F 	F %8881"k$K$KL(1;<9AC C Cd )a000INN171:&&

yyBEZyHHxx25JxGG$rNZ]2c*oo8MNb>JqM1sS__7LM #-''''''r   c                 Z   t          j        dt                     t          dd          }|                    d          g}|                    |                                           |                    |                                           t          j	        
                    d           t          |t          j        d	          d
          d         }|D ]}t          j	        
                    d           t          |t          j        d	          d
          d         }t          t          j        |j        d         j                                        |j        d         j                                        z
                                                      dk     sJ |}d S )Nr:   )r;   )   rN   r   r   )r   r   )	blocksizei.)1   r   
   )initial_candidates
max_coarser   r&   g{Gz?)rH   rI   r   r   tobsrappendtocsctoarrayr   r   r   r   r(   absravellevelsr-   max)r   r-   casessa_oldAAsa_news         r   test_matrix_formatsz"TestAdaptiveSA.test_matrix_formatsA   s   3JKKKK F5)))6**+QWWYYQYY[[!!!
	y!!!#A"'':J:J/13 3 3346 	 	BINN9%%%';=77;K;K357 7 778:F r!2!4!<!<!>!>mB')1133"4 5 5 6 669ceetD D D DFF	 	r   N)__name__
__module____qualname__r   r8   rL   r`    r   r   r
   r
      sP        # # #( ( (,( ( (6    r   r
   c                       e Zd Zd Zd ZdS )TestComplexAdaptiveSAc                 D    t           j                            d           d S )NiFYvr   r   s    r   r   zTestComplexAdaptiveSA.setUpX   r   r   c                    g }t          dd          }|                                }|j        dt          j                            |j                  z  z   |_        |                    |df           d|z  }|                    |df           |D ]\  }}t          |dd	          \  }}t          j	        |j
        d
         f          }t          j                            |j
        d
                   dt          j                            |j
        d
                   z  z   }g }	|                    ||dd|	          }
~
|	d         |	d
         z  dt          |	          z  z  }||k     sJ d S )Nr   r   r   y        h㈵>g      ?y              ?r   r@   )r   symmetryr   r    r!   )x0r#   r$   r%   r&   r'   )r   copydatar   r   r*   nnzrU   r   zerosr)   r+   r,   )r   r\   r-   Airratior.   r/   r1   rj   r2   r4   r6   s               r   r8   z"TestComplexAdaptiveSA.test_poisson[   sq    HU+++VVXX'EBINN26$:$:::b$Z    AXb$Z     	% 	%IAv,Qq;WWWKS$ !'!*''A
,,tbinnQWQZ6Q6Q/QQBJ99Q2ru'1  3 3D B*Q-/S3z??5JK  f$$$$$!	% 	%r   N)ra   rb   rc   r   r8   rd   r   r   rf   rf   W   s2        # # #"% "% "% "% "%r   rf   )__doc__rH   numpyr   numpy.testingr   scipy.sparser   pyamg.galleryr   r   pyamg.aggregationr   pyamg.aggregation.adaptiver   r
   rf   rd   r   r   <module>rx      s           " " " " " " 0 0 0 0 0 0 4 4 4 4 4 4 4 4 9 9 9 9 9 9 9 9 9 9 9 9H H H H HX H H HV&% &% &% &% &%H &% &% &% &% &%r   