
    _-Phe                     j    d Z ddlmZ ddlZddlmZ ddlZddlm	Z	m
Z
 ddlmZ  G d de          ZdS )	zTest simple iteration.    )partialN)TestCase)minimal_residualsteepest_descent)normc                        e Zd Zd Zd Zd ZdS )TestSimpleIterationsc                    g | _         g | _        t          j        dgg          }t          j        dg                              dd          }t          j        d          }| j                             |||ddd           | j                            |||ddd           t          j        dd	gd
dgg          }t          j        ddg                              dd          }t          j        d          }| j                             |||ddd           | j                            |j                            |          ||ddd           t          j        ddgddgg          }t          j        ddg                              dd          }t          j        d          }| j                            |j                            |          ||ddd           t          j        g dg dg dg dg          }t          j        g d                              dd          }t          j        d          }| j                             |||ddd           | j                            |j                            |          ||ddd           t          j        |t                    }|dxx         dz  cc<   |dxx         dz  cc<   |dxx         d z  cc<   |d!xx         d z  cc<   t          j        g d"                              dd          }t          j
        d          }| j                            |                                j                            |          ||dd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        g d-                              dd          }t          j        d.          }d/|d<   d0|d1<   | j                             |||d2d3d           | j                            t          j                            d4                                          ||d2d5d           d S )6N333333?333333@   )r   r   g|=)Abx0maxiterreduction_factorg      @g333333333333@g@g	gffffff@)   r      皙?y       333333y333333@333333?)r           r   r   )r   g      $@       @g      @)r   r   g"@g{Gz)      r   r         &@)      ?r   r   Gz)r   r   g333333?)dtype)r   r   y        @)   r   y        q=
ףp?)r   r   y              ?)r   r   )y      ?      y       @333333r   r   )
gfffffV@r   r   r   r   r   r   r   g      r   )
r   g     F@g333333@r   r   g333333@r   r   r   r   )
r   r   g      3@r   r   g?r   gr         "@)
r   r   r   g      @r   r   r   g@r   r   )
r   r   r   g      5@g      >@r   r   r   r   r   )
r   r   r   r   g      @r   r   r   r   )
g @r!   r   r   r   r          @r   r   r   )
r   r   r   g      A@r   r   r   gfffffU@g(r   )
r   r   r   r   r   g333333ӿr   r   r!   r   )
r    r   r   r   gffffff!@r   r   r   r   gffffff&@)
r   r   g?r"   r   gffffffg&@r   r   r   )
   r   g333333&@g    r   g\(\?)r#         ?)definite_cases	spd_casesnparrayreshapezerosappendTdotcomplexonesconjpyamggallerypoissontoarray)selfr   r   r   s       i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pyamg/krylov/tests/test_simple_iterations.pysetUpzTestSimpleIterations.setUp   s     HseWHcUOO##B**Xf"""8=$? $? 	@ 	@ 	@AARA38: : 	; 	; 	; HsDkCj" # #HdC[!!))"a00Xf"""8;$= $= 	> 	> 	>ACGGAJJQbQ368 8 	9 	9 	9 HsElo' ( (HdC[!!))"a00XfACGGAJJQbQ368 8 	9 	9 	9 H''''''***(((* + + H)))**222q99Xf"""8;$= $= 	> 	> 	>ACGGAJJQbQ368 8 	9 	9 	9 HQg&&&	$4	$5	$4	$4H77788@@QGGWV__AFFHHJNN1$5$5ARTU368 8 	9 	9 	9 HCCCAAACCCBBBBBBBBBAAAFFFBBBCCC	E 	F 	F H + + + , ,,3GBNN 	
