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