  type, extends(tPetscObject) ::  tMatCoarsen
  end type tMatCoarsen
  MatCoarsen, parameter :: PETSC_NULL_MATCOARSEN = tMatCoarsen(0)
  MatCoarsen, target :: PETSC_NULL_MATCOARSEN_ARRAY(1) = [tMatCoarsen(0)]
  MatCoarsen, pointer :: PETSC_NULL_MATCOARSEN_POINTER(:) => PETSC_NULL_MATCOARSEN_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_MATCOARSEN
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_MATCOARSEN_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_MATCOARSEN_POINTER
#endif

  CHARACTER(LEN=*), PARAMETER :: MATCOARSENMIS = 'mis'
  CHARACTER(LEN=*), PARAMETER :: MATCOARSENHEM = 'hem'
  CHARACTER(LEN=*), PARAMETER :: MATCOARSENMISK = 'misk'

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::MATCOARSENMIS
!DEC$ ATTRIBUTES DLLEXPORT::MATCOARSENHEM
!DEC$ ATTRIBUTES DLLEXPORT::MATCOARSENMISK
#endif

