! setting up DMPlex for finite elements
! Contributed by Pratheek Shanthraj
program main
implicit none
#include
DM :: dm
PetscDS :: prob
PetscInt :: dim = 3
PetscBool :: simplex = PETSC_TRUE
PetscBool :: interpolate = PETSC_TRUE
PetscBool :: refinementUniform = PETSC_FALSE
PetscReal :: refinementLimit = 0.0
PetscErrorCode :: ierr
call PetscInitialize(PETSC_NULL_CHARACTER, ierr)
if (ierr .ne. 0) then
print*,'Unable to initialize PETSc'
stop
endif
call DMPlexCreateDoublet(PETSC_COMM_WORLD, dim, simplex,interpolate, refinementUniform, refinementLimit, dm, ierr);CHKERRA(ierr)
call DMSetUp(dm,ierr);CHKERRA(ierr)
call PetscDSCreate(PETSC_COMM_WORLD,prob,ierr);CHKERRA(ierr)
call DMGetDS(dm,prob,ierr);CHKERRA(ierr)
call DMDestroy(dm, ierr);CHKERRA(ierr)
call PetscFinalize(ierr)
end program main