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