Actual source code: ex85f.F90
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: PetscCallA(PetscInitialize(ierr))
17: twelve = 12
18: PetscCallA(MatCreate(PETSC_COMM_SELF, m, ierr))
19: PetscCallA(MatSetSizes(m, twelve, twelve, twelve, twelve, ierr))
20: PetscCallA(MatSetFromOptions(m, ierr))
21: PetscCallA(MatSetUp(m, ierr))
23: value = 3.0
24: i = 4
25: one = 1
26: PetscCallA(MatSetValues(m, one, [i], one, [i], [value], INSERT_VALUES, ierr))
27: PetscCallA(MatAssemblyBegin(m, MAT_FINAL_ASSEMBLY, ierr))
28: PetscCallA(MatAssemblyEnd(m, MAT_FINAL_ASSEMBLY, ierr))
30: PetscCallA(VecCreateSeq(PETSC_COMM_SELF, twelve, v, ierr))
31: PetscCallA(MatGetDiagonal(m, v, ierr))
32: PetscCallA(VecView(v, PETSC_VIEWER_STDOUT_WORLD, ierr))
34: PetscCallA(MatDestroy(m, ierr))
35: PetscCallA(VecDestroy(v, ierr))
36: PetscCallA(PetscFinalize(ierr))
37: end
39: !/*TEST
40: !
41: ! test:
42: !
43: !TEST*/