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