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