hi Matt,
On 13/03/24 12:46 pm, Matthew Knepley wrote:
Thanks for finding this. This was indeed rewritten because the old
algorithm was too expensive at large sizes/parallelism. The function
where this breaks in DMPlexStratifyMigrationSF() in plexdistribute.c.
The problem is here:
https://urldefense.us/v3/__https://gitlab.com/petsc/petsc/-/blob/main/src/dm/impls/plex/plexdistribute.c?ref_type=heads*L915__;Iw!!G_uCfscf7eWS!f3lT5aerjhKEOw0N2YLLmFuaxSTDqtBwuLRh7TwVg3NmCzfj71zSzjB-mXM7zhAxAGZnFlSTR-g_8R_1diIpZ-hCHoCWS8c$
<https://urldefense.us/v3/__https://gitlab.com/petsc/petsc/-/blob/main/src/dm/impls/plex/plexdistribute.c?ref_type=heads*L915__;Iw!!G_uCfscf7eWS!f3lT5aerjhKEOw0N2YLLmFuaxSTDqtBwuLRh7TwVg3NmCzfj71zSzjB-mXM7zhAxAGZnFlSTR-g_8R_1diIpZ-hCHoCWS8c$ >
I treat DM_POLYTOPE_INTERIOR_GHOST as a cell no matter what. We need
to assign the interior vertices, faces, and edges types that will
give back the right dimension. Vertices are easy, they should just be
type POINT. I can understand not wanting to use SEGMENT or QUAD for
the interior edge and face because they do not have full cones.
However, I think nothing will break (except explicit checks, which
will not work anyway) if you give them types SEGMENT and QUAD. Is this
easy to try?
Great, I just tried that and it does appear to work. I had thought there
was a reason I'd set those types to interior ghost, but it seems to be
ok just making them point, segment and quadrilateral.
It now also works even without the modification you just made to avoid
trouble with the depth label. So that was probably a red herring after all.
Thanks!
- Adrian
--
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
Waipapa Taumata Rau / University of Auckland, New Zealand
email:a.crouc...@auckland.ac.nz
tel: +64 (0)9 923 4611