1c4762a1bSJed Brown! 2c4762a1bSJed Brown! 3c4762a1bSJed Brown! 4c4762a1bSJed Brown program main 5c4762a1bSJed Brown#include <petsc/finclude/petscmat.h> 6c4762a1bSJed Brown use petscmat 7c4762a1bSJed Brown implicit none 8c4762a1bSJed Brown 9c4762a1bSJed Brown Mat A 10c4762a1bSJed Brown PetscErrorCode ierr 11c4762a1bSJed Brown PetscScalar, pointer :: km(:,:) 12c4762a1bSJed Brown PetscInt three,one 13c4762a1bSJed Brown PetscInt idxm(1),i,j 14c4762a1bSJed Brown PetscScalar v 15c4762a1bSJed Brown 16*d8606c27SBarry Smith PetscCallA(PetscInitialize(ierr)) 17c4762a1bSJed Brown 18*d8606c27SBarry Smith PetscCallA(MatCreate(PETSC_COMM_WORLD,A,ierr)) 19c4762a1bSJed Brown three = 3 20*d8606c27SBarry Smith PetscCallA(MatSetSizes(A,three,three,three,three,ierr)) 21*d8606c27SBarry Smith PetscCallA(MatSetBlockSize(A,three,ierr)) 22*d8606c27SBarry Smith PetscCallA(MatSetType(A, MATSEQBAIJ,ierr)) 23*d8606c27SBarry Smith PetscCallA(MatSetUp(A,ierr)) 24c4762a1bSJed Brown 25c4762a1bSJed Brown one = 1 26c4762a1bSJed Brown idxm(1) = 0 27c4762a1bSJed Brown allocate (km(three,three)) 28c4762a1bSJed Brown do i=1,3 29c4762a1bSJed Brown do j=1,3 30c4762a1bSJed Brown km(i,j) = i + j 31c4762a1bSJed Brown enddo 32c4762a1bSJed Brown enddo 33c4762a1bSJed Brown 34*d8606c27SBarry Smith PetscCallA(MatSetValuesBlocked(A, one, idxm, one, idxm, km, ADD_VALUES, ierr)) 35*d8606c27SBarry Smith PetscCallA(MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY,ierr)) 36*d8606c27SBarry Smith PetscCallA(MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY,ierr)) 37*d8606c27SBarry Smith PetscCallA(MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr)) 38c4762a1bSJed Brown 39c4762a1bSJed Brown j = 0 40*d8606c27SBarry Smith PetscCallA(MatGetValues(A,one,j,one,j,v,ierr)) 41c4762a1bSJed Brown 42*d8606c27SBarry Smith PetscCallA(MatDestroy(A,ierr)) 43c4762a1bSJed Brown 44c4762a1bSJed Brown deallocate(km) 45*d8606c27SBarry Smith PetscCallA(PetscFinalize(ierr)) 46c4762a1bSJed Brown end 47c4762a1bSJed Brown 48c4762a1bSJed Brown!/*TEST 49c4762a1bSJed Brown! 50c4762a1bSJed Brown! test: 51c4762a1bSJed Brown! requires: double !complex 52c4762a1bSJed Brown! 53c4762a1bSJed Brown!TEST*/ 54