Actual source code: ex85f.F

petsc-3.12.1 2019-10-22
Report Typos and Errors
  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*/