Actual source code: ex58f.F
1: !
2: !
3: ! This program demonstrates use of MatGetRow() from Fortran
4: !
5: program main
6: #include include/finclude/petsc.h
7: #include include/finclude/petscmat.h
8: #include include/finclude/petscviewer.h
10: Mat A
11: PetscErrorCode ierr
12: PetscInt i,cols(500),ncols,row
13: PetscScalar values(500)
14: PetscViewer v
16: call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
18: call PetscViewerBinaryOpen(PETSC_COMM_WORLD,'small', &
19: & FILE_MODE_READ,v,ierr)
21: call MatLoad(v,MATSEQAIJ,A,ierr)
23: call MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr)
25: row = 2
26: call MatGetRow(A,row,ncols,cols,values,ierr)
27: do 10, i=1,ncols
28: print*,i,cols(i),values(i)
29: 10 continue
30: call MatRestoreRow(A,row,ncols,cols,values,ierr)
32: row = 5
33: call MatGetRow(A,row,ncols,cols,values,ierr)
34: do 20, i=1,ncols
35: print*,i,cols(i),values(i)
36: 20 continue
37: call MatRestoreRow(A,row,ncols,cols,values,ierr)
39: call MatDestroy(A,ierr)
40: call PetscViewerDestroy(v,ierr)
42: call PetscFinalize(ierr)
43: end