xref: /petsc/src/dm/impls/plex/tests/ex97.c (revision a69119a591a03a9d906b29c0a4e9802e4d7c9795)
1 static char help[] = "Test DMPlexGetCellType\n\n";
2 
3 #include <petsc.h>
4 
5 int main(int argc, char **argv) {
6   DM             dm, pdm;
7   char           ifilename[PETSC_MAX_PATH_LEN];
8   PetscInt       pStart, pEnd, p;
9   DMPolytopeType cellType;
10   DMLabel        label;
11 
12   PetscFunctionBeginUser;
13   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
14   PetscOptionsBegin(PETSC_COMM_WORLD, NULL, "FEM Layout Options", "ex97");
15   PetscCall(PetscOptionsString("-i", "Filename to read", "ex97", ifilename, ifilename, sizeof(ifilename), NULL));
16   PetscOptionsEnd();
17 
18   PetscCall(DMPlexCreateFromFile(PETSC_COMM_WORLD, ifilename, NULL, PETSC_TRUE, &dm));
19   PetscCall(DMPlexDistributeSetDefault(dm, PETSC_FALSE));
20   PetscCall(DMSetFromOptions(dm));
21 
22   PetscCall(DMPlexDistribute(dm, 0, NULL, &pdm));
23   if (pdm) {
24     PetscCall(DMDestroy(&dm));
25     dm = pdm;
26   }
27   PetscCall(PetscObjectSetName((PetscObject)dm, "ex97"));
28   PetscCall(DMViewFromOptions(dm, NULL, "-dm_view"));
29 
30   PetscCall(DMGetLabel(dm, "celltype", &label));
31   PetscCall(DMLabelView(label, PETSC_VIEWER_STDOUT_WORLD));
32   PetscCall(DMPlexGetHeightStratum(dm, 0, &pStart, &pEnd));
33   for (p = pStart; p < pEnd; ++p) {
34     PetscCall(DMPlexGetCellType(dm, p, &cellType));
35     PetscCall(PetscPrintf(PETSC_COMM_SELF, "cell: %" PetscInt_FMT " type: %d\n", p, cellType));
36   }
37   PetscCall(DMDestroy(&dm));
38 
39   PetscCall(PetscFinalize());
40   return 0;
41 }
42 
43 /*TEST
44   build:
45     requires: !complex
46   testset:
47     args: -i ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh -dm_view
48     nsize: 1
49     test:
50       suffix: 0
51       args:
52 TEST*/
53