xref: /petsc/src/dm/impls/plex/tests/ex97f90.F90 (revision 9b88ac225e01f016352a5f4cd90e158abe5f5675)
1#include "petsc/finclude/petsc.h"
2program ex97f90
3  use petsc
4  implicit none
5
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)
11
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
19
20  PetscCallA(PetscInitialize(ierr))
21
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 <input file name>')
24
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))
30
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))
40
41  PetscCallA(PetscFinalize(ierr))
42end program ex97f90
43
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*/
54