xref: /petsc/src/dm/impls/plex/tests/ex97.c (revision 061e922f3926be00487707c73b78dd3d40309129)
13ead50e0SBlaise Bourdin static char help[] = "Test DMPlexGetCellType\n\n";
23ead50e0SBlaise Bourdin 
33ead50e0SBlaise Bourdin #include <petsc.h>
43ead50e0SBlaise Bourdin 
main(int argc,char ** argv)5*d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv)
6*d71ae5a4SJacob Faibussowitsch {
73ead50e0SBlaise Bourdin   DM             dm, pdm;
83ead50e0SBlaise Bourdin   char           ifilename[PETSC_MAX_PATH_LEN];
93ead50e0SBlaise Bourdin   PetscInt       pStart, pEnd, p;
103ead50e0SBlaise Bourdin   DMPolytopeType cellType;
113ead50e0SBlaise Bourdin   DMLabel        label;
123ead50e0SBlaise Bourdin 
133ead50e0SBlaise Bourdin   PetscFunctionBeginUser;
143ead50e0SBlaise Bourdin   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
153ead50e0SBlaise Bourdin   PetscOptionsBegin(PETSC_COMM_WORLD, NULL, "FEM Layout Options", "ex97");
163ead50e0SBlaise Bourdin   PetscCall(PetscOptionsString("-i", "Filename to read", "ex97", ifilename, ifilename, sizeof(ifilename), NULL));
173ead50e0SBlaise Bourdin   PetscOptionsEnd();
183ead50e0SBlaise Bourdin 
193ead50e0SBlaise Bourdin   PetscCall(DMPlexCreateFromFile(PETSC_COMM_WORLD, ifilename, NULL, PETSC_TRUE, &dm));
203ead50e0SBlaise Bourdin   PetscCall(DMPlexDistributeSetDefault(dm, PETSC_FALSE));
213ead50e0SBlaise Bourdin   PetscCall(DMSetFromOptions(dm));
223ead50e0SBlaise Bourdin 
233ead50e0SBlaise Bourdin   PetscCall(DMPlexDistribute(dm, 0, NULL, &pdm));
243ead50e0SBlaise Bourdin   if (pdm) {
253ead50e0SBlaise Bourdin     PetscCall(DMDestroy(&dm));
263ead50e0SBlaise Bourdin     dm = pdm;
273ead50e0SBlaise Bourdin   }
283ead50e0SBlaise Bourdin   PetscCall(PetscObjectSetName((PetscObject)dm, "ex97"));
293ead50e0SBlaise Bourdin   PetscCall(DMViewFromOptions(dm, NULL, "-dm_view"));
303ead50e0SBlaise Bourdin 
313ead50e0SBlaise Bourdin   PetscCall(DMGetLabel(dm, "celltype", &label));
323ead50e0SBlaise Bourdin   PetscCall(DMLabelView(label, PETSC_VIEWER_STDOUT_WORLD));
333ead50e0SBlaise Bourdin   PetscCall(DMPlexGetHeightStratum(dm, 0, &pStart, &pEnd));
343ead50e0SBlaise Bourdin   for (p = pStart; p < pEnd; ++p) {
353ead50e0SBlaise Bourdin     PetscCall(DMPlexGetCellType(dm, p, &cellType));
363ead50e0SBlaise Bourdin     PetscCall(PetscPrintf(PETSC_COMM_SELF, "cell: %" PetscInt_FMT " type: %d\n", p, cellType));
373ead50e0SBlaise Bourdin   }
383ead50e0SBlaise Bourdin   PetscCall(DMDestroy(&dm));
393ead50e0SBlaise Bourdin 
403ead50e0SBlaise Bourdin   PetscCall(PetscFinalize());
413ead50e0SBlaise Bourdin   return 0;
423ead50e0SBlaise Bourdin }
433ead50e0SBlaise Bourdin 
443ead50e0SBlaise Bourdin /*TEST
453ead50e0SBlaise Bourdin   build:
463ead50e0SBlaise Bourdin     requires: !complex
473ead50e0SBlaise Bourdin   testset:
483ead50e0SBlaise Bourdin     args: -i ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh -dm_view
493ead50e0SBlaise Bourdin     nsize: 1
503ead50e0SBlaise Bourdin     test:
513ead50e0SBlaise Bourdin       suffix: 0
523ead50e0SBlaise Bourdin       args:
533ead50e0SBlaise Bourdin TEST*/
54