You can place it in a parallel Mat (that has rows or columns on only one rank or a subset of ranks) and then MatCreateSubMatrix with all new rows/columns on a different rank or subset of ranks.
That said, you usually have a function that assembles the matrix and you can just call that on the new communicator. Damyn Chipman <damynchip...@u.boisestate.edu> writes: > Hi PETSc developers, > > In short, my question is this: Does PETSc provide a way to move or copy an > object (say a Mat) from one communicator to another? > > The more detailed scenario is this: I’m working on a linear algebra solver on > quadtree meshes (i.e., p4est). I use communicator subsets in order to > facilitate communication between siblings or nearby neighbors. When > performing linear algebra across siblings (a group of 4), I need to copy a > node’s data (i.e., a Mat object) from a sibling’s communicator to the > communicator that includes the four siblings. From what I can tell, I can > only copy a PETSc object onto the same communicator. > > My current approach will be to copy the raw data from the Mat on one > communicator to a new Mat on the new communicator, but I wanted to see if > there is a more “elegant” approach within PETSc. > > Thanks in advance, > > Damyn Chipman > Boise State University > PhD Candidate > Computational Sciences and Engineering > damynchip...@u.boisestate.edu