xref: /petsc/src/binding/petsc4py/test/test_comm.py (revision 552edb6364df478b294b3111f33a8f37ca096b20)
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