xref: /petsc/src/mat/tests/ex209f.F90 (revision 9b88ac225e01f016352a5f4cd90e158abe5f5675)
1c4762a1bSJed Brown!
2c4762a1bSJed Brown!
3c4762a1bSJed Brown!
4c4762a1bSJed Brown#include <petsc/finclude/petscmat.h>
5*c5e229c2SMartin Diehlprogram main
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
145d83a8b1SBarry 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    end do
32c4762a1bSJed Brown  end do
33c4762a1bSJed Brown
345d83a8b1SBarry 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
405d83a8b1SBarry 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 Brownend
47c4762a1bSJed Brown
48c4762a1bSJed Brown!/*TEST
49c4762a1bSJed Brown!
50c4762a1bSJed Brown!     test:
51c4762a1bSJed Brown!       requires: double !complex
52c4762a1bSJed Brown!
53c4762a1bSJed Brown!TEST*/
54