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