Actual source code: ex85f.F
petsc-3.6.4 2016-04-12
1: !
2: ! This program tests MatGetDiagonal()
3: !
4: program main
5: implicit none
7: #include <petsc/finclude/petscsys.h>
8: #include <petsc/finclude/petscis.h>
9: #include <petsc/finclude/petscvec.h>
10: #include <petsc/finclude/petscmat.h>
11: #include <petsc/finclude/petscviewer.h>
13: PetscErrorCode ierr
14: PetscInt i,one,twelve
15: Vec v
16: Mat m
17: PetscScalar value
19: call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
21: twelve = 12
22: call MatCreate(PETSC_COMM_SELF,m,ierr)
23: call MatSetSizes(m,twelve,twelve,twelve,twelve,ierr)
24: call MatSetFromOptions(m,ierr)
25: call MatSetUp(m,ierr)
27: value = 3.0
28: i = 4
29: one = 1
30: call MatSetValues(m,one,i,one,i,value,INSERT_VALUES,ierr)
31: call MatAssemblyBegin(m,MAT_FINAL_ASSEMBLY,ierr)
32: call MatAssemblyEnd(m,MAT_FINAL_ASSEMBLY,ierr)
34: call VecCreateSeq(PETSC_COMM_SELF,twelve,v,ierr)
35: call MatGetDiagonal(m,v,ierr)
36: call VecView(v,PETSC_VIEWER_STDOUT_WORLD,ierr)
38: call MatDestroy(m,ierr)
39: call VecDestroy(v,ierr)
40: call PetscFinalize(ierr)
41: end