  type, extends(tPetscObject) ::  tIS
  end type tIS
  IS, parameter :: PETSC_NULL_IS = tIS(0)
  IS, target :: PETSC_NULL_IS_ARRAY(1) = [tIS(0)]
  IS, pointer :: PETSC_NULL_IS_POINTER(:) => PETSC_NULL_IS_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_IS
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_IS_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_IS_POINTER
#endif

  type, extends(tPetscObject) ::  tISLocalToGlobalMapping
  end type tISLocalToGlobalMapping
  ISLocalToGlobalMapping, parameter :: PETSC_NULL_ISLOCALTOGLOBALMAPPING = tISLocalToGlobalMapping(0)
  ISLocalToGlobalMapping, target :: PETSC_NULL_ISLOCALTOGLOBALMAPPING_ARRAY(1) = [tISLocalToGlobalMapping(0)]
  ISLocalToGlobalMapping, pointer :: PETSC_NULL_ISLOCALTOGLOBALMAPPING_POINTER(:) => PETSC_NULL_ISLOCALTOGLOBALMAPPING_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ISLOCALTOGLOBALMAPPING
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ISLOCALTOGLOBALMAPPING_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ISLOCALTOGLOBALMAPPING_POINTER
#endif

  type tISColoring
    PetscFortranAddr:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type tISColoring
  ISColoring, parameter :: PETSC_NULL_ISCOLORING = tISColoring(0)
  ISColoring, target :: PETSC_NULL_ISCOLORING_ARRAY(1) = [tISColoring(0)]
  ISColoring, pointer :: PETSC_NULL_ISCOLORING_POINTER(:) => PETSC_NULL_ISCOLORING_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ISCOLORING
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ISCOLORING_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ISCOLORING_POINTER
#endif

  type tPetscLayout
    PetscFortranAddr:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type tPetscLayout
  PetscLayout, parameter :: PETSC_NULL_LAYOUT = tPetscLayout(0)
  PetscLayout, target :: PETSC_NULL_LAYOUT_ARRAY(1) = [tPetscLayout(0)]
  PetscLayout, pointer :: PETSC_NULL_LAYOUT_POINTER(:) => PETSC_NULL_LAYOUT_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_LAYOUT
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_LAYOUT_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_LAYOUT_POINTER
#endif

  type tPetscKDTree
    PetscFortranAddr:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type tPetscKDTree
  PetscKDTree, parameter :: PETSC_NULL_KDTREE = tPetscKDTree(0)
  PetscKDTree, target :: PETSC_NULL_KDTREE_ARRAY(1) = [tPetscKDTree(0)]
  PetscKDTree, pointer :: PETSC_NULL_KDTREE_POINTER(:) => PETSC_NULL_KDTREE_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_KDTREE
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_KDTREE_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_KDTREE_POINTER
#endif

  type eISInfo
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eISInfo

  ISInfo, parameter :: PETSC_NULL_ISINFO = eISInfo(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ISINFO
#endif
    ISInfo, parameter :: IS_INFO_MIN = eISInfo(-1)
    ISInfo, parameter :: IS_SORTED = eISInfo(0)
    ISInfo, parameter :: IS_UNIQUE = eISInfo(1)
    ISInfo, parameter :: IS_PERMUTATION = eISInfo(2)
    ISInfo, parameter :: IS_INTERVAL = eISInfo(3)
    ISInfo, parameter :: IS_IDENTITY = eISInfo(4)
    ISInfo, parameter :: IS_INFO_MAX = eISInfo(5)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::IS_INFO_MIN 
!DEC$ ATTRIBUTES DLLEXPORT::IS_SORTED 
!DEC$ ATTRIBUTES DLLEXPORT::IS_UNIQUE 
!DEC$ ATTRIBUTES DLLEXPORT::IS_PERMUTATION 
!DEC$ ATTRIBUTES DLLEXPORT::IS_INTERVAL 
!DEC$ ATTRIBUTES DLLEXPORT::IS_IDENTITY 
!DEC$ ATTRIBUTES DLLEXPORT::IS_INFO_MAX 
#endif

  type eISInfoType
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eISInfoType

  ISInfoType, parameter :: PETSC_NULL_ISINFOTYPE = eISInfoType(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ISINFOTYPE
#endif
    ISInfoType, parameter :: IS_LOCAL = eISInfoType(0)
    ISInfoType, parameter :: IS_GLOBAL = eISInfoType(1)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::IS_LOCAL
!DEC$ ATTRIBUTES DLLEXPORT::IS_GLOBAL
#endif

  type eISGlobalToLocalMappingMode
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eISGlobalToLocalMappingMode

  ISGlobalToLocalMappingMode, parameter :: PETSC_NULL_ISGLOBALTOLOCALMAPPINGMODE = eISGlobalToLocalMappingMode(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ISGLOBALTOLOCALMAPPINGMODE
#endif
    ISGlobalToLocalMappingMode, parameter :: IS_GTOLM_MASK = eISGlobalToLocalMappingMode(0)
    ISGlobalToLocalMappingMode, parameter :: IS_GTOLM_DROP = eISGlobalToLocalMappingMode(1)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::IS_GTOLM_MASK
!DEC$ ATTRIBUTES DLLEXPORT::IS_GTOLM_DROP
#endif

  type eISColoringType
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eISColoringType

  ISColoringType, parameter :: PETSC_NULL_ISCOLORINGTYPE = eISColoringType(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_ISCOLORINGTYPE
#endif
    ISColoringType, parameter :: IS_COLORING_GLOBAL = eISColoringType(0)
    ISColoringType, parameter :: IS_COLORING_LOCAL = eISColoringType(1)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::IS_COLORING_GLOBAL
!DEC$ ATTRIBUTES DLLEXPORT::IS_COLORING_LOCAL
#endif

  CHARACTER(LEN=*), PARAMETER :: ISGENERAL = 'general'
  CHARACTER(LEN=*), PARAMETER :: ISSTRIDE = 'stride'
  CHARACTER(LEN=*), PARAMETER :: ISBLOCK = 'block'

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::ISGENERAL
!DEC$ ATTRIBUTES DLLEXPORT::ISSTRIDE
!DEC$ ATTRIBUTES DLLEXPORT::ISBLOCK
#endif

  CHARACTER(LEN=*), PARAMETER :: ISLOCALTOGLOBALMAPPINGBASIC = 'basic'
  CHARACTER(LEN=*), PARAMETER :: ISLOCALTOGLOBALMAPPINGHASH = 'hash'

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::ISLOCALTOGLOBALMAPPINGBASIC
!DEC$ ATTRIBUTES DLLEXPORT::ISLOCALTOGLOBALMAPPINGHASH
#endif

