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