xref: /petsc/src/binding/petsc4py/test/test_pc.py (revision dcd9205a182b2f15c9088c83fb1fa060ac8df8e4)
1*0c103e04Smint Yzrfrom petsc4py import PETSc
2*0c103e04Smint Yzrimport unittest
3*0c103e04Smint Yzr
4*0c103e04Smint Yzrclass BaseTestPC:
5*0c103e04Smint Yzr    KSP_TYPE = None
6*0c103e04Smint Yzr    PC_TYPE = None
7*0c103e04Smint Yzr    def setUp(self):
8*0c103e04Smint Yzr        ksp = PETSc.KSP()
9*0c103e04Smint Yzr        ksp.create(PETSc.COMM_SELF)
10*0c103e04Smint Yzr        pc = ksp.getPC()
11*0c103e04Smint Yzr        if self.KSP_TYPE:
12*0c103e04Smint Yzr            ksp.setType(self.KSP_TYPE)
13*0c103e04Smint Yzr        if self.PC_TYPE:
14*0c103e04Smint Yzr            pc.setType(self.PC_TYPE)
15*0c103e04Smint Yzr        self.ksp = ksp
16*0c103e04Smint Yzr        self.pc = pc
17*0c103e04Smint Yzr
18*0c103e04Smint Yzr    def tearDown(self):
19*0c103e04Smint Yzr        self.ksp = None
20*0c103e04Smint Yzr        self.pc = None
21*0c103e04Smint Yzr        PETSc.garbage_cleanup()
22*0c103e04Smint Yzr
23*0c103e04Smint Yzrclass TestFIELDSPLITPC(BaseTestPC, unittest.TestCase):
24*0c103e04Smint Yzr    PC_TYPE = PETSc.PC.Type.FIELDSPLIT
25*0c103e04Smint Yzr
26*0c103e04Smint Yzr    def testISoperations(self):
27*0c103e04Smint Yzr        test_index = [0,1,2]
28*0c103e04Smint Yzr        pc = self.pc
29*0c103e04Smint Yzr        is_u = PETSc.IS().createGeneral(test_index, comm=PETSc.COMM_SELF)
30*0c103e04Smint Yzr        pc.setFieldSplitIS(("u", is_u))
31*0c103e04Smint Yzr
32*0c103e04Smint Yzr        self.assertTrue((pc.getFieldSplitSubIS("u").getIndices() == test_index).all())
33*0c103e04Smint Yzr        is_u = None
34*0c103e04Smint Yzr
35*0c103e04Smint Yzr
36*0c103e04Smint Yzrif __name__ == '__main__':
37*0c103e04Smint Yzr    unittest.main()
38