Actual source code: ex58f.F

  1: !
  2: !
  3: !   This program demonstrates use of MatGetRow() and MatGetRowMaxAbs() from Fortran
  4: !
  5:       program main
 6:  #include finclude/petscsys.h
 7:  #include finclude/petscvec.h
 8:  #include finclude/petscmat.h
 9:  #include finclude/petscviewer.h

 11:       Mat      A
 12:       PetscErrorCode ierr
 13:       PetscInt i,cols(500),ncols,row,M,N
 14:       PetscScalar   values(500)
 15:       PetscViewer   v
 16:       Vec           rowmax

 18:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)

 20:       call PetscViewerBinaryOpen(PETSC_COMM_WORLD,'small',              &
 21:      & FILE_MODE_READ,v,ierr)

 23:       call MatLoad(v,MATSEQAIJ,A,ierr)

 25:       call MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr)

 27:       row = 2
 28:       call MatGetRow(A,row,ncols,cols,values,ierr)
 29:       do 10, i=1,ncols
 30:         print*,i,cols(i),values(i)
 31:  10   continue
 32:       call MatRestoreRow(A,row,ncols,cols,values,ierr)

 34:       row = 5
 35:       call MatGetRow(A,row,ncols,cols,values,ierr)
 36:       do 20, i=1,ncols
 37:         print*,i,cols(i),values(i)
 38:  20   continue
 39:       call MatRestoreRow(A,row,ncols,cols,values,ierr)

 41: !
 42: !     Test MatGetRowMaxAbs()
 43:       call MatGetSize(A,M,N,ierr)
 44:       call VecCreate(PETSC_COMM_WORLD,rowmax,ierr)
 45:       call VecSetSizes(rowmax,M,M,ierr)
 46:       call VecSetFromOptions(rowmax,ierr)

 48:       call MatGetRowMaxAbs(A,rowmax,PETSC_NULL_INTEGER,ierr)
 49:       call VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr)

 51:       call MatDestroy(A,ierr)
 52:       call PetscViewerDestroy(v,ierr)
 53:       call VecDestroy(rowmax,ierr)

 55:       call PetscFinalize(ierr)
 56:       end