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