Actual source code: ex97f90.F90
1: program ex97f90
2: #include "petsc/finclude/petsc.h"
3: use petsc
4: implicit none
6: ! Get the fortran kind associated with PetscInt and PetscReal so that we can use literal constants.
7: PetscInt :: dummyPetscInt
8: PetscReal :: dummyPetscreal
9: integer, parameter :: kPI = kind(dummyPetscInt)
10: integer, parameter :: kPR = kind(dummyPetscReal)
12: type(tDM) :: dm
13: type(tDMLabel) :: label
14: character(len=PETSC_MAX_PATH_LEN) :: ifilename, iobuffer
15: DMPolytopeType :: cellType
16: PetscInt :: pStart, pEnd, p
17: PetscErrorCode :: ierr
18: PetscBool :: flg
20: PetscCallA(PetscInitialize(ierr))
22: PetscCallA(PetscOptionsGetString(PETSC_NULL_OPTIONS, PETSC_NULL_CHARACTER, '-i', ifilename, flg, ierr))
23: PetscCheckA(flg, PETSC_COMM_WORLD, PETSC_ERR_ARG_OUTOFRANGE, 'missing input file name -i ')
25: PetscCallA(DMPlexCreateFromFile(PETSC_COMM_WORLD, ifilename, PETSC_NULL_CHARACTER, PETSC_TRUE, dm, ierr))
26: PetscCallA(DMPlexDistributeSetDefault(dm, PETSC_FALSE, ierr))
27: PetscCallA(PetscObjectSetName(dm, 'ex97f90', ierr))
28: PetscCallA(DMSetFromOptions(dm, ierr))
29: PetscCallA(DMViewFromOptions(dm, PETSC_NULL_OBJECT, '-dm_view', ierr))
31: PetscCallA(DMGetLabel(dm, 'celltype', label, ierr))
32: PetscCallA(DMLabelView(label, PETSC_VIEWER_STDOUT_WORLD, ierr))
33: PetscCallA(DMPlexGetHeightStratum(dm, 0_kPI, pStart, pEnd, ierr))
34: Do p = pStart, pEnd - 1
35: PetscCallA(DMPlexGetCellType(dm, p, cellType, ierr))
36: write (IOBuffer, '("cell: ",i3," type: ",i3,"\n")') p, cellType
37: PetscCallA(PetscPrintf(PETSC_COMM_SELF, IOBuffer, ierr))
38: End Do
39: PetscCallA(DMDestroy(dm, ierr))
41: PetscCallA(PetscFinalize(ierr))
42: end program ex97f90
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*/