  type, extends(tPetscObject) ::  tDMSwarmDataField
  end type tDMSwarmDataField
  DMSwarmDataField, parameter :: PETSC_NULL_DMSWARMDATAFIELD = tDMSwarmDataField(0)
  DMSwarmDataField, target :: PETSC_NULL_DMSWARMDATAFIELD_ARRAY(1) = [tDMSwarmDataField(0)]
  DMSwarmDataField, pointer :: PETSC_NULL_DMSWARMDATAFIELD_POINTER(:) => PETSC_NULL_DMSWARMDATAFIELD_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMDATAFIELD
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMDATAFIELD_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMDATAFIELD_POINTER
#endif

  type, extends(tPetscObject) ::  tDMSwarmDataBucket
  end type tDMSwarmDataBucket
  DMSwarmDataBucket, parameter :: PETSC_NULL_DMSWARMDATABUCKET = tDMSwarmDataBucket(0)
  DMSwarmDataBucket, target :: PETSC_NULL_DMSWARMDATABUCKET_ARRAY(1) = [tDMSwarmDataBucket(0)]
  DMSwarmDataBucket, pointer :: PETSC_NULL_DMSWARMDATABUCKET_POINTER(:) => PETSC_NULL_DMSWARMDATABUCKET_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMDATABUCKET
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMDATABUCKET_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMDATABUCKET_POINTER
#endif

  type, extends(tPetscObject) ::  tDMSwarmSort
  end type tDMSwarmSort
  DMSwarmSort, parameter :: PETSC_NULL_DMSWARMSORT = tDMSwarmSort(0)
  DMSwarmSort, target :: PETSC_NULL_DMSWARMSORT_ARRAY(1) = [tDMSwarmSort(0)]
  DMSwarmSort, pointer :: PETSC_NULL_DMSWARMSORT_POINTER(:) => PETSC_NULL_DMSWARMSORT_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMSORT
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMSORT_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMSORT_POINTER
#endif

  type, extends(tPetscObject) ::  tDMSwarmCellDM
  end type tDMSwarmCellDM
  DMSwarmCellDM, parameter :: PETSC_NULL_DMSWARMCELLDM = tDMSwarmCellDM(0)
  DMSwarmCellDM, target :: PETSC_NULL_DMSWARMCELLDM_ARRAY(1) = [tDMSwarmCellDM(0)]
  DMSwarmCellDM, pointer :: PETSC_NULL_DMSWARMCELLDM_POINTER(:) => PETSC_NULL_DMSWARMCELLDM_ARRAY
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMCELLDM
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMCELLDM_ARRAY
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMCELLDM_POINTER
#endif

  type eDMSwarmType
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eDMSwarmType

  DMSwarmType, parameter :: PETSC_NULL_DMSWARMTYPE = eDMSwarmType(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMTYPE
#endif
    DMSwarmType, parameter :: DMSWARM_BASIC = eDMSwarmType(0)
    DMSwarmType, parameter :: DMSWARM_PIC = eDMSwarmType(1)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_BASIC
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_PIC
#endif

  type eDMSwarmMigrateType
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eDMSwarmMigrateType

  DMSwarmMigrateType, parameter :: PETSC_NULL_DMSWARMMIGRATETYPE = eDMSwarmMigrateType(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMMIGRATETYPE
#endif
    DMSwarmMigrateType, parameter :: DMSWARM_MIGRATE_BASIC = eDMSwarmMigrateType(0)
    DMSwarmMigrateType, parameter :: DMSWARM_MIGRATE_DMCELLNSCATTER = eDMSwarmMigrateType(1)
    DMSwarmMigrateType, parameter :: DMSWARM_MIGRATE_DMCELLEXACT = eDMSwarmMigrateType(2)
    DMSwarmMigrateType, parameter :: DMSWARM_MIGRATE_USER = eDMSwarmMigrateType(3)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_MIGRATE_BASIC
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_MIGRATE_DMCELLNSCATTER
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_MIGRATE_DMCELLEXACT
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_MIGRATE_USER
#endif

  type eDMSwarmCollectType
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eDMSwarmCollectType

  DMSwarmCollectType, parameter :: PETSC_NULL_DMSWARMCOLLECTTYPE = eDMSwarmCollectType(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMCOLLECTTYPE
#endif
    DMSwarmCollectType, parameter :: DMSWARM_COLLECT_BASIC = eDMSwarmCollectType(0)
    DMSwarmCollectType, parameter :: DMSWARM_COLLECT_DMDABOUNDINGBOX = eDMSwarmCollectType(1)
    DMSwarmCollectType, parameter :: DMSWARM_COLLECT_GENERAL = eDMSwarmCollectType(2)
    DMSwarmCollectType, parameter :: DMSWARM_COLLECT_USER = eDMSwarmCollectType(3)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_COLLECT_BASIC
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_COLLECT_DMDABOUNDINGBOX
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_COLLECT_GENERAL
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_COLLECT_USER
#endif

  type eDMSwarmRemapType
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eDMSwarmRemapType

  DMSwarmRemapType, parameter :: PETSC_NULL_DMSWARMREMAPTYPE = eDMSwarmRemapType(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMREMAPTYPE
#endif
    DMSwarmRemapType, parameter :: DMSWARM_REMAP_NONE = eDMSwarmRemapType(0)
    DMSwarmRemapType, parameter :: DMSWARM_REMAP_PFAK = eDMSwarmRemapType(1)
    DMSwarmRemapType, parameter :: DMSWARM_REMAP_COLELLA = eDMSwarmRemapType(2)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_REMAP_NONE 
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_REMAP_PFAK 
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARM_REMAP_COLELLA 
#endif

  type eDMSwarmPICLayoutType
    PetscEnum:: v = PETSC_FORTRAN_TYPE_INITIALIZE
  end type eDMSwarmPICLayoutType

  DMSwarmPICLayoutType, parameter :: PETSC_NULL_DMSWARMPICLAYOUTTYPE = eDMSwarmPICLayoutType(-50)
#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::PETSC_NULL_DMSWARMPICLAYOUTTYPE
#endif
    DMSwarmPICLayoutType, parameter :: DMSWARMPIC_LAYOUT_REGULAR = eDMSwarmPICLayoutType(0)
    DMSwarmPICLayoutType, parameter :: DMSWARMPIC_LAYOUT_GAUSS = eDMSwarmPICLayoutType(1)
    DMSwarmPICLayoutType, parameter :: DMSWARMPIC_LAYOUT_SUBDIVISION = eDMSwarmPICLayoutType(2)

#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARMPIC_LAYOUT_REGULAR
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARMPIC_LAYOUT_GAUSS
!DEC$ ATTRIBUTES DLLEXPORT::DMSWARMPIC_LAYOUT_SUBDIVISION
#endif

