Actual source code: ex97f90.F90
1: #include "petsc/finclude/petsc.h"
2: program ex97f90
3: use petsc
4: implicit none
6: ! Get the Fortran kind associated with PetscInt so that we can use literal constants.
7: PetscInt :: dummyPetscInt
8: integer, parameter :: kPI = kind(dummyPetscInt)
10: type(tDM) :: dm
11: type(tDMLabel) :: label
12: character(len=PETSC_MAX_PATH_LEN) :: ifilename, iobuffer
13: DMPolytopeType :: cellType
14: PetscInt :: pStart, pEnd, p
15: PetscErrorCode :: ierr
16: PetscBool :: flg
18: PetscCallA(PetscInitialize(ierr))
20: PetscCallA(PetscOptionsGetString(PETSC_NULL_OPTIONS, PETSC_NULL_CHARACTER, '-i', ifilename, flg, ierr))
21: PetscCheckA(flg, PETSC_COMM_WORLD, PETSC_ERR_ARG_OUTOFRANGE, 'missing input file name -i ')
23: PetscCallA(DMPlexCreateFromFile(PETSC_COMM_WORLD, ifilename, PETSC_NULL_CHARACTER, PETSC_TRUE, dm, ierr))
24: PetscCallA(DMPlexDistributeSetDefault(dm, PETSC_FALSE, ierr))
25: PetscCallA(PetscObjectSetName(dm, 'ex97f90', ierr))
26: PetscCallA(DMSetFromOptions(dm, ierr))
27: PetscCallA(DMViewFromOptions(dm, PETSC_NULL_OBJECT, '-dm_view', ierr))
29: PetscCallA(DMGetLabel(dm, 'celltype', label, ierr))
30: PetscCallA(DMLabelView(label, PETSC_VIEWER_STDOUT_WORLD, ierr))
31: PetscCallA(DMPlexGetHeightStratum(dm, 0_kPI, pStart, pEnd, ierr))
32: do p = pStart, pEnd - 1
33: PetscCallA(DMPlexGetCellType(dm, p, cellType, ierr))
34: write (IOBuffer, '("cell: ",i3," type: ",i3,"\n")') p, cellType
35: PetscCallA(PetscPrintf(PETSC_COMM_SELF, IOBuffer, ierr))
36: end do
37: PetscCallA(DMDestroy(dm, ierr))
39: PetscCallA(PetscFinalize(ierr))
40: end program ex97f90
42: ! /*TEST
43: ! build:
44: ! requires: !complex
45: ! testset:
46: ! args: -i ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh -dm_view
47: ! nsize: 1
48: ! test:
49: ! suffix: 0
50: ! args:
51: ! TEST*/