Actual source code: ex58f.F

petsc-3.12.2 2019-11-22
Report Typos and Errors
  1: !
  2: !
  3: !   This program demonstrates use of MatGetRow() and MatGetRowMaxAbs() from Fortran
  4: !
  5:       program main
  6:  #include <petsc/finclude/petscmat.h>
  7:       use petscmat
  8:       implicit none

 10:       Mat      A
 11:       PetscErrorCode ierr
 12:       PetscInt M,N
 13:       PetscViewer   v
 14:       Vec           rowmax
 15:       PetscBool flg
 16:       character*(256)  f

 18:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
 19:       if (ierr .ne. 0) then
 20:         print*,'Unable to initialize PETSc'
 21:         stop
 22:       endif

 24:       call PetscOptionsGetString(PETSC_NULL_OPTIONS,                           &
 25:      &      PETSC_NULL_CHARACTER,'-f',f,flg,ierr)
 26:       call PetscViewerBinaryOpen(PETSC_COMM_WORLD,f,FILE_MODE_READ,v,          &
 27:      &                           ierr)

 29:       call MatCreate(PETSC_COMM_WORLD,A,ierr)
 30:       call MatSetType(A, MATSEQAIJ,ierr)
 31:       call MatLoad(A,v,ierr)

 33:       call MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr)

 35: !
 36: !     Test MatGetRowMaxAbs()
 37:       call MatGetSize(A,M,N,ierr)
 38:       call VecCreate(PETSC_COMM_WORLD,rowmax,ierr)
 39:       call VecSetSizes(rowmax,M,M,ierr)
 40:       call VecSetFromOptions(rowmax,ierr)

 42:       call MatGetRowMaxAbs(A,rowmax,PETSC_NULL_INTEGER,ierr)
 43:       call VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr)

 45:       call MatGetRowMax(A,rowmax,PETSC_NULL_INTEGER,ierr)
 46:       call VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr)

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

 51:       call MatGetRowMin(A,rowmax,PETSC_NULL_INTEGER,ierr)
 52:       call VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr)

 54:       call MatDestroy(A,ierr)
 55:       call PetscViewerDestroy(v,ierr)
 56:       call VecDestroy(rowmax,ierr)

 58:       call PetscFinalize(ierr)
 59:       end

 61: !/*TEST
 62: !
 63: !     test:
 64: !       args: -f ${DATAFILESPATH}/matrices/tiny
 65: !       requires: datafilespath double !complex !define(PETSC_USE_64BIT_INDICES)
 66: !
 67: !TEST*/