xref: /petsc/src/dm/impls/plex/tests/ex97.c (revision 3f74a92befc20eaeb39901f2e4f048a9a7b2ca2a)
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