The standard approach would be to communicate via the parent comm. So you split comm world into part0 and part1 and use a VecScatter with vecs on world (which can have zero entries on part1 and part0 respectively) to exchange your data. You can use VecPlaceArray or VecCreate*WithArray to avoid an extra copy.
GIRET Jean-Christophe via petsc-users <petsc-users@mcs.anl.gov> writes: > Dear PETSc users, > > I would like to use Petsc4Py for a project extension, which consists mainly > of: > > - Storing data and matrices on several rank/nodes which could not > fit on a single node. > > - Performing some linear algebra in a parallel fashion (solving > sparse linear system for instance) > > - Exchanging those data structures (parallel vectors) between > non-overlapping MPI communicators, created for instance by splitting > MPI_COMM_WORLD. > > While the two first items seems to be well addressed by PETSc, I am wondering > about the last one. > > Is it possible to access the data of a vector, defined on a communicator from > another, non-overlapping communicator? From what I have seen from the > documentation and the several threads on the user mailing-list, I would say > no. But maybe I am missing something? If not, is it possible to transfer a > vector defined on a given communicator on a communicator which is a subset of > the previous one? > > Best regards, > Jean-Christophe