xref: /petsc/src/mat/tests/ex58f.F90 (revision 76be6f4ff3bd4e251c19fc00ebbebfd58b6e7589)
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      character*(256)  f
17
18      PetscCallA(PetscInitialize(ierr))
19
20      PetscCallA(PetscOptionsGetString(PETSC_NULL_OPTIONS,PETSC_NULL_CHARACTER,'-f',f,flg,ierr))
21      PetscCallA(PetscViewerBinaryOpen(PETSC_COMM_WORLD,f,FILE_MODE_READ,v,ierr))
22
23      PetscCallA(MatCreate(PETSC_COMM_WORLD,A,ierr))
24      PetscCallA(MatSetType(A, MATSEQAIJ,ierr))
25      PetscCallA(MatLoad(A,v,ierr))
26
27      PetscCallA(MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr))
28
29!
30!     Test MatGetRowMaxAbs()
31      PetscCallA(MatGetSize(A,M,N,ierr))
32      PetscCallA(VecCreate(PETSC_COMM_WORLD,rowmax,ierr))
33      PetscCallA(VecSetSizes(rowmax,M,M,ierr))
34      PetscCallA(VecSetFromOptions(rowmax,ierr))
35
36      PetscCallA(MatGetRowMaxAbs(A,rowmax,PETSC_NULL_INTEGER,ierr))
37      PetscCallA(VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr))
38
39      PetscCallA(MatGetRowMax(A,rowmax,PETSC_NULL_INTEGER,ierr))
40      PetscCallA(VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr))
41
42      PetscCallA(MatGetRowMinAbs(A,rowmax,PETSC_NULL_INTEGER,ierr))
43      PetscCallA(VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr))
44
45      PetscCallA(MatGetRowMin(A,rowmax,PETSC_NULL_INTEGER,ierr))
46      PetscCallA(VecView(rowmax,PETSC_VIEWER_STDOUT_WORLD,ierr))
47
48      PetscCallA(MatDestroy(A,ierr))
49      PetscCallA(PetscViewerDestroy(v,ierr))
50      PetscCallA(VecDestroy(rowmax,ierr))
51
52      PetscCallA(PetscFinalize(ierr))
53      end
54
55!/*TEST
56!
57!     test:
58!       args: -f ${DATAFILESPATH}/matrices/tiny
59!       requires: datafilespath double !complex !defined(PETSC_USE_64BIT_INDICES)
60!
61!TEST*/
62