xref: /petsc/src/mat/tests/ex209f.F90 (revision 5d83a8b16d06840f96948f1a43aa9c83c769a60a)
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
14*5d83a8b1SBarry Smith      PetscScalar v(1)
15c4762a1bSJed Brown
16d8606c27SBarry Smith      PetscCallA(PetscInitialize(ierr))
17c4762a1bSJed Brown
18d8606c27SBarry Smith      PetscCallA(MatCreate(PETSC_COMM_WORLD,A,ierr))
19c4762a1bSJed Brown      three = 3
20d8606c27SBarry Smith      PetscCallA(MatSetSizes(A,three,three,three,three,ierr))
21d8606c27SBarry Smith      PetscCallA(MatSetBlockSize(A,three,ierr))
22d8606c27SBarry Smith      PetscCallA(MatSetType(A, MATSEQBAIJ,ierr))
23d8606c27SBarry 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*5d83a8b1SBarry Smith      PetscCallA(MatSetValuesBlocked(A, one, idxm, one, idxm, reshape(km, [three*three]), ADD_VALUES, ierr))
35d8606c27SBarry Smith      PetscCallA(MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY,ierr))
36d8606c27SBarry Smith      PetscCallA(MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY,ierr))
37d8606c27SBarry Smith      PetscCallA(MatView(A,PETSC_VIEWER_STDOUT_WORLD,ierr))
38c4762a1bSJed Brown
39c4762a1bSJed Brown      j = 0
40*5d83a8b1SBarry Smith      PetscCallA(MatGetValues(A,one,[j],one,[j],v,ierr))
41c4762a1bSJed Brown
42d8606c27SBarry Smith      PetscCallA(MatDestroy(A,ierr))
43c4762a1bSJed Brown
44c4762a1bSJed Brown      deallocate(km)
45d8606c27SBarry 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