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