      interface DMDAVecGetArray
        subroutine DMDAVecGetArrayF901(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecGetArrayF902(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecGetArrayF903(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :, :)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecGetArrayF904(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :, :, :)
          PetscErrorCode ierr
        end subroutine
      end interface DMDAVecGetArray

      interface DMDAVecRestoreArray
        subroutine DMDAVecRestoreArrayF901(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecRestoreArrayF902(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecRestoreArrayF903(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :, :)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecRestoreArrayF904(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :, :, :)
          PetscErrorCode ierr
        end subroutine
      end interface DMDAVecRestoreArray

      interface DMDAVecGetArrayRead
        subroutine DMDAVecGetArrayReadF901(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecGetArrayReadF902(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecGetArrayReadF903(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :, :)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecGetArrayReadF904(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :, :, :)
          PetscErrorCode ierr
        end subroutine
      end interface DMDAVecGetArrayRead

      interface DMDAVecRestoreArrayRead
        subroutine DMDAVecRestoreArrayReadF901(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecRestoreArrayReadF902(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecRestoreArrayReadF903(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :, :)
          PetscErrorCode ierr
        end subroutine
        subroutine DMDAVecRestoreArrayReadF904(da1, v, d1, ierr)
          use, intrinsic :: ISO_C_binding
          import tDM, tVec
          DM da1
          Vec v
          PetscScalar, pointer :: d1(:, :, :, :)
          PetscErrorCode ierr
        end subroutine
      end interface DMDAVecRestoreArrayRead

      interface DMDARestoreNeighbors
        subroutine DMDARestoreNeighbors(a, b, z)
          use, intrinsic :: ISO_C_binding
          import tDM
          DM a
          PetscMPIInt, pointer :: b(:)
          PetscErrorCode z
        end subroutine
      end interface DMDARestoreNeighbors

      interface
        subroutine DMDARestoreOwnershipRanges(a, lx, ly, lz, z)
          use, intrinsic :: ISO_C_binding
          import tDM
          DM a
          PetscInt, pointer :: lx(:), ly(:), lz(:)
          PetscErrorCode z
        end subroutine
      end interface
