Actual source code: ex85f.F
petsc-3.13.4 2020-08-01
1: !
2: ! This program tests MatGetDiagonal()
3: !
4: program main
5: #include <petsc/finclude/petscmat.h>
6: use petscmat
7: implicit none
9: PetscErrorCode ierr
10: PetscInt i,one,twelve
11: Vec v
12: Mat m
13: PetscScalar value
15: call PetscInitialize(PETSC_NULL_CHARACTER,ierr)
16: if (ierr .ne. 0) then
17: print*,'Unable to initialize PETSc'
18: stop
19: endif
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
43: !/*TEST
44: !
45: ! test:
46: !
47: !TEST*/