def test_aspreconditioner(self): from pyamg import smoothed_aggregation_solver from scipy.sparse.linalg import cg from pyamg.krylov import fgmres A = poisson((50, 50), format='csr') b = rand(A.shape[0]) ml = smoothed_aggregation_solver(A) for cycle in ['V', 'W', 'F']: M = ml.aspreconditioner(cycle=cycle) x, info = cg(A, b, tol=1e-8, maxiter=30, M=M) # cg satisfies convergence in the preconditioner norm assert (precon_norm(b - A * x, ml) < 1e-8 * precon_norm(b, ml)) for cycle in ['AMLI']: M = ml.aspreconditioner(cycle=cycle) x, info = fgmres(A, b, tol=1e-8, maxiter=30, M=M) # fgmres satisfies convergence in the 2-norm assert (norm(b - A * x) < 1e-8 * norm(b))
def test_aspreconditioner(self): from pyamg import smoothed_aggregation_solver from scipy.sparse.linalg import cg from pyamg.krylov import fgmres A = poisson((50, 50), format='csr') b = rand(A.shape[0]) ml = smoothed_aggregation_solver(A) for cycle in ['V', 'W', 'F']: M = ml.aspreconditioner(cycle=cycle) x, info = cg(A, b, tol=1e-8, maxiter=30, M=M) # cg satisfies convergence in the preconditioner norm assert(precon_norm(b - A*x, ml) < 1e-8*precon_norm(b, ml)) for cycle in ['AMLI']: M = ml.aspreconditioner(cycle=cycle) x, info = fgmres(A, b, tol=1e-8, maxiter=30, M=M) # fgmres satisfies convergence in the 2-norm assert(norm(b - A*x) < 1e-8*norm(b))