Actual source code: ex67f.F

petsc-3.3-p6 2013-02-11
  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,                          &
 20:      & '../../../../share/petsc/datafiles/matrices/' //                       &
 21:      & 'ns-real-int32-float64',                                               &
 22:      &                          FILE_MODE_READ,v,ierr)

 24:       call MatCreate(PETSC_COMM_WORLD,A,ierr)
 25:       call MatSetType(A, MATSEQAIJ,ierr)
 26:       call MatLoad(A,v,ierr)

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

 33:       call MatGetSubmatrices(A,one,isrow,isrow,                           &
 34:      &        MAT_INITIAL_MATRIX,B,ierr)

 36:       call MatView(B,PETSC_VIEWER_STDOUT_SELF,ierr)

 38:       call MatGetSubmatrices(A,one,isrow,isrow,                           &
 39:      &        MAT_REUSE_MATRIX,B,ierr)

 41:       call MatView(B,PETSC_VIEWER_STDOUT_SELF,ierr)

 43:       call ISDestroy(isrow,ierr)
 44:       call MatDestroy(A,ierr)
 45:       call MatDestroy(B,ierr)
 46:       call PetscViewerDestroy(v,ierr)

 48:       call PetscFinalize(ierr)
 49:       end