xref: /petsc/src/dm/impls/plex/tests/ex1f90.F90 (revision d8606c274c09e255c003062beb17b1be973467bc)
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