Actual source code: ex85f.F90
1: !
2: ! This program tests MatGetDiagonal()
3: !
4: #include <petsc/finclude/petscmat.h>
5: program main
6: use petscmat
7: implicit none
9: PetscErrorCode ierr
10: PetscInt, parameter :: one = 1, twelve = 12
11: Vec v
12: Mat m
13: PetscScalar, parameter :: value = 3.0
15: PetscCallA(PetscInitialize(ierr))
17: PetscCallA(MatCreate(PETSC_COMM_SELF, m, ierr))
18: PetscCallA(MatSetSizes(m, twelve, twelve, twelve, twelve, ierr))
19: PetscCallA(MatSetFromOptions(m, ierr))
20: PetscCallA(MatSetUp(m, ierr))
22: PetscCallA(MatSetValues(m, one, [4_PETSC_INT_KIND], one, [4_PETSC_INT_KIND], [value], INSERT_VALUES, ierr))
23: PetscCallA(MatAssemblyBegin(m, MAT_FINAL_ASSEMBLY, ierr))
24: PetscCallA(MatAssemblyEnd(m, MAT_FINAL_ASSEMBLY, ierr))
26: PetscCallA(VecCreateSeq(PETSC_COMM_SELF, twelve, v, ierr))
27: PetscCallA(MatGetDiagonal(m, v, ierr))
28: PetscCallA(VecView(v, PETSC_VIEWER_STDOUT_WORLD, ierr))
30: PetscCallA(MatDestroy(m, ierr))
31: PetscCallA(VecDestroy(v, ierr))
32: PetscCallA(PetscFinalize(ierr))
33: end
35: !/*TEST
36: !
37: ! test:
38: !
39: !TEST*/