15808f684SSatish Balayfrom petsc4py import PETSc 25808f684SSatish Balayimport unittest 35808f684SSatish Balay 45808f684SSatish Balay# -------------------------------------------------------------------- 55808f684SSatish Balay 65808f684SSatish Balay 7*6f336411SStefano Zampiniclass TestComm(unittest.TestCase): 85808f684SSatish Balay def testInit(self): 95808f684SSatish Balay comm_null1 = PETSc.Comm() 105808f684SSatish Balay comm_null2 = PETSc.Comm(PETSc.COMM_NULL) 115808f684SSatish Balay comm_world = PETSc.Comm(PETSc.COMM_WORLD) 125808f684SSatish Balay comm_self = PETSc.Comm(PETSc.COMM_SELF) 135808f684SSatish Balay self.assertEqual(comm_null1, PETSc.COMM_NULL) 145808f684SSatish Balay self.assertEqual(comm_null2, PETSc.COMM_NULL) 155808f684SSatish Balay self.assertEqual(comm_world, PETSc.COMM_WORLD) 165808f684SSatish Balay self.assertEqual(comm_self, PETSc.COMM_SELF) 175808f684SSatish Balay 185808f684SSatish Balay def testDupDestr(self): 195808f684SSatish Balay self.assertRaises(ValueError, PETSc.COMM_NULL.duplicate) 205808f684SSatish Balay comm = PETSc.COMM_SELF.duplicate() 215808f684SSatish Balay comm.destroy() 225808f684SSatish Balay self.assertEqual(comm, PETSc.COMM_NULL) 235808f684SSatish Balay del comm 245808f684SSatish Balay comm = PETSc.COMM_WORLD.duplicate() 255808f684SSatish Balay comm.destroy() 265808f684SSatish Balay self.assertEqual(comm, PETSc.COMM_NULL) 275808f684SSatish Balay del comm 285808f684SSatish Balay 295808f684SSatish Balay def testBarrier(self): 305808f684SSatish Balay self.assertRaises(ValueError, PETSc.COMM_NULL.barrier) 315808f684SSatish Balay PETSc.COMM_SELF.barrier() 325808f684SSatish Balay PETSc.COMM_WORLD.barrier() 335808f684SSatish Balay 345808f684SSatish Balay def testSize(self): 355808f684SSatish Balay self.assertRaises(ValueError, PETSc.COMM_NULL.getSize) 365808f684SSatish Balay self.assertTrue(PETSc.COMM_WORLD.getSize() >= 1) 375808f684SSatish Balay self.assertEqual(PETSc.COMM_SELF.getSize(), 1) 385808f684SSatish Balay 395808f684SSatish Balay def testRank(self): 405808f684SSatish Balay self.assertRaises(ValueError, PETSc.COMM_NULL.getRank) 415808f684SSatish Balay self.assertEqual(PETSc.COMM_SELF.getRank(), 0) 425808f684SSatish Balay self.assertTrue(PETSc.COMM_WORLD.getRank() >= 0) 435808f684SSatish Balay 445808f684SSatish Balay def testProperties(self): 45*6f336411SStefano Zampini self.assertEqual(PETSc.COMM_SELF.getSize(), PETSc.COMM_SELF.size) 46*6f336411SStefano Zampini self.assertEqual(PETSc.COMM_SELF.getRank(), PETSc.COMM_SELF.rank) 47*6f336411SStefano Zampini self.assertEqual(PETSc.COMM_WORLD.getSize(), PETSc.COMM_WORLD.size) 48*6f336411SStefano Zampini self.assertEqual(PETSc.COMM_WORLD.getRank(), PETSc.COMM_WORLD.rank) 495808f684SSatish Balay 505808f684SSatish Balay def testCompatMPI4PY(self): 515808f684SSatish Balay try: 525808f684SSatish Balay from mpi4py import MPI 535808f684SSatish Balay except ImportError: 545808f684SSatish Balay return 555808f684SSatish Balay # mpi4py -> petsc4py 565808f684SSatish Balay cn = PETSc.Comm(MPI.COMM_NULL) 575808f684SSatish Balay cs = PETSc.Comm(MPI.COMM_SELF) 585808f684SSatish Balay cw = PETSc.Comm(MPI.COMM_WORLD) 595808f684SSatish Balay self.assertEqual(cn, PETSc.COMM_NULL) 605808f684SSatish Balay self.assertEqual(cs, PETSc.COMM_SELF) 615808f684SSatish Balay self.assertEqual(cw, PETSc.COMM_WORLD) 625808f684SSatish Balay # petsc4py - > mpi4py 635808f684SSatish Balay cn = PETSc.COMM_NULL.tompi4py() 645808f684SSatish Balay self.assertTrue(isinstance(cn, MPI.Comm)) 655808f684SSatish Balay self.assertFalse(cn) 665808f684SSatish Balay cs = PETSc.COMM_SELF.tompi4py() 675808f684SSatish Balay self.assertTrue(isinstance(cs, MPI.Intracomm)) 685808f684SSatish Balay self.assertEqual(cs.Get_size(), 1) 695808f684SSatish Balay self.assertEqual(cs.Get_rank(), 0) 705808f684SSatish Balay cw = PETSc.COMM_WORLD.tompi4py() 715808f684SSatish Balay self.assertTrue(isinstance(cw, MPI.Intracomm)) 725808f684SSatish Balay self.assertEqual(cw.Get_size(), PETSc.COMM_WORLD.getSize()) 735808f684SSatish Balay self.assertEqual(cw.Get_rank(), PETSc.COMM_WORLD.getRank()) 745808f684SSatish Balay 755808f684SSatish Balay 765808f684SSatish Balay# -------------------------------------------------------------------- 775808f684SSatish Balay 785808f684SSatish Balayif __name__ == '__main__': 795808f684SSatish Balay unittest.main() 80