hi Matt,
On 29/06/19 12:07 AM, Matthew Knepley wrote:
Okay, I ran through this. I am attaching my C version which was easier
for me to play with in the debugger, but it should not be
hard to put the few lines into yours. The problem comes from using
overlap in the redistribution. You can see this by running
mpiexec -n 2 ./distgeom2 -overlap 1 -overlap2 0
which works fine. If overlap2 is 1, then the face data is shifted.
Yes, that's the same thing I found.
Something in DistributeField() does not know that we changed
the topology after we distributed by adding overlap cells. This is
strange since DMPlexMigrate() works on the coordinates for
the overlapped mesh, however they always start at 0 in the vector, so
it must be that some offset is missing. I am looking for it now.
It looked to me like the problem might lie not in
DMPlexDistributeField() but in DMPlexDistribute(), because if you view
the redistribution SF coming out of the second call to
DMPlexDistribute() it looks wrong.
DMPlexDistributeField() appeared to be doing what it was told, but the
SF it was given didn't look right to me.
- Adrian
--
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: [email protected]
tel: +64 (0)9 923 4611