Hi,
I am building a solver and for mesh handling, I useDMPlex. In my 3D mesh, I
need to color faces. The adjacency information appears correct based on my
checks(But I tried setting adjacency and creating new sections too):
for (PetscInt f = fStart; f < fEnd; ++f) {
PetscInt adjSize = PETSC_DETERMINE;
PetscInt *adj = NULL;
PetscCallVoid(DMPlexGetAdjacency(dm_, f, &adjSize, &adj));
PetscCallVoid(PetscPrintf(PETSC_COMM_WORLD, "[%4d]", f));
PetscInt count = 0;
for (int i = 0; i < adjSize; ++i) {
if (adj[i] >= fStart && adj[i] < fEnd) {
count++;
PetscCallVoid(PetscPrintf(PETSC_COMM_WORLD, " %4d", adj[i]));
}
}
PetscCallVoid(PetscPrintf(PETSC_COMM_WORLD, " | %d\n", count));
PetscCallVoid(PetscFree(adj));}
I am testing this on a mesh consisting of quadrilateral elements. This code
correctly outputs 7 adjacent faces for interior faces and 4 for boundary faces
(including the face itself).
However, when I callDMCreateColoring, I get the following error:
[0]PETSC ERROR: No support for this operation for this object type
[0]PETSC ERROR: No method getcoloring for DM of type plex
What is the way to perform face coloring usingDMPlex?
Thank you!
Onur