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 9 10 Mat A 11 PetscErrorCode ierr 12 PetscInt M,N 13 PetscViewer v 14 Vec rowmax 15 PetscBool flg 16 IS isrow, iscol 17 character*(256) f 18 19 PetscCallA(PetscInitialize(ierr)) 20 21 PetscCallA(PetscOptionsGetString(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER,'-f',f,flg,ierr)) 22 PetscCallA(PetscViewerBinaryOpen(PETSC_COMM_WORLD,f,FILE_MODE_READ,v,ierr)) 23 24 PetscCallA(MatCreate(PETSC_COMM_WORLD,A,ierr)) 25 PetscCallA(MatSetType(A, MATSEQAIJ,ierr)) 26 PetscCallA(MatLoad(A,v,ierr)) 27 28 PetscCallA(MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr)) 29 30! 31! Test MatGetRowMaxAbs() 32 PetscCallA(MatGetSize(A,M,N,ierr)) 33 PetscCallA(VecCreate(PETSC_COMM_WORLD,rowmax,ierr)) 34 PetscCallA(VecSetSizes(rowmax,M,M,ierr)) 35 PetscCallA(VecSetFromOptions(rowmax,ierr)) 36 37 PetscCallA(MatGetRowMaxAbs(A,rowmax,PETSC_NULL_INTEGER_ARRAY,ierr)) 38 PetscCallA(VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr)) 39 40 PetscCallA(MatGetRowMax(A,rowmax,PETSC_NULL_INTEGER_ARRAY,ierr)) 41 PetscCallA(VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr)) 42 43 PetscCallA(MatGetRowMinAbs(A,rowmax,PETSC_NULL_INTEGER_ARRAY,ierr)) 44 PetscCallA(VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr)) 45 46 PetscCallA(MatGetRowMin(A,rowmax,PETSC_NULL_INTEGER_ARRAY,ierr)) 47 PetscCallA(VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr)) 48 49 PetscCallA(MatGetOwnershipIS(A,isrow,iscol,ierr)) 50 PetscCallA(ISDestroy(isrow,ierr)) 51 PetscCallA(ISDestroy(iscol,ierr)) 52 PetscCallA(MatGetOwnershipIS(A,PETSC_NULL_IS,PETSC_NULL_IS,ierr)) 53 54 PetscCallA(MatDestroy(A,ierr)) 55 PetscCallA(PetscViewerDestroy(v,ierr)) 56 PetscCallA(VecDestroy(rowmax,ierr)) 57 58 PetscCallA(PetscFinalize(ierr)) 59 end 60 61!/*TEST 62! 63! test: 64! args: -f ${DATAFILESPATH}/matrices/tiny 65! requires: datafilespath double !complex !defined(PETSC_USE_64BIT_INDICES) 66! 67!TEST*/ 68