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