xref: /petsc/src/dm/impls/plex/tests/ex97f90.F90 (revision bfe80ac4a46d58cb7760074b25f5e81b2f541d8a)
1program ex97f90
2#include "petsc/finclude/petsc.h"
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