Actual source code: ex67f.F

  1: !
  2: !   This program demonstrates use of MatGetSubMatrices() from Fortran
  3: !
  4:       program main
  5:       implicit none
  6: #include <finclude/petscsys.h>
  7: #include <finclude/petscmat.h>
  8: #include <finclude/petscis.h>
  9: #include <finclude/petscviewer.h>

 11:       Mat      A,B
 12:       PetscErrorCode  ierr
 13:       PetscInt one,zero
 14:       PetscViewer   v
 15:       IS       isrow

 17:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)

 19:       call PetscViewerBinaryOpen(PETSC_COMM_WORLD,'../matbinary.ex',         &
 20:      &                          FILE_MODE_READ,v,ierr)

 22:       call MatCreate(PETSC_COMM_WORLD,A,ierr)
 23:       call MatSetType(A, MATSEQAIJ,ierr)
 24:       call MatLoad(A,v,ierr)

 26:       one  = 1
 27:       zero = 0
 28:       call ISCreateGeneral(PETSC_COMM_SELF,one,zero,PETSC_COPY_VALUES,    &
 29:      &                     isrow,ierr)

 31:       call MatGetSubmatrices(A,one,isrow,isrow,                           &
 32:      &        MAT_INITIAL_MATRIX,B,ierr)

 34:       call MatView(B,PETSC_VIEWER_STDOUT_SELF,ierr)

 36:       call MatGetSubmatrices(A,one,isrow,isrow,                           &
 37:      &        MAT_REUSE_MATRIX,B,ierr)

 39:       call MatView(B,PETSC_VIEWER_STDOUT_SELF,ierr)

 41:       call ISDestroy(isrow,ierr)
 42:       call MatDestroy(A,ierr)
 43:       call MatDestroy(B,ierr)
 44:       call PetscViewerDestroy(v,ierr)

 46:       call PetscFinalize(ierr)
 47:       end