Jed,
Hong and I were discussing MatGetRedundantMatrix() etc and she mention that
you don't like PetscSubcomm. I suggested removing the PetscSubcomm object from
PETSc but retaining the functionality of PetscSubcomm by putting the subcomm
information into an MPI attribute inside an MPI_Comm (so this new comm behaves
like a MPI_Comm subclass with extra data over a regular MPI_Comm) and having
something like PetscCommSublimate(comm, …., &subcomm with attribute). Then in
all the places in PETSc that take PetscSubcomm they would instead take a
MPI_Comm and check for the attribute and use the additional information if it
is there. Managing destruction will be tricky due to possible reference loops
but presumably we can figure out a way to do it.
What do you think?
Barry