xref: /petsc/src/mat/tests/ex120f.F90 (revision e7a95102f46630f317be643b805dc1c3f4655aeb)
1d8606c27SBarry Smith!
2d8606c27SBarry Smith!   This program tests MatCreateVecs() for Shell Matrix
3d8606c27SBarry Smith!
4d8606c27SBarry Smith#include <petsc/finclude/petscmat.h>
5*e7a95102SMartin Diehlmodule ex120f_mod
6d8606c27SBarry Smith  use petscmat
7d8606c27SBarry Smith  implicit none
8d8606c27SBarry Smith
9*e7a95102SMartin Diehlcontains
10*e7a95102SMartin Diehl  subroutine mymatgetvecs(A, x, y, ierr)
11*e7a95102SMartin 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*e7a95102SMartin Diehlend module ex120f_mod
22d8606c27SBarry Smith
23d8606c27SBarry Smithprogram main
24d8606c27SBarry Smith  use petscmat
25*e7a95102SMartin Diehl  use ex120f_mod
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