xref: /petsc/src/mat/tests/ex120f.F90 (revision 9b88ac225e01f016352a5f4cd90e158abe5f5675)
1d8606c27SBarry Smith!
2d8606c27SBarry Smith!   This program tests MatCreateVecs() for Shell Matrix
3d8606c27SBarry Smith!
4d8606c27SBarry Smith#include <petsc/finclude/petscmat.h>
5*01fa2b5aSMartin Diehlmodule ex120fmodule
6d8606c27SBarry Smith  use petscmat
7d8606c27SBarry Smith  implicit none
8d8606c27SBarry Smith
9e7a95102SMartin Diehlcontains
10e7a95102SMartin Diehl  subroutine mymatgetvecs(A, x, y, ierr)
11e7a95102SMartin Diehl
12d8606c27SBarry Smith    PetscErrorCode ierr
13d8606c27SBarry Smith    Mat A
14d8606c27SBarry Smith    Vec x, y
15d8606c27SBarry Smith    PetscInt tw
16d8606c27SBarry Smith
17d8606c27SBarry Smith    tw = 12
18d8606c27SBarry Smith    PetscCallA(VecCreateSeq(PETSC_COMM_SELF, tw, x, ierr))
19d8606c27SBarry Smith    PetscCallA(VecCreateSeq(PETSC_COMM_SELF, tw, y, ierr))
20d8606c27SBarry Smith  end
21*01fa2b5aSMartin Diehlend module ex120fmodule
22d8606c27SBarry Smith
23d8606c27SBarry Smithprogram main
24d8606c27SBarry Smith  use petscmat
25*01fa2b5aSMartin Diehl  use ex120fmodule
26d8606c27SBarry Smith  implicit none
27d8606c27SBarry Smith
28d8606c27SBarry Smith  PetscErrorCode ierr
29d8606c27SBarry Smith  Vec x, y
30d8606c27SBarry Smith  Mat m
31d8606c27SBarry Smith  PetscInt tw
32d8606c27SBarry Smith
33d8606c27SBarry Smith  PetscCallA(PetscInitialize(ierr))
34d8606c27SBarry Smith
35d8606c27SBarry Smith  tw = 12
36d8606c27SBarry Smith  PetscCallA(MatCreateShell(PETSC_COMM_SELF, tw, tw, tw, tw, 0, m, ierr))
37d8606c27SBarry Smith  PetscCallA(MatAssemblyBegin(m, MAT_FINAL_ASSEMBLY, ierr))
38d8606c27SBarry Smith  PetscCallA(MatAssemblyEnd(m, MAT_FINAL_ASSEMBLY, ierr))
39d8606c27SBarry Smith  PetscCallA(MatShellSetOperation(m, MATOP_CREATE_VECS, mymatgetvecs, ierr))
40d8606c27SBarry Smith  PetscCallA(MatCreateVecs(m, x, y, ierr))
41d8606c27SBarry Smith  PetscCallA(MatDestroy(m, ierr))
42d8606c27SBarry Smith  PetscCallA(VecDestroy(x, ierr))
43d8606c27SBarry Smith  PetscCallA(VecDestroy(y, ierr))
44d8606c27SBarry Smith  PetscCallA(PetscFinalize(ierr))
45d8606c27SBarry Smithend
46d8606c27SBarry Smith
47d8606c27SBarry Smith!/*TEST
48d8606c27SBarry Smith!
49d8606c27SBarry Smith!   test:
50d8606c27SBarry Smith!      nsize: 2
513886731fSPierre Jolivet!      output_file: output/empty.out
52d8606c27SBarry Smith!
53d8606c27SBarry Smith!TEST*/
54