1! 2! This program tests MatGetDiagonal() 3! 4 program main 5#include <petsc/finclude/petscmat.h> 6 use petscmat 7 implicit none 8 9 PetscErrorCode ierr 10 PetscInt i,one,twelve,j 11 Mat m 12 PetscScalar value 13 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)) 20 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)) 33 34 PetscCallA(MatDestroy(m,ierr)) 35 PetscCallA(PetscFinalize(ierr)) 36 end 37 38!/*TEST 39! 40! test: 41! nsize: 2 42! 43!TEST*/ 44