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