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