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

 14:       PetscCallA(PetscInitialize(ierr))
 15:       twelve = 12
 16:       PetscCallA(MatCreate(PETSC_COMM_WORLD,m,ierr))
 17:       PetscCallA(MatSetSizes(m,PETSC_DECIDE,PETSC_DECIDE,twelve,twelve,ierr))
 18:       PetscCallA(MatSetFromOptions(m,ierr))
 19:       PetscCallA(MatSetUp(m,ierr))

 21:       value = 3.0
 22:       i     = 4
 23:       one   = 1
 24:       PetscCallA(MatSetValuesMPIAIJ(m,one,i,one,i,value,ADD_VALUES,ierr))
 25:       i = 5
 26:       j = 7
 27:       PetscCallA(MatSetValuesMPIAIJ(m,one,i,one,j,value,ADD_VALUES,ierr))
 28:       i = 10
 29:       j = 9
 30:       PetscCallA(MatSetValuesMPIAIJ(m,one,i,one,j,value,ADD_VALUES,ierr))
 31:       PetscCallA(MatAssemblyBegin(m,MAT_FINAL_ASSEMBLY,ierr))
 32:       PetscCallA(MatAssemblyEnd(m,MAT_FINAL_ASSEMBLY,ierr))

 34:       PetscCallA(MatDestroy(m,ierr))
 35:       PetscCallA(PetscFinalize(ierr))
 36:       end

 38: !/*TEST
 39: !
 40: !   test:
 41: !      nsize: 2
 42: !
 43: !TEST*/