      interface
        subroutine DMSwarmGetField(dm, fieldname, blocksize, dtype, data, ierr)
          use, intrinsic :: ISO_C_binding
          use petscsys, only: ePetscDataType
          import tDM
          DM dm
          character(len=*) :: fieldname
          PetscInt blocksize
          PetscDataType dtype
          PetscScalar, pointer :: data(:)
          PetscErrorCode ierr
        end subroutine
      end interface

      interface
        subroutine DMSwarmRestoreField(dm, fieldname, blocksize, dtype, data, ierr)
          use, intrinsic :: ISO_C_binding
          use petscsys, only: ePetscDataType
          import tDM
          DM dm
          character(len=*) :: fieldname
          PetscInt blocksize
          PetscDataType dtype
          PetscScalar, pointer :: data(:)
          PetscErrorCode ierr
        end subroutine
      end interface
