Topology Objects
You can attach either a cartesian or graph topology to a communicator. The topology could be defined as a separate object to make it easier to build and navigate. The Boost MPI library uses the Boost Graph Library to define a graph topology.