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

Reply via email to