  type tPetscGridHash
    PetscFortranAddr:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type tPetscGridHash
  PetscGridHash, parameter :: PETSC_NULL_GRIDHASH = tPetscGridHash(0)
  PetscGridHash, target :: PETSC_NULL_GRIDHASH_ARRAY(1) = [tPetscGridHash(0)]
  PetscGridHash, pointer :: PETSC_NULL_GRIDHASH_POINTER(:) => PETSC_NULL_GRIDHASH_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_GRIDHASH
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_GRIDHASH_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_GRIDHASH_POINTER
#endif

  type tDMPlexStorageVersion
    PetscFortranAddr:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type tDMPlexStorageVersion
  DMPlexStorageVersion, parameter :: PETSC_NULL_DMPLEXSTORAGEVERSION = tDMPlexStorageVersion(0)
  DMPlexStorageVersion, target :: PETSC_NULL_DMPLEXSTORAGEVERSION_ARRAY(1) = [tDMPlexStorageVersion(0)]
  DMPlexStorageVersion, pointer :: PETSC_NULL_DMPLEXSTORAGEVERSION_POINTER(:) => PETSC_NULL_DMPLEXSTORAGEVERSION_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXSTORAGEVERSION
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXSTORAGEVERSION_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXSTORAGEVERSION_POINTER
#endif

  type tDMPlexPointQueue
    PetscFortranAddr:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type tDMPlexPointQueue
  DMPlexPointQueue, parameter :: PETSC_NULL_DMPLEXPOINTQUEUE = tDMPlexPointQueue(0)
  DMPlexPointQueue, target :: PETSC_NULL_DMPLEXPOINTQUEUE_ARRAY(1) = [tDMPlexPointQueue(0)]
  DMPlexPointQueue, pointer :: PETSC_NULL_DMPLEXPOINTQUEUE_POINTER(:) => PETSC_NULL_DMPLEXPOINTQUEUE_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXPOINTQUEUE
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXPOINTQUEUE_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXPOINTQUEUE_POINTER
#endif

  type eDMPlexInterpolatedFlag
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eDMPlexInterpolatedFlag

  DMPlexInterpolatedFlag, parameter :: PETSC_NULL_DMPLEXINTERPOLATEDFLAG = eDMPlexInterpolatedFlag(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXINTERPOLATEDFLAG
#endif
    DMPlexInterpolatedFlag, parameter :: DMPLEX_INTERPOLATED_INVALID = eDMPlexInterpolatedFlag(-1)
    DMPlexInterpolatedFlag, parameter :: DMPLEX_INTERPOLATED_NONE = eDMPlexInterpolatedFlag(0)
    DMPlexInterpolatedFlag, parameter :: DMPLEX_INTERPOLATED_PARTIAL = eDMPlexInterpolatedFlag(1)
    DMPlexInterpolatedFlag, parameter :: DMPLEX_INTERPOLATED_MIXED = eDMPlexInterpolatedFlag(2)
    DMPlexInterpolatedFlag, parameter :: DMPLEX_INTERPOLATED_FULL = eDMPlexInterpolatedFlag(3)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DMPLEX_INTERPOLATED_INVALID 
!DEC$ ATTRIBUTES DLLEXPORT::DMPLEX_INTERPOLATED_NONE 
!DEC$ ATTRIBUTES DLLEXPORT::DMPLEX_INTERPOLATED_PARTIAL 
!DEC$ ATTRIBUTES DLLEXPORT::DMPLEX_INTERPOLATED_MIXED 
!DEC$ ATTRIBUTES DLLEXPORT::DMPLEX_INTERPOLATED_FULL 
#endif

  type eDMPlexTPSType
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eDMPlexTPSType

  DMPlexTPSType, parameter :: PETSC_NULL_DMPLEXTPSTYPE = eDMPlexTPSType(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXTPSTYPE
#endif
    DMPlexTPSType, parameter :: DMPLEX_TPS_SCHWARZ_P = eDMPlexTPSType(0)
    DMPlexTPSType, parameter :: DMPLEX_TPS_GYROID = eDMPlexTPSType(1)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DMPLEX_TPS_SCHWARZ_P
!DEC$ ATTRIBUTES DLLEXPORT::DMPLEX_TPS_GYROID
#endif

  type eDMPlexShape
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eDMPlexShape

  DMPlexShape, parameter :: PETSC_NULL_DMPLEXSHAPE = eDMPlexShape(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXSHAPE
#endif
    DMPlexShape, parameter :: DM_SHAPE_BOX = eDMPlexShape(0)
    DMPlexShape, parameter :: DM_SHAPE_BOX_SURFACE = eDMPlexShape(1)
    DMPlexShape, parameter :: DM_SHAPE_BALL = eDMPlexShape(2)
    DMPlexShape, parameter :: DM_SHAPE_SPHERE = eDMPlexShape(3)
    DMPlexShape, parameter :: DM_SHAPE_CYLINDER = eDMPlexShape(4)
    DMPlexShape, parameter :: DM_SHAPE_SCHWARZ_P = eDMPlexShape(5)
    DMPlexShape, parameter :: DM_SHAPE_GYROID = eDMPlexShape(6)
    DMPlexShape, parameter :: DM_SHAPE_DOUBLET = eDMPlexShape(7)
    DMPlexShape, parameter :: DM_SHAPE_ANNULUS = eDMPlexShape(8)
    DMPlexShape, parameter :: DM_SHAPE_HYPERCUBIC = eDMPlexShape(9)
    DMPlexShape, parameter :: DM_SHAPE_ZBOX = eDMPlexShape(10)
    DMPlexShape, parameter :: DM_SHAPE_UNKNOWN = eDMPlexShape(11)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_BOX
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_BOX_SURFACE
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_BALL
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_SPHERE
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_CYLINDER
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_SCHWARZ_P
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_GYROID
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_DOUBLET
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_ANNULUS
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_HYPERCUBIC
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_ZBOX
!DEC$ ATTRIBUTES DLLEXPORT::DM_SHAPE_UNKNOWN
#endif

  type eDMPlexCoordMap
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eDMPlexCoordMap

  DMPlexCoordMap, parameter :: PETSC_NULL_DMPLEXCOORDMAP = eDMPlexCoordMap(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXCOORDMAP
#endif
    DMPlexCoordMap, parameter :: DM_COORD_MAP_NONE = eDMPlexCoordMap(0)
    DMPlexCoordMap, parameter :: DM_COORD_MAP_SHEAR = eDMPlexCoordMap(1)
    DMPlexCoordMap, parameter :: DM_COORD_MAP_FLARE = eDMPlexCoordMap(2)
    DMPlexCoordMap, parameter :: DM_COORD_MAP_ANNULUS = eDMPlexCoordMap(3)
    DMPlexCoordMap, parameter :: DM_COORD_MAP_SHELL = eDMPlexCoordMap(4)
    DMPlexCoordMap, parameter :: DM_COORD_MAP_SINUSOID = eDMPlexCoordMap(5)
    DMPlexCoordMap, parameter :: DM_COORD_MAP_UNKNOWN = eDMPlexCoordMap(6)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DM_COORD_MAP_NONE
!DEC$ ATTRIBUTES DLLEXPORT::DM_COORD_MAP_SHEAR
!DEC$ ATTRIBUTES DLLEXPORT::DM_COORD_MAP_FLARE
!DEC$ ATTRIBUTES DLLEXPORT::DM_COORD_MAP_ANNULUS
!DEC$ ATTRIBUTES DLLEXPORT::DM_COORD_MAP_SHELL
!DEC$ ATTRIBUTES DLLEXPORT::DM_COORD_MAP_SINUSOID
!DEC$ ATTRIBUTES DLLEXPORT::DM_COORD_MAP_UNKNOWN
#endif

  type eDMPlexCSRAlgorithm
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eDMPlexCSRAlgorithm

  DMPlexCSRAlgorithm, parameter :: PETSC_NULL_DMPLEXCSRALGORITHM = eDMPlexCSRAlgorithm(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMPLEXCSRALGORITHM
#endif
    DMPlexCSRAlgorithm, parameter :: DM_PLEX_CSR_MAT = eDMPlexCSRAlgorithm(0)
    DMPlexCSRAlgorithm, parameter :: DM_PLEX_CSR_GRAPH = eDMPlexCSRAlgorithm(1)
    DMPlexCSRAlgorithm, parameter :: DM_PLEX_CSR_OVERLAP = eDMPlexCSRAlgorithm(2)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DM_PLEX_CSR_MAT
!DEC$ ATTRIBUTES DLLEXPORT::DM_PLEX_CSR_GRAPH
!DEC$ ATTRIBUTES DLLEXPORT::DM_PLEX_CSR_OVERLAP
#endif

