13ead50e0SBlaise Bourdinprogram ex97f90 23ead50e0SBlaise Bourdin#include "petsc/finclude/petsc.h" 33ead50e0SBlaise Bourdin use petsc 43ead50e0SBlaise Bourdin implicit none 53ead50e0SBlaise Bourdin 63ead50e0SBlaise Bourdin ! Get the fortran kind associated with PetscInt and PetscReal so that we can use literal constants. 73ead50e0SBlaise Bourdin PetscInt :: dummyPetscInt 83ead50e0SBlaise Bourdin PetscReal :: dummyPetscreal 93ead50e0SBlaise Bourdin integer,parameter :: kPI = kind(dummyPetscInt) 103ead50e0SBlaise Bourdin integer,parameter :: kPR = kind(dummyPetscReal) 113ead50e0SBlaise Bourdin 123ead50e0SBlaise Bourdin type(tDM) :: dm 133ead50e0SBlaise Bourdin type(tDMLabel) :: label 143ead50e0SBlaise Bourdin character(len=PETSC_MAX_PATH_LEN) :: ifilename,iobuffer 153ead50e0SBlaise Bourdin DMPolytopeType :: cellType 163ead50e0SBlaise Bourdin PetscInt :: pStart,pEnd,p 173ead50e0SBlaise Bourdin PetscErrorCode :: ierr 183ead50e0SBlaise Bourdin PetscBool :: flg 193ead50e0SBlaise Bourdin 203ead50e0SBlaise Bourdin PetscCallA(PetscInitialize(ierr)) 213ead50e0SBlaise Bourdin 22*dcb3e689SBarry Smith PetscCallA(PetscOptionsGetString(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER,'-i',ifilename,flg,ierr)) 23*dcb3e689SBarry Smith PetscCheckA(flg,PETSC_COMM_WORLD,PETSC_ERR_ARG_OUTOFRANGE,'missing input file name -i <input file name>') 243ead50e0SBlaise Bourdin 253ead50e0SBlaise Bourdin PetscCallA(DMPlexCreateFromFile(PETSC_COMM_WORLD,ifilename,PETSC_NULL_CHARACTER,PETSC_TRUE,dm,ierr)) 263ead50e0SBlaise Bourdin PetscCallA(DMPlexDistributeSetDefault(dm,PETSC_FALSE,ierr)) 27*dcb3e689SBarry Smith PetscCallA(PetscObjectSetName(dm,'ex97f90',ierr)) 283ead50e0SBlaise Bourdin PetscCallA(DMSetFromOptions(dm,ierr)) 29*dcb3e689SBarry Smith PetscCallA(DMViewFromOptions(dm,PETSC_NULL_OPTIONS,'-dm_view',ierr)) 303ead50e0SBlaise Bourdin 313ead50e0SBlaise Bourdin PetscCallA(DMGetLabel(dm,'celltype',label,ierr)) 323ead50e0SBlaise Bourdin PetscCallA(DMLabelView(label,PETSC_VIEWER_STDOUT_WORLD,ierr)) 333ead50e0SBlaise Bourdin PetscCallA(DMPlexGetHeightStratum(dm,0_kPI,pStart,pEnd,ierr)) 343ead50e0SBlaise Bourdin Do p = pStart,pEnd-1 353ead50e0SBlaise Bourdin PetscCallA(DMPlexGetCellType(dm,p,cellType,ierr)) 36*dcb3e689SBarry Smith write(IOBuffer,'("cell: ",i3," type: ",i3,"\n")' ) p,cellType 373ead50e0SBlaise Bourdin PetscCallA(PetscPrintf(PETSC_COMM_SELF,IOBuffer,ierr)) 383ead50e0SBlaise Bourdin End Do 393ead50e0SBlaise Bourdin PetscCallA(DMDestroy(dm,ierr)) 403ead50e0SBlaise Bourdin 413ead50e0SBlaise Bourdin PetscCallA(PetscFinalize(ierr)) 423ead50e0SBlaise Bourdinend program ex97f90 433ead50e0SBlaise Bourdin 443ead50e0SBlaise Bourdin! /*TEST 453ead50e0SBlaise Bourdin! build: 463ead50e0SBlaise Bourdin! requires: !complex 473ead50e0SBlaise Bourdin! testset: 483ead50e0SBlaise Bourdin! args: -i ${wPETSC_DIR}/share/petsc/datafiles/meshes/doublet-tet.msh -dm_view 493ead50e0SBlaise Bourdin! nsize: 1 503ead50e0SBlaise Bourdin! test: 513ead50e0SBlaise Bourdin! suffix: 0 523ead50e0SBlaise Bourdin! args: 533ead50e0SBlaise Bourdin! TEST*/ 54