Actual source code: ex97.c

  1: static char help[] = "Test DMPlexGetCellType\n\n";

  3: #include <petsc.h>

  5: int main(int argc, char **argv)
  6: {
  7:   DM             dm, pdm;
  8:   char           ifilename[PETSC_MAX_PATH_LEN];
  9:   PetscInt       pStart, pEnd, p;
 10:   DMPolytopeType cellType;
 11:   DMLabel        label;

 13:   PetscFunctionBeginUser;
 14:   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
 15:   PetscOptionsBegin(PETSC_COMM_WORLD, NULL, "FEM Layout Options", "ex97");
 16:   PetscCall(PetscOptionsString("-i", "Filename to read", "ex97", ifilename, ifilename, sizeof(ifilename), NULL));
 17:   PetscOptionsEnd();

 19:   PetscCall(DMPlexCreateFromFile(PETSC_COMM_WORLD, ifilename, NULL, PETSC_TRUE, &dm));
 20:   PetscCall(DMPlexDistributeSetDefault(dm, PETSC_FALSE));
 21:   PetscCall(DMSetFromOptions(dm));

 23:   PetscCall(DMPlexDistribute(dm, 0, NULL, &pdm));
 24:   if (pdm) {
 25:     PetscCall(DMDestroy(&dm));
 26:     dm = pdm;
 27:   }
 28:   PetscCall(PetscObjectSetName((PetscObject)dm, "ex97"));
 29:   PetscCall(DMViewFromOptions(dm, NULL, "-dm_view"));

 31:   PetscCall(DMGetLabel(dm, "celltype", &label));
 32:   PetscCall(DMLabelView(label, PETSC_VIEWER_STDOUT_WORLD));
 33:   PetscCall(DMPlexGetHeightStratum(dm, 0, &pStart, &pEnd));
 34:   for (p = pStart; p < pEnd; ++p) {
 35:     PetscCall(DMPlexGetCellType(dm, p, &cellType));
 36:     PetscCall(PetscPrintf(PETSC_COMM_SELF, "cell: %" PetscInt_FMT " type: %d\n", p, cellType));
 37:   }
 38:   PetscCall(DMDestroy(&dm));

 40:   PetscCall(PetscFinalize());
 41:   return 0;
 42: }

 44: /*TEST
 45:   build:
 46:     requires: !complex
 47:   testset:
 48:     args: -i ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh -dm_view
 49:     nsize: 1
 50:     test:
 51:       suffix: 0
 52:       args:
 53: TEST*/