def test_iterative_refinement_single_rhs(self):
     context = MUMPSContext((self.n, self.arow, self.acol, self.aval, self.sym), verbose=False)
     context.factorize()
     e = np.ones(self.n, dtype=np.complex64)
     rhs = np.dot(self.A, e)
     x = context.solve(rhs=rhs)
     x = context.refine(rhs, 3)
     assert np.allclose(x, e)
Esempio n. 2
0
 def test_iterative_refinement_single_rhs(self):
     context = MUMPSContext(self.A, verbose=False)
     context.factorize()
     e = np.ones(self.n, dtype=np.complex64)
     rhs = self.A * e
     x = context.solve(rhs=rhs)
     x = context.refine(rhs, 3)
     assert np.allclose(x, e)
 def test_iterative_refinement_single_rhs(self):
     context = MUMPSContext(
         (self.n, self.arow, self.acol, self.aval, self.sym), verbose=False)
     context.factorize()
     e = np.ones(self.n, dtype=np.float64)
     rhs = np.dot(self.A, e)
     x = context.solve(rhs=rhs)
     x = context.refine(rhs, 3)
     assert np.allclose(x, e)
Esempio n. 4
0

(n, m) = A.shape
e = np.ones(n, 'd')
#rhs = np.zeros(n, 'd')
rhs = A*e

context = MUMPSContext(A, verbose=True)

print 'MUMPS version: ', context.version_number

context.analyze()
context.factorize()

x = context.solve(rhs=rhs)
x = context.refine(rhs, 10)

print x
sys.exit(0)


print "= " * 80

B = np.ones([n, 3], "d")
B[: ,1] = 2 * B[:,1]
B[: ,2] = 3 * B[:,2]

rhs = A * B

x = context.solve(rhs=rhs)
print x
Esempio n. 5
0
acol = np.array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=np.int32)
aval = np.array([1, 2, 3, 4, 5, 0, 7, 8, 9, 10, 0, 12, 13, 14, 15, 0], dtype=np.float64)

context = MUMPSContext((n, arow, acol, aval, False), verbose=True)

print 'MUMPS version: ', context.version_number

context.analyze()
context.factorize()

e = np.ones(n, dtype=np.float64)
rhs = np.dot(A, e)

x = context.solve(rhs=rhs)
print rhs, x
x = context.refine(rhs, -1)
print rhs, x
sys.exit(0)
np.testing.assert_almost_equal(x,e)


print "= " * 80

B = np.ones([n, 3], dtype=np.float64)
B[: ,1] = 2 * B[:,1]
B[: ,2] = 3 * B[:,2]
rhs = np.dot(A,B)

x = context.solve(rhs=rhs)
np.testing.assert_almost_equal(x,B)
Esempio n. 6
0
aval = np.array([1, 2, 3, 4, 5, 0, 7, 8, 9, 10, 0, 12, 13, 14, 15, 0],
                dtype=np.float64)

context = MUMPSContext((n, arow, acol, aval, False), verbose=True)

print 'MUMPS version: ', context.version_number

context.analyze()
context.factorize()

e = np.ones(n, dtype=np.float64)
rhs = np.dot(A, e)

x = context.solve(rhs=rhs)
print rhs, x
x = context.refine(rhs, -1)
print rhs, x
sys.exit(0)
np.testing.assert_almost_equal(x, e)

print "= " * 80

B = np.ones([n, 3], dtype=np.float64)
B[:, 1] = 2 * B[:, 1]
B[:, 2] = 3 * B[:, 2]
rhs = np.dot(A, B)

x = context.solve(rhs=rhs)
np.testing.assert_almost_equal(x, B)

print "x" * 80