!
!  These are Fortran interfaces that are custom hand coded because
!  they cannot currently be generated automatically
!

      Interface
        Subroutine PetscLayoutGetRangesF90(a,b,z)
          import tPetscLayout
          PetscLayout a
          PetscInt, pointer :: b(:)
          PetscErrorCode  z
        End Subroutine
      End Interface

      Interface
        Subroutine ISGetIndicesF90(i,array,ierr)
          import tIS
          PetscInt, pointer :: array(:)
          PetscErrorCode  ierr
         IS       i
        End Subroutine
      End Interface

      Interface
        Subroutine ISRestoreIndicesF90(i,array,ierr)
          import tIS
          PetscInt, pointer :: array(:)
          PetscErrorCode ierr
         IS      i
        End Subroutine
      End Interface

      Interface
        Subroutine ISLocalToGlobalMappingGetIndicesF90(i,array,ierr)
          import tISLocalToGlobalMapping
          PetscInt, pointer :: array(:)
          PetscErrorCode  ierr
         ISLocalToGlobalMapping       i
        End Subroutine
      End Interface

      Interface
        Subroutine ISLocalToGlobalMappingRestoreIndicesF90(i,array,ierr)
          import tISLocalToGlobalMapping
          PetscInt, pointer :: array(:)
          PetscErrorCode  ierr
         ISLocalToGlobalMapping       i
        End Subroutine
      End Interface

! ------------------------------------------------------

      Interface
        Subroutine ISBlockGetIndicesF90(i,array,ierr)
          import tIS
          PetscInt, pointer :: array(:)
          PetscErrorCode  ierr
         IS       i
        End Subroutine
      End Interface


      Interface
        Subroutine ISBlockRestoreIndicesF90(i,array,ierr)
          import tIS
          PetscInt, pointer :: array(:)
          PetscErrorCode ierr
         IS      i
        End Subroutine
      End Interface

! ------------------------------------------------------
      Interface
        Subroutine ISColoringGetISF90(ic,n,isa,ierr)
          import tIS,tISColoring
          IS, pointer :: isa(:)
          PetscInt     n
          PetscErrorCode ierr
          ISColoring ic
        End Subroutine
      End Interface

      Interface
        Subroutine ISColoringRestoreISF90(ic,isa,ierr)
          import tIS,tISColoring
          IS, pointer :: isa(:)
          PetscErrorCode     ierr
          ISColoring ic
        End Subroutine
      End Interface

      Interface
        Subroutine PetscSectionGetConstraintIndicesF90(s,p,a,ierr)
          import tPetscSection
          PetscInt p
          PetscInt, pointer :: a(:)
          PetscErrorCode  ierr
          PetscSection       s
        End Subroutine
      End Interface

      Interface
        Subroutine PetscSectionRestoreConstraintIndicesF90(s,p,a,ierr)
          import tPetscSection
          PetscInt p
          PetscInt, pointer :: a(:)
          PetscErrorCode  ierr
          PetscSection       s
        End Subroutine
      End Interface

      Interface
        Subroutine PetscSectionSetConstraintIndicesF90(s,p,a,ierr)
          import tPetscSection
          PetscInt p
          PetscInt, pointer :: a(:)
          PetscErrorCode  ierr
          PetscSection       s
        End Subroutine
      End Interface

      Interface
        Subroutine PetscSectionGetFieldConstraintIndicesF90(s,p,f,a,ierr)
          import tPetscSection
          PetscSection      :: s
          PetscInt          :: p
          PetscInt          :: f
          PetscInt, pointer :: a(:)
          PetscErrorCode    :: ierr
        End Subroutine
      End Interface

      Interface
        Subroutine PetscSectionRestoreFieldConstraintIndicesF90(s,p,f,a,ierr)
          import tPetscSection
          PetscSection      :: s
          PetscInt          :: p
          PetscInt          :: f
          PetscInt, pointer :: a(:)
          PetscErrorCode    :: ierr
        End Subroutine
      End Interface

      Interface
        Subroutine PetscSectionSetFieldConstraintIndicesF90(s,p,f,a,ierr)
          import tPetscSection
          PetscSection      :: s
          PetscInt          :: p
          PetscInt          :: f
          PetscInt, pointer :: a(:)
          PetscErrorCode    :: ierr
        End Subroutine
      End Interface

      Interface
        Subroutine PetscSFDistributeSectionF90(sf,rootsection,array,leafsection,ierr)
          import tPetscSection
          import tPetscSF
          PetscSF sf
          PetscInt, pointer :: array(:)
          PetscErrorCode  ierr
          PetscSection rootsection,leafsection
        End Subroutine
      End Interface

      Interface
        Subroutine PetscSFCreateSectionSFF90(pointsf,rootsection,array,leafsection,sf,ierr)
          import tPetscSection
          import tPetscSF
          PetscSF pointsf
          PetscSF sf
          PetscInt, pointer :: array(:)
          PetscErrorCode  ierr
          PetscSection rootsection,leafsection
        End Subroutine
      End Interface

      Interface
        Subroutine PetscSFCreateRemoteOffsetsF90(sf,rootsection,leafsection,array,ierr)
          import tPetscSection
          import tPetscSF
          PetscSF sf
          PetscInt, pointer :: array(:)
          PetscErrorCode  ierr
          PetscSection rootsection,leafsection
        End Subroutine
      End Interface
