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