def test_DAD(self): A = poisson((50, 50), format='csr') x = sp.rand(A.shape[0]) b = sp.rand(A.shape[0]) D = diag_sparse(1.0 / np.sqrt(10**(12 * sp.rand(A.shape[0]) - 6))).tocsr() D_inv = diag_sparse(1.0 / D.data) # DAD = D * A * D B = np.ones((A.shape[0], 1)) # TODO force 2 level method and check that result is the same kwargs = {'max_coarse': 1, 'max_levels': 2, 'coarse_solver': 'splu'} sa = smoothed_aggregation_solver(D * A * D, D_inv * B, **kwargs) residuals = [] x_sol = sa.solve(b, x0=x, maxiter=10, tol=1e-12, residuals=residuals) del x_sol avg_convergence_ratio =\ (residuals[-1] / residuals[0]) ** (1.0 / len(residuals)) # print "Diagonal Scaling Test: %1.3e, %1.3e" % # (avg_convergence_ratio, 0.25) assert (avg_convergence_ratio < 0.25)
def test_DAD(self): A = poisson((50, 50), format='csr') x = rand(A.shape[0]) b = rand(A.shape[0]) D = diag_sparse(1.0 / sqrt(10 ** (12 * rand(A.shape[0]) - 6))).tocsr() D_inv = diag_sparse(1.0 / D.data) DAD = D * A * D B = ones((A.shape[0], 1)) # TODO force 2 level method and check that result is the same kwargs = {'max_coarse': 1, 'max_levels': 2, 'coarse_solver': 'splu'} sa = rootnode_solver(D * A * D, D_inv * B, **kwargs) residuals = [] x_sol = sa.solve(b, x0=x, maxiter=10, tol=1e-12, residuals=residuals) avg_convergence_ratio =\ (residuals[-1] / residuals[0]) ** (1.0 / len(residuals)) # print "Diagonal Scaling Test: %1.3e, %1.3e" % # (avg_convergence_ratio, 0.4) assert(avg_convergence_ratio < 0.4)
def test_DAD(self): A = poisson((50, 50), format="csr") x = rand(A.shape[0]) b = rand(A.shape[0]) D = diag_sparse(1.0 / sqrt(10 ** (12 * rand(A.shape[0]) - 6))).tocsr() D_inv = diag_sparse(1.0 / D.data) DAD = D * A * D B = ones((A.shape[0], 1)) # TODO force 2 level method and check that result is the same kwargs = {"max_coarse": 1, "max_levels": 2, "coarse_solver": "splu"} sa = smoothed_aggregation_solver(D * A * D, D_inv * B, **kwargs) residuals = [] x_sol = sa.solve(b, x0=x, maxiter=10, tol=1e-12, residuals=residuals) avg_convergence_ratio = (residuals[-1] / residuals[0]) ** (1.0 / len(residuals)) # print "Diagonal Scaling Test: %1.3e, %1.3e" % # (avg_convergence_ratio, 0.25) assert avg_convergence_ratio < 0.25