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