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