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