xref: /petsc/src/binding/petsc4py/test/test_mat_schur.py (revision 286aa49c2a5e5b47208eefb5ad1ff389e936110b)
1*76a37b99SAlexanderfrom petsc4py import PETSc
2*76a37b99SAlexanderimport unittest
3*76a37b99SAlexander
4*76a37b99SAlexanderclass TestMatSchur(unittest.TestCase):
5*76a37b99SAlexander    def test(self):
6*76a37b99SAlexander        COMM = PETSc.COMM_WORLD
7*76a37b99SAlexander        TYPE = PETSc.Mat.Type.AIJ
8*76a37b99SAlexander        comm_size = COMM.getSize()
9*76a37b99SAlexander        A00 = PETSc.Mat().create(comm=COMM)
10*76a37b99SAlexander        A00.setType(TYPE)
11*76a37b99SAlexander        A00.setSizes([[2, 2*comm_size], [2, 2*comm_size]])
12*76a37b99SAlexander        A01 = PETSc.Mat().create(comm=COMM)
13*76a37b99SAlexander        A01.setType(TYPE)
14*76a37b99SAlexander        A01.setSizes([[2, 2*comm_size], [3, 3*comm_size]])
15*76a37b99SAlexander        A10 = PETSc.Mat().create(comm=COMM)
16*76a37b99SAlexander        A10.setType(TYPE)
17*76a37b99SAlexander        A10.setSizes([[3, 3*comm_size], [2, 2*comm_size]])
18*76a37b99SAlexander        A11 = PETSc.Mat().create(comm=COMM)
19*76a37b99SAlexander        A11.setType(TYPE)
20*76a37b99SAlexander        A11.setSizes([[3, 3*comm_size], [3, 3*comm_size]])
21*76a37b99SAlexander        S = PETSc.Mat().createSchurComplement(A00, A00, A01, A10, A11)
22*76a37b99SAlexander        M, N = S.getSize()
23*76a37b99SAlexander        self.assertEqual(M, 3*comm_size)
24*76a37b99SAlexander        self.assertEqual(N, 3*comm_size)
25*76a37b99SAlexander        m, n = S.getLocalSize()
26*76a37b99SAlexander        self.assertEqual(m, 3)
27*76a37b99SAlexander        self.assertEqual(n, 3)
28*76a37b99SAlexander        A00_dup, A00p_dup, A01_dup, A10_dup, A11_dup = S.getSchurComplementSubMatrices()
29*76a37b99SAlexander        self.assertEqual(A00_dup.id, A00.id)
30*76a37b99SAlexander        self.assertEqual(A00p_dup.id, A00.id)
31*76a37b99SAlexander        self.assertEqual(A01_dup.id, A01.id)
32*76a37b99SAlexander        self.assertEqual(A10_dup.id, A10.id)
33*76a37b99SAlexander        self.assertEqual(A11_dup.id, A11.id)
34*76a37b99SAlexander
35*76a37b99SAlexanderif __name__ == '__main__':
36*76a37b99SAlexander    unittest.main()
37