Xg11"""8<$> $> 	? 	? 	?$}44U;;CCEE$%RA368 8 	9 	9 	9 	9 	9    c                 j   t           j                            d           fd}| j        D ]g}|d         }|d         }|d         }|d         }|d         }g t	          |||          }t          |||d	||
          \  }	}
t          t          j        |          t          j        |                    |		                    dd                              z
            }t          t          j        |          t          j        |                    |	                    dd                              z
            }||z  }||k     sJ |j
        t          k    r9t          t                    dz
            D ]}|dz            |         k    sJ it          j                            dd          }t           j                            |j        d         d          }t           j                            |j        d         d          }g t	          |||          }g }t          j        |          }t          |||dd||                                |          \  }	}
|d         |d         z  dk     sJ t          t                    dz
            D ]}|dz            |         k    sJ d S )Nr   c           
                               dt          j        |                                 t          j        || z                      z  t          j        |                                |                                           z
             d S )Nr%   )r,   r(   r.   ravel)xr   r   fvalss      r7   cbz6TestSimpleIterations.test_steepest_descent.<locals>.cb]   sn    LLRVAGGIIrxA???6!''))QWWYY778 9 9 9 9 9r9   r   r   r   r   r   )r   r   缉ؗҜ<r   tolr   callbackr   r   r#   r#   csrformat:0yE>   rB   r   	residualsMrC   )r(   randomseedr'   r   r   r   r<   r.   r*   r   r/   rangelenr2   r3   r4   randshapesmoothed_aggregation_solveraspreconditioner)r6   r?   caser   r   r   r   r   rC   r=   _norm1norm2actual_factoriresvecsar>   s                    @r7   test_steepest_descentz*TestSimpleIterations.test_steepest_descentY   s   
	q	9 	9 	9 	9 	9 N 	2 	2DS	AS	AdB9oG#$67 ErQ!,,,H#AqRU,3hH H HDAq!rxaiiA6F6F0G0G'H'HHIIE!rxbjjQ6G6G0H0H'I'IIJJE!EMM #33333w'!!s5zz!|,, 2 2A 1:q11111 M!!(5!99INN171:q))Y^^AGAJ**2a(((.q111bdB*0B4G4G4I4I)13 3 31 bz&)#d****s5zz!|$$ 	* 	*A1:q)))))	* 	*r9   c                    t           j                            d           | j                            | j                   fd}| j        D ]}|d         }|d         }t           j                            |j        d                   }t          j        |          }|d         }|j	        t          k    r;g t          ||          }t          |||d||          \  }	}
t          t          j        |          t          j        |                    |	                    d	d
                              z
            }t          t          j        |          t          j        |                    |                    d	d
                              z
            }||z  }||k     sJ |j	        t          k    r9t#          t%                    d
z
            D ]}|d
z            |         k    sJ t&          j                            dd          }t           j                            |j        d         d
          }t          j        |          }g t          ||          }g }t'          j        |          }t          |||dd||                                |          \  }	}
|d	         |d         z  dk     sJ t#          t%                    d
z
            D ]}|d
z            |         k    sJ d S )Nr   c                                          t          j        t          j        |                                 t          j        || z                                           d S )N)r,   r(   sqrtr.   r<   )r=   r   r>   s     r7   r?   z6TestSimpleIterations.test_minimal_residual.<locals>.cb   sE    LL		28AE??!C!CDDEEEEEr9   r   r   r   )r   r@   rA   r   r   rD   rE   rF   rH   rI   rJ   )r(   rM   rN   r&   extendr'   rQ   rR   
zeros_liker   r/   r   r   r   r<   r.   r*   rO   rP   r2   r3   r4   rS   rT   )r6   r?   rU   r   r   r   r   r   rC   r=   rV   rW   rX   rY   rZ   r[   r\   r>   s                    @r7   test_minimal_residualz*TestSimpleIterations.test_minimal_residual   s   
	q""4>222	F 	F 	F 	F 	F ' 	6 	6DS	A9oG
,,Bb!!A#$67w'!! "2+++'1,1719; ; ;1 RXa[[28AEE!))B:J:J4K4K+L+LLMMRXa[[28AEE"**R:K:K4L4L+M+MMNN %$'777777g%%"3u::a<00 6 6$QqSzU1X55555 M!!(5!99Y^^AGAJ**M"2###.q111bdB*0B4G4G4I4I)13 3 31 bz&)#d****s5zz!|$$ 	* 	*A1:q)))))	* 	*r9   N)__name__
__module____qualname__r8   r]   rc    r9   r7   r	   r	      sF        K9 K9 K9Z.* .* .*`0* 0* 0* 0* 0*r9   r	   )__doc__	functoolsr   numpyr(   numpy.testingr   r2   pyamg.krylovr   r   pyamg.util.linalgr   r	   rg   r9   r7   <module>rn      s                " " " " " "  ; ; ; ; ; ; ; ; " " " " " "n* n* n* n* n*8 n* n* n* n* n*r9   