Ok - I was able to swap out the communicator and get it all working.  I just created a Parallel::Communicator and assigned it to libMesh::CommWorld (in addition to doing the other things I mentioned before).  This works fine.  I am able to swap the communicator back and forth and get the job done.

I'm honestly not sure if it's worth bastardizing the rest of the libMesh interface to handle this one case when it can be handled pretty simply by just providing a libMesh::swap_communicator() function.  I mean... it's worked this way for the last 10+ years without real complaint....


On Thu, Feb 7, 2013 at 11:36 AM, Derek Gaston <friedmud@gmail.com> wrote:
On Thu, Feb 7, 2013 at 11:27 AM, Roy Stogner <roystgnr@ices.utexas.edu> wrote:
But there's nothing stopping you from swapping that out too.  Go ahead
and add a Communicator::swap() method.

Ok - I'll give it a whirl.
That's effectively going to be the final design, I'm afraid - either a
new optional constructor argument or a new Communicator getter/setter
method for most of the big parallel objects.

I hadn't planned on actually taking that step any time soon, but I
could push it up the TODO list if you'd find it useful.

That's totally up to you.  Obviously, I would use it if you did it.  But if I can swap things in and out and achieve the same effect, I'm happy for now ;-)

I'm trying this right now and I'll report back.