The class  is assumed to  serve for  the global communicator without creating an instance to be passed to other classes.  For local communicators, it is not needed. I also put a demo of using boostMPI in testrunner.cpp, where an instance of the boostMPI communicator class is created and it needs to be passed to functions that use it. For PETSc, I think, it is unnecessary to use boostMPI because  it is more specified. If we want to implement our own MPI matrix and slovers, we can use boostMPI.