Actual source code: ex105f.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,j
 15:       Mat     m
 16:       PetscScalar value

 18:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)

 20:       twelve = 12
 21:       call MatCreate(PETSC_COMM_WORLD,m,ierr)
 22:       call MatSetSizes(m,PETSC_DECIDE,PETSC_DECIDE,twelve,twelve,ierr)
 23:       call MatSetFromOptions(m,ierr)

 25:       value = 3.0
 26:       i     = 4
 27:       one   = 1
 28:       call MatSetValuesMPIAIJ(m,one,i,one,i,value,ADD_VALUES,ierr)
 29:       i = 5
 30:       j = 7
 31:       call MatSetValuesMPIAIJ(m,one,i,one,j,value,ADD_VALUES,ierr)
 32:       i = 10
 33:       j = 9
 34:       call MatSetValuesMPIAIJ(m,one,i,one,j,value,ADD_VALUES,ierr)
 35:       call MatAssemblyBegin(m,MAT_FINAL_ASSEMBLY,ierr)
 36:       call MatAssemblyEnd(m,MAT_FINAL_ASSEMBLY,ierr)

 38:       call MatDestroy(m,ierr)
 39:       call PetscFinalize(ierr)
 40:       end