! 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 PetscCallA(PetscInitialize(PETSC_NULL_CHARACTER, ierr)) PetscCallA(DMPlexCreateDoublet(PETSC_COMM_WORLD, dim, simplex,interpolate, refinementUniform, refinementLimit, dm, ierr)) PetscCallA(DMSetUp(dm,ierr)) PetscCallA(PetscDSCreate(PETSC_COMM_WORLD,prob,ierr)) PetscCallA(DMGetDS(dm,prob,ierr)) PetscCallA(DMDestroy(dm, ierr)) PetscCallA(PetscFinalize(ierr)) end program main