Actual source code: ex67f.F
petsc-3.4.2 2013-07-02
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