1*5808f684SSatish Balayfrom petsc4py import PETSc 2*5808f684SSatish Balayimport unittest 3*5808f684SSatish Balay 4*5808f684SSatish Balay# -------------------------------------------------------------------- 5*5808f684SSatish Balay 6*5808f684SSatish Balayclass TestComm(unittest.TestCase): 7*5808f684SSatish Balay 8*5808f684SSatish Balay def testInit(self): 9*5808f684SSatish Balay comm_null1 = PETSc.Comm() 10*5808f684SSatish Balay comm_null2 = PETSc.Comm(PETSc.COMM_NULL) 11*5808f684SSatish Balay comm_world = PETSc.Comm(PETSc.COMM_WORLD) 12*5808f684SSatish Balay comm_self = PETSc.Comm(PETSc.COMM_SELF) 13*5808f684SSatish Balay self.assertEqual(comm_null1, PETSc.COMM_NULL) 14*5808f684SSatish Balay self.assertEqual(comm_null2, PETSc.COMM_NULL) 15*5808f684SSatish Balay self.assertEqual(comm_world, PETSc.COMM_WORLD) 16*5808f684SSatish Balay self.assertEqual(comm_self, PETSc.COMM_SELF) 17*5808f684SSatish Balay 18*5808f684SSatish Balay def testDupDestr(self): 19*5808f684SSatish Balay self.assertRaises(ValueError, PETSc.COMM_NULL.duplicate) 20*5808f684SSatish Balay comm = PETSc.COMM_SELF.duplicate() 21*5808f684SSatish Balay comm.destroy() 22*5808f684SSatish Balay self.assertEqual(comm, PETSc.COMM_NULL) 23*5808f684SSatish Balay del comm 24*5808f684SSatish Balay comm = PETSc.COMM_WORLD.duplicate() 25*5808f684SSatish Balay comm.destroy() 26*5808f684SSatish Balay self.assertEqual(comm, PETSc.COMM_NULL) 27*5808f684SSatish Balay del comm 28*5808f684SSatish Balay 29*5808f684SSatish Balay def testBarrier(self): 30*5808f684SSatish Balay self.assertRaises(ValueError, PETSc.COMM_NULL.barrier) 31*5808f684SSatish Balay PETSc.COMM_SELF.barrier() 32*5808f684SSatish Balay PETSc.COMM_WORLD.barrier() 33*5808f684SSatish Balay 34*5808f684SSatish Balay def testSize(self): 35*5808f684SSatish Balay self.assertRaises(ValueError, PETSc.COMM_NULL.getSize) 36*5808f684SSatish Balay self.assertTrue(PETSc.COMM_WORLD.getSize() >= 1) 37*5808f684SSatish Balay self.assertEqual(PETSc.COMM_SELF.getSize(), 1) 38*5808f684SSatish Balay 39*5808f684SSatish Balay def testRank(self): 40*5808f684SSatish Balay self.assertRaises(ValueError, PETSc.COMM_NULL.getRank) 41*5808f684SSatish Balay self.assertEqual(PETSc.COMM_SELF.getRank(), 0) 42*5808f684SSatish Balay self.assertTrue(PETSc.COMM_WORLD.getRank() >= 0) 43*5808f684SSatish Balay 44*5808f684SSatish Balay def testProperties(self): 45*5808f684SSatish Balay self.assertEqual(PETSc.COMM_SELF.getSize(), 46*5808f684SSatish Balay PETSc.COMM_SELF.size) 47*5808f684SSatish Balay self.assertEqual(PETSc.COMM_SELF.getRank(), 48*5808f684SSatish Balay PETSc.COMM_SELF.rank) 49*5808f684SSatish Balay self.assertEqual(PETSc.COMM_WORLD.getSize(), 50*5808f684SSatish Balay PETSc.COMM_WORLD.size) 51*5808f684SSatish Balay self.assertEqual(PETSc.COMM_WORLD.getRank(), 52*5808f684SSatish Balay PETSc.COMM_WORLD.rank) 53*5808f684SSatish Balay 54*5808f684SSatish Balay def testCompatMPI4PY(self): 55*5808f684SSatish Balay try: 56*5808f684SSatish Balay from mpi4py import MPI 57*5808f684SSatish Balay except ImportError: 58*5808f684SSatish Balay return 59*5808f684SSatish Balay # mpi4py -> petsc4py 60*5808f684SSatish Balay cn = PETSc.Comm(MPI.COMM_NULL) 61*5808f684SSatish Balay cs = PETSc.Comm(MPI.COMM_SELF) 62*5808f684SSatish Balay cw = PETSc.Comm(MPI.COMM_WORLD) 63*5808f684SSatish Balay self.assertEqual(cn, PETSc.COMM_NULL) 64*5808f684SSatish Balay self.assertEqual(cs, PETSc.COMM_SELF) 65*5808f684SSatish Balay self.assertEqual(cw, PETSc.COMM_WORLD) 66*5808f684SSatish Balay # petsc4py - > mpi4py 67*5808f684SSatish Balay cn = PETSc.COMM_NULL.tompi4py() 68*5808f684SSatish Balay self.assertTrue(isinstance(cn, MPI.Comm)) 69*5808f684SSatish Balay self.assertFalse(cn) 70*5808f684SSatish Balay cs = PETSc.COMM_SELF.tompi4py() 71*5808f684SSatish Balay self.assertTrue(isinstance(cs, MPI.Intracomm)) 72*5808f684SSatish Balay self.assertEqual(cs.Get_size(), 1) 73*5808f684SSatish Balay self.assertEqual(cs.Get_rank(), 0) 74*5808f684SSatish Balay cw = PETSc.COMM_WORLD.tompi4py() 75*5808f684SSatish Balay self.assertTrue(isinstance(cw, MPI.Intracomm)) 76*5808f684SSatish Balay self.assertEqual(cw.Get_size(), PETSc.COMM_WORLD.getSize()) 77*5808f684SSatish Balay self.assertEqual(cw.Get_rank(), PETSc.COMM_WORLD.getRank()) 78*5808f684SSatish Balay 79*5808f684SSatish Balay 80*5808f684SSatish Balay# -------------------------------------------------------------------- 81*5808f684SSatish Balay 82*5808f684SSatish Balayif __name__ == '__main__': 83*5808f684SSatish Balay unittest.main() 84