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*/