1*d8606c27SBarry Smith! 2*d8606c27SBarry Smith! This program tests MatGetDiagonal() 3*d8606c27SBarry Smith! 4*d8606c27SBarry Smith program main 5*d8606c27SBarry Smith#include <petsc/finclude/petscmat.h> 6*d8606c27SBarry Smith use petscmat 7*d8606c27SBarry Smith implicit none 8*d8606c27SBarry Smith 9*d8606c27SBarry Smith PetscErrorCode ierr 10*d8606c27SBarry Smith PetscInt i,one,twelve 11*d8606c27SBarry Smith Vec v 12*d8606c27SBarry Smith Mat m 13*d8606c27SBarry Smith PetscScalar value 14*d8606c27SBarry Smith 15*d8606c27SBarry Smith PetscCallA(PetscInitialize(ierr)) 16*d8606c27SBarry Smith 17*d8606c27SBarry Smith twelve = 12 18*d8606c27SBarry Smith PetscCallA(MatCreate(PETSC_COMM_SELF,m,ierr)) 19*d8606c27SBarry Smith PetscCallA(MatSetSizes(m,twelve,twelve,twelve,twelve,ierr)) 20*d8606c27SBarry Smith PetscCallA(MatSetFromOptions(m,ierr)) 21*d8606c27SBarry Smith PetscCallA(MatSetUp(m,ierr)) 22*d8606c27SBarry Smith 23*d8606c27SBarry Smith value = 3.0 24*d8606c27SBarry Smith i = 4 25*d8606c27SBarry Smith one = 1 26*d8606c27SBarry Smith PetscCallA(MatSetValues(m,one,i,one,i,value,INSERT_VALUES,ierr)) 27*d8606c27SBarry Smith PetscCallA(MatAssemblyBegin(m,MAT_FINAL_ASSEMBLY,ierr)) 28*d8606c27SBarry Smith PetscCallA(MatAssemblyEnd(m,MAT_FINAL_ASSEMBLY,ierr)) 29*d8606c27SBarry Smith 30*d8606c27SBarry Smith PetscCallA(VecCreateSeq(PETSC_COMM_SELF,twelve,v,ierr)) 31*d8606c27SBarry Smith PetscCallA(MatGetDiagonal(m,v,ierr)) 32*d8606c27SBarry Smith PetscCallA(VecView(v,PETSC_VIEWER_STDOUT_WORLD,ierr)) 33*d8606c27SBarry Smith 34*d8606c27SBarry Smith PetscCallA(MatDestroy(m,ierr)) 35*d8606c27SBarry Smith PetscCallA(VecDestroy(v,ierr)) 36*d8606c27SBarry Smith PetscCallA(PetscFinalize(ierr)) 37*d8606c27SBarry Smith end 38*d8606c27SBarry Smith 39*d8606c27SBarry Smith!/*TEST 40*d8606c27SBarry Smith! 41*d8606c27SBarry Smith! test: 42*d8606c27SBarry Smith! 43*d8606c27SBarry Smith!TEST*/ 44