plex.pointSF.ilocal is an array of leaf points on each rank. If the array is trivial (i.e., ilocal = [0, 1, 2, ...]), ilocal is set to NULL. So typically we use this array as point = ilocal[i] if ilocal else i, but in some places we simply do point = ilocal[I]. This is fine if a rank at least owns one cell (ilocal is nontrivial due to plex point numbering convention) or does not have cells at all, but not fine if the rank sees and only sees ghost cells (ilocal is trivial, so ilocal becomes NULL) . It turned out that we need to handle the latter case if submeshes are involved the submesh PR.
Allow for ghost only meshes.
plex.pointSF.ilocal
is an array of leaf points on each rank. If the array is trivial (i.e.,ilocal = [0, 1, 2, ...]
),ilocal
is set toNULL
. So typically we use this array aspoint = ilocal[i] if ilocal else i
, but in some places we simply dopoint = ilocal[I]
. This is fine if a rank at least owns one cell (ilocal
is nontrivial due to plex point numbering convention) or does not have cells at all, but not fine if the rank sees and only sees ghost cells (ilocal
is trivial, soilocal
becomesNULL
) . It turned out that we need to handle the latter case if submeshes are involved the submesh PR.