xref: /petsc/src/dm/impls/plex/tutorials/ex4f90.F90 (revision c4762a1b19cd2af06abeed90e8f9d34fb975dd94)
1*c4762a1bSJed Brown! setting up DMPlex for finite elements
2*c4762a1bSJed Brown! Contributed by Pratheek Shanthraj <p.shanthraj@mpie.de>
3*c4762a1bSJed Brown      program main
4*c4762a1bSJed Brown      implicit none
5*c4762a1bSJed Brown#include <petsc/finclude/petsc.h90>
6*c4762a1bSJed Brown      DM :: dm
7*c4762a1bSJed Brown      PetscDS :: prob
8*c4762a1bSJed Brown      PetscInt :: dim = 3
9*c4762a1bSJed Brown      PetscBool :: simplex = PETSC_TRUE
10*c4762a1bSJed Brown      PetscBool :: interpolate = PETSC_TRUE
11*c4762a1bSJed Brown      PetscBool :: refinementUniform = PETSC_FALSE
12*c4762a1bSJed Brown      PetscReal :: refinementLimit = 0.0
13*c4762a1bSJed Brown      PetscErrorCode :: ierr
14*c4762a1bSJed Brown
15*c4762a1bSJed Brown      call PetscInitialize(PETSC_NULL_CHARACTER, ierr)
16*c4762a1bSJed Brown      if (ierr .ne. 0) then
17*c4762a1bSJed Brown        print*,'Unable to initialize PETSc'
18*c4762a1bSJed Brown        stop
19*c4762a1bSJed Brown      endif
20*c4762a1bSJed Brown      call DMPlexCreateDoublet(PETSC_COMM_WORLD, dim, simplex,interpolate, refinementUniform, refinementLimit, dm, ierr);CHKERRA(ierr)
21*c4762a1bSJed Brown      call DMSetUp(dm,ierr);CHKERRA(ierr)
22*c4762a1bSJed Brown      call PetscDSCreate(PETSC_COMM_WORLD,prob,ierr);CHKERRA(ierr)
23*c4762a1bSJed Brown      call DMGetDS(dm,prob,ierr);CHKERRA(ierr)
24*c4762a1bSJed Brown
25*c4762a1bSJed Brown      call DMDestroy(dm, ierr);CHKERRA(ierr)
26*c4762a1bSJed Brown      call PetscFinalize(ierr)
27*c4762a1bSJed Brown      end program main
28