def test_coarse_grid_solver(self):
        cases = []

        cases.append(csr_matrix(diag(arange(1, 5, dtype=float))))
        cases.append(poisson((4, ), format='csr'))
        cases.append(poisson((4, 4), format='csr'))

        from pyamg.krylov import cg

        def fn(A, b):
            return cg(A, b)[0]

        # method should be almost exact for small matrices
        for A in cases:
            for solver in [
                    'splu', 'pinv', 'pinv2', 'lu', 'cholesky', 'cg', fn
            ]:
                s = coarse_grid_solver(solver)

                b = arange(A.shape[0], dtype=A.dtype)

                x = s(A, b)
                assert_almost_equal(A * x, b)

                # subsequent calls use cached data
                x = s(A, b)
                assert_almost_equal(A * x, b)
Exemple #2
0
    def test_coarse_grid_solver(self):
        cases = []

        cases.append(csr_matrix(diag(arange(1, 5, dtype=float))))
        cases.append(poisson((4,), format='csr'))
        cases.append(poisson((4, 4), format='csr'))

        from pyamg.krylov import cg

        def fn(A, b):
            return cg(A, b)[0]

        # method should be almost exact for small matrices
        for A in cases:
            for solver in ['splu', 'pinv', 'pinv2', 'lu', 'cholesky',
                           'cg', fn]:
                s = coarse_grid_solver(solver)

                b = arange(A.shape[0], dtype=A.dtype)

                x = s(A, b)
                assert_almost_equal(A*x, b)

                # subsequent calls use cached data
                x = s(A, b)
                assert_almost_equal(A*x, b)
    def test_coarse_grid_solver(self):
        cases = []

        cases.append(csr_matrix(diag(arange(1, 5))))
        cases.append(poisson((4, ), format='csr'))
        cases.append(poisson((4, 4), format='csr'))

        # Make cases complex
        cases = [G + 1e-5j * G for G in cases]
        cases = [0.5 * (G + G.H) for G in cases]

        # method should be almost exact for small matrices
        for A in cases:
            for solver in ['splu', 'pinv', 'pinv2', 'lu', 'cholesky', 'cg']:
                s = coarse_grid_solver(solver)

                b = arange(A.shape[0], dtype=A.dtype)

                x = s(A, b)
                assert_almost_equal(A * x, b)

                # subsequent calls use cached data
                x = s(A, b)
                assert_almost_equal(A * x, b)
Exemple #4
0
    def test_coarse_grid_solver(self):
        cases = []

        cases.append(csr_matrix(diag(arange(1, 5))))
        cases.append(poisson((4,), format='csr'))
        cases.append(poisson((4, 4), format='csr'))

        # Make cases complex
        cases = [G+1e-5j*G for G in cases]
        cases = [0.5*(G + G.H) for G in cases]

        # method should be almost exact for small matrices
        for A in cases:
            for solver in ['splu', 'pinv', 'pinv2', 'lu', 'cholesky', 'cg']:
                s = coarse_grid_solver(solver)

                b = arange(A.shape[0], dtype=A.dtype)

                x = s(A, b)
                assert_almost_equal(A*x, b)

                # subsequent calls use cached data
                x = s(A, b)
                assert_almost_equal(A*x, b)