
    _-Ph6                        d Z ddlm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 dd	d
ifdddd	d
ifddd	d
ifddd	d
ifdd	d
ifdd	d
ifg
Zdddddgddgfdddgdfdddddifdfdddifdddifgdfdg d fgZdd	d!ifdgdd	d"ifdggdd	d"ifdgdd	d!ifdggdddifddd#ifgdddifddd#ifggdd	d!ifdgdd	d"ifdggd$d	d"ifdgd$d	d!ifdggdddifd%dd#ifgdddifd%dd#ifgggZdd	d!ifdgdd	d!ifdggdd	d
ifdgdd	d"ifdggdddifddd#ifgdddifdddifggdd	d"ifdgdd	d"ifdggd$d	d"ifddd#ifgd$d	d!ifdddifggddd#ifd%dd#ifgdddifd%dd#ifgggZ G d& d'e          Z G d( d)e          ZdS )*zTest prolongation smoothing.    )TestCase)sparse)poisson)smoothed_aggregation_solverruge_stuben_solver)profile_solver)change_smoothersgauss_seidelsweep	symmetricjacobi
richardsonsor	chebyshevgauss_seidel_ne	jacobi_negauss_seidel_nrschwarzstrength_based_schwarz)r
   r   )r
   r   )r   r   )r   r   )cgnrcgne)r   r   
iterations   N   gmresmaxiter)cgr   r   forwardbackward   block_gauss_seidelblock_jacobic                       e Zd Zd ZdS )TestSmoothingc                    t          dd          }t          D ]W}t          |||d          }t          |          }|d         |d         z  dt	          |          z  z  d	k     sJ |j        sJ Xt          D ]s}t          |d
          }t          ||d         |d                    t          |          }|d         |d         z  dt	          |          z  z  d	k     sJ |j        rJ tt          D ]:}t          |d
          }t          ||d         |d                    |j        sJ ;t          D ]:}t          |d
          }t          ||d         |d                    |j        rJ ;d S )N)2   r&   csrformat
   )presmootherpostsmoother
max_coarser   g      ?gffffff?)r-   r    )r+   r,   )
r   methodsr   r   lensymmetric_smoothingmethods2r	   methods3methods4)selfAmethodml	residualss        e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pyamg/relaxation/tests/test_smoothing.pytest_solver_parametersz$TestSmoothing.test_solver_parametersI   s   HU+++ 	* 	*F,QF:@8:< < <B 'r**IbM)A,.#c)nn2DELLLL))))) 	. 	.F,Q2>>>BRVAYVAYOOOO&r**IbM)A,.#c)nn2DELLLL----- 	* 	*F,Q2>>>BRVAYVAYOOOO))))) 	. 	.F,Q2>>>BRVAYVAYOOOO-----	. 	.    N)__name__
__module____qualname__r;    r<   r:   r$   r$   H   s#        . . . . .r<   r$   c                       e Zd Zd ZdS )TestSolverMatrixc                    t          dd          }t          j        |j        d         d          }g d}|D ]}t	          ||ddd	          }|j        d         j        j        |k    sJ |j        d         j        j	        d         dk    sJ |
                    |           |j        d         j        j        |k    sJ |j        d         j        j	        d         dk    sJ dS )
zCheck that the matrix changes and that relaxation stays the same name.

        Relaxation parameters should change.  This is not checked.
        )   r'   r(   r   )r
   r   r   r   r"   r!   r   r   r   r   r   r   	cf_jacobi	fc_jacobicf_block_jacobifc_block_jacobir   r   r   r   noneNr   r    )r+   r,   
max_levelsr-   )r   r   identityshaper   levelsr+   r=   r6   datachange_solve_matrix)r5   r6   Anewregistersolverr8   s         r:   test_change_solve_matrixz)TestSolverMatrix.test_change_solve_matrixj   s   
 E%(((qwqz%888  ,  
	/ 
	/F#A0615/0Q@ @ @B 9Q<+4>>>>9Q<>&q)Q....""4(((9Q<+4>>>>9Q<>&q)Q.....
	/ 
	/r<   N)r=   r>   r?   rS   r@   r<   r:   rB   rB   i   s#        '/ '/ '/ '/ '/r<   rB   )__doc__numpy.testingr   scipyr   pyamg.galleryr   pyamgr   r   pyamg.util.utilsr   pyamg.relaxation.smoothingr	   r/   r2   r3   r4   r$   rB   r@   r<   r:   <module>r[      sC   " " " " " " " "       ! ! ! ! ! ! A A A A A A A A + + + + + + 7 7 7 7 7 7Wk23G[)*5656-.$w&<=	? +& k*UH,=>,!23[A1|Q/0$7 <"34A')*.0)))*, 34d;45t<> 7J"78(C 7I"67BD,*+hq8I-JK,*+hq8I-JKM 7I"67> 7J"78$?A#gz%:;\J#gy%9:LIK\1-.a013\1-.a01345  34d;34d;= 7K"898D 7J"78(CE,*+lA./1,*+lA./12 !7J"78$? 7J"78$?A#gz%:;,*+-#gy%9:,*+-. \1-.a013\1-.a01345(. . . . .H . . .B(/ (/ (/ (/ (/x (/ (/ (/ (/ (/r<   