Actual source code: ex85f.F
1: !
2: ! This program tests MatGetDiagonal()
3: !
4: program main
5: implicit none
7: #include finclude/petscsys.h
8: #include finclude/petscis.h
9: #include finclude/petscvec.h
10: #include finclude/petscmat.h
11: #include 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)
26: value = 3.0
27: i = 4
28: one = 1
29: call MatSetValues(m,one,i,one,i,value,INSERT_VALUES,ierr)
30: call MatAssemblyBegin(m,MAT_FINAL_ASSEMBLY,ierr)
31: call MatAssemblyEnd(m,MAT_FINAL_ASSEMBLY,ierr)
33: call VecCreateSeq(PETSC_COMM_SELF,twelve,v,ierr)
34: call MatGetDiagonal(m,v,ierr)
35: call VecView(v,PETSC_VIEWER_STDOUT_WORLD,ierr)
37: call MatDestroy(m,ierr)
38: call VecDestroy(v,ierr)
39: call PetscFinalize(ierr)
40: end