static char help[] = "Test DMPlexGetCellType\n\n"; #include int main(int argc, char **argv) { DM dm, pdm; char ifilename[PETSC_MAX_PATH_LEN]; PetscInt pStart, pEnd, p; DMPolytopeType cellType; DMLabel label; PetscFunctionBeginUser; PetscCall(PetscInitialize(&argc, &argv, NULL, help)); PetscOptionsBegin(PETSC_COMM_WORLD, NULL, "FEM Layout Options", "ex97"); PetscCall(PetscOptionsString("-i", "Filename to read", "ex97", ifilename, ifilename, sizeof(ifilename), NULL)); PetscOptionsEnd(); PetscCall(DMPlexCreateFromFile(PETSC_COMM_WORLD, ifilename, NULL, PETSC_TRUE, &dm)); PetscCall(DMPlexDistributeSetDefault(dm, PETSC_FALSE)); PetscCall(DMSetFromOptions(dm)); PetscCall(DMPlexDistribute(dm, 0, NULL, &pdm)); if (pdm) { PetscCall(DMDestroy(&dm)); dm = pdm; } PetscCall(PetscObjectSetName((PetscObject)dm, "ex97")); PetscCall(DMViewFromOptions(dm, NULL, "-dm_view")); PetscCall(DMGetLabel(dm, "celltype", &label)); PetscCall(DMLabelView(label, PETSC_VIEWER_STDOUT_WORLD)); PetscCall(DMPlexGetHeightStratum(dm, 0, &pStart, &pEnd)); for (p = pStart; p < pEnd; ++p) { PetscCall(DMPlexGetCellType(dm, p, &cellType)); PetscCall(PetscPrintf(PETSC_COMM_SELF, "cell: %" PetscInt_FMT " type: %d\n", p, cellType)); } PetscCall(DMDestroy(&dm)); PetscCall(PetscFinalize()); return 0; } /*TEST build: requires: !complex testset: args: -i ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh -dm_view nsize: 1 test: suffix: 0 args: TEST*/