1c4762a1bSJed Brown program main 2c4762a1bSJed Brown#include <petsc/finclude/petscdmplex.h> 3c4762a1bSJed Brown use petscdmplex 4c4762a1bSJed Brown use petscsys 5c4762a1bSJed Brown implicit none 6c4762a1bSJed Brown! 7c4762a1bSJed Brown! 8c4762a1bSJed Brown DM dm 9c4762a1bSJed Brown PetscInt, target, dimension(4) :: EC 10c4762a1bSJed Brown PetscInt, pointer :: pEC(:) 11c4762a1bSJed Brown PetscInt, pointer :: pES(:) 12c4762a1bSJed Brown PetscInt c, firstCell, numCells 13c4762a1bSJed Brown PetscInt v, numVertices, numPoints 14c4762a1bSJed Brown PetscInt i0,i4 15c4762a1bSJed Brown PetscErrorCode ierr 16c4762a1bSJed Brown 17c4762a1bSJed Brown i0 = 0 18c4762a1bSJed Brown i4 = 4 19c4762a1bSJed Brown 20*d8606c27SBarry Smith PetscCallA(PetscInitialize(ierr)) 21*d8606c27SBarry Smith 22*d8606c27SBarry Smith PetscCallA(DMPlexCreate(PETSC_COMM_WORLD, dm, ierr)) 23c4762a1bSJed Brown firstCell = 0 24c4762a1bSJed Brown numCells = 2 25c4762a1bSJed Brown numVertices = 6 26c4762a1bSJed Brown numPoints = numCells+numVertices 27*d8606c27SBarry Smith PetscCallA(DMPlexSetChart(dm, i0, numPoints, ierr)) 28c4762a1bSJed Brown do c=firstCell,numCells-1 29*d8606c27SBarry Smith PetscCallA(DMPlexSetConeSize(dm, c, i4, ierr)) 30c4762a1bSJed Brown end do 31*d8606c27SBarry Smith PetscCallA(DMSetUp(dm, ierr)) 32c4762a1bSJed Brown 33c4762a1bSJed Brown EC(1) = 2 34c4762a1bSJed Brown EC(2) = 3 35c4762a1bSJed Brown EC(3) = 4 36c4762a1bSJed Brown EC(4) = 5 37c4762a1bSJed Brown pEC => EC 38c4762a1bSJed Brown c = 0 39c4762a1bSJed Brown write(*,1000) 'cell',c,pEC 40c4762a1bSJed Brown 1000 format (a,i4,50i4) 41*d8606c27SBarry Smith PetscCallA(DMPlexSetCone(dm, c , pEC, ierr)) 42*d8606c27SBarry Smith PetscCallA(DMPlexGetCone(dm, c , pEC, ierr)) 43c4762a1bSJed Brown write(*,1000) 'cell',c,pEC 44c4762a1bSJed Brown EC(1) = 4 45c4762a1bSJed Brown EC(2) = 5 46c4762a1bSJed Brown EC(3) = 6 47c4762a1bSJed Brown EC(4) = 7 48c4762a1bSJed Brown pEC => EC 49c4762a1bSJed Brown c = 1 50c4762a1bSJed Brown write(*,1000) 'cell',c,pEC 51*d8606c27SBarry Smith PetscCallA(DMPlexSetCone(dm, c , pEC, ierr)) 52*d8606c27SBarry Smith PetscCallA(DMPlexGetCone(dm, c , pEC, ierr)) 53c4762a1bSJed Brown write(*,1000) 'cell',c,pEC 54*d8606c27SBarry Smith PetscCallA(DMPlexRestoreCone(dm, c , pEC, ierr)) 55c4762a1bSJed Brown 56*d8606c27SBarry Smith PetscCallA(DMPlexSymmetrize(dm, ierr)) 57*d8606c27SBarry Smith PetscCallA(DMPlexStratify(dm, ierr)) 58c4762a1bSJed Brown 59c4762a1bSJed Brown v = 4 60*d8606c27SBarry Smith PetscCallA(DMPlexGetSupport(dm, v , pES, ierr)) 61c4762a1bSJed Brown write(*,1000) 'vertex',v,pES 62*d8606c27SBarry Smith PetscCallA(DMPlexRestoreSupport(dm, v , pES, ierr)) 63c4762a1bSJed Brown 64*d8606c27SBarry Smith PetscCallA(DMDestroy(dm,ierr)) 65*d8606c27SBarry Smith PetscCallA(PetscFinalize(ierr)) 66c4762a1bSJed Brown end 67c4762a1bSJed Brown 68c4762a1bSJed Brown! /*TEST 69c4762a1bSJed Brown! 70c4762a1bSJed Brown! test: 71c4762a1bSJed Brown! suffix: 0 72c4762a1bSJed Brown! 73c4762a1bSJed Brown! TEST*/ 74