xref: /petsc/src/mat/tests/ex58f.F90 (revision a29dfd43bb0c77e2653d3bfa2c953f902720a6d2)
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