Actual source code: ex67f.F
petsc-3.7.5 2017-01-01
1: !
2: ! This program demonstrates use of MatGetSubMatrices() from Fortran
3: !
4: program main
5: implicit none
6: #include <petsc/finclude/petscsys.h>
7: #include <petsc/finclude/petscmat.h>
8: #include <petsc/finclude/petscis.h>
9: #include <petsc/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)
18: #if defined(PETSC_USE_64BIT_INDICES)
19: call PetscViewerBinaryOpen(PETSC_COMM_WORLD, &
20: & '../../../../share/petsc/datafiles/matrices/' // &
21: & 'ns-real-int64-float64', &
22: & FILE_MODE_READ,v,ierr)
23: #else
24: call PetscViewerBinaryOpen(PETSC_COMM_WORLD, &
25: & '../../../../share/petsc/datafiles/matrices/' // &
26: & 'ns-real-int32-float64', &
27: & FILE_MODE_READ,v,ierr)
28: #endif
30: call MatCreate(PETSC_COMM_WORLD,A,ierr)
31: call MatSetType(A, MATSEQAIJ,ierr)
32: call MatLoad(A,v,ierr)
34: one = 1
35: zero = 0
36: call ISCreateGeneral(PETSC_COMM_SELF,one,zero,PETSC_COPY_VALUES, &
37: & isrow,ierr)
39: call MatGetSubmatrices(A,one,isrow,isrow, &
40: & MAT_INITIAL_MATRIX,B,ierr)
42: call MatView(B,PETSC_VIEWER_STDOUT_SELF,ierr)
44: call MatGetSubmatrices(A,one,isrow,isrow, &
45: & MAT_REUSE_MATRIX,B,ierr)
47: call MatView(B,PETSC_VIEWER_STDOUT_SELF,ierr)
49: call ISDestroy(isrow,ierr)
50: call MatDestroy(A,ierr)
51: call MatDestroy(B,ierr)
52: call PetscViewerDestroy(v,ierr)
54: call PetscFinalize(ierr)
55: end