  type, extends(tPetscObject) ::  tPetscLimiter
  end type tPetscLimiter
  PetscLimiter, parameter :: PETSC_NULL_LIMITER = tPetscLimiter(0)
  PetscLimiter, target :: PETSC_NULL_LIMITER_ARRAY(1) = [tPetscLimiter(0)]
  PetscLimiter, pointer :: PETSC_NULL_LIMITER_POINTER(:) => PETSC_NULL_LIMITER_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_LIMITER
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_LIMITER_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_LIMITER_POINTER
#endif

  type, extends(tPetscObject) ::  tPetscFV
  end type tPetscFV
  PetscFV, parameter :: PETSC_NULL_FV = tPetscFV(0)
  PetscFV, target :: PETSC_NULL_FV_ARRAY(1) = [tPetscFV(0)]
  PetscFV, pointer :: PETSC_NULL_FV_POINTER(:) => PETSC_NULL_FV_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_FV
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_FV_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_FV_POINTER
#endif

  CHARACTER(LEN=*), PARAMETER :: PETSCLIMITERSIN = 'sin'
  CHARACTER(LEN=*), PARAMETER :: PETSCLIMITERZERO = 'zero'
  CHARACTER(LEN=*), PARAMETER :: PETSCLIMITERNONE = 'none'
  CHARACTER(LEN=*), PARAMETER :: PETSCLIMITERMINMOD = 'minmod'
  CHARACTER(LEN=*), PARAMETER :: PETSCLIMITERVANLEER = 'vanleer'
  CHARACTER(LEN=*), PARAMETER :: PETSCLIMITERVANALBADA = 'vanalbada'
  CHARACTER(LEN=*), PARAMETER :: PETSCLIMITERSUPERBEE = 'superbee'
  CHARACTER(LEN=*), PARAMETER :: PETSCLIMITERMC = 'mc'

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSCLIMITERSIN
!DEC$ ATTRIBUTES DLLEXPORT::PETSCLIMITERZERO
!DEC$ ATTRIBUTES DLLEXPORT::PETSCLIMITERNONE
!DEC$ ATTRIBUTES DLLEXPORT::PETSCLIMITERMINMOD
!DEC$ ATTRIBUTES DLLEXPORT::PETSCLIMITERVANLEER
!DEC$ ATTRIBUTES DLLEXPORT::PETSCLIMITERVANALBADA
!DEC$ ATTRIBUTES DLLEXPORT::PETSCLIMITERSUPERBEE
!DEC$ ATTRIBUTES DLLEXPORT::PETSCLIMITERMC
#endif

  CHARACTER(LEN=*), PARAMETER :: PETSCFVUPWIND = 'upwind'
  CHARACTER(LEN=*), PARAMETER :: PETSCFVLEASTSQUARES = 'leastsquares'

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSCFVUPWIND
!DEC$ ATTRIBUTES DLLEXPORT::PETSCFVLEASTSQUARES
#endif

  type sPetscFVCellGeom
    PetscReal centroid(3)
    PetscReal volume
  end type sPetscFVCellGeom

