Actual source code: ex120f.F

petsc-3.7.4 2016-10-02
Report Typos and Errors
  1: !
  2: !   This program tests MatCreateVecs() for Shell Matrix
  3: !
  4:       subroutine mymatgetvecs(A,x,y,ierr)
  5:       implicit none

  7: #include <petsc/finclude/petscsys.h>
  8: #include <petsc/finclude/petscis.h>
  9: #include <petsc/finclude/petscvec.h>
 10: #include <petsc/finclude/petscmat.h>
 11:       PetscErrorCode ierr
 12:       Mat A
 13:       Vec x,y

 15:       if (x .ne. -1) then
 16:         call VecCreateSeq(PETSC_COMM_SELF,12,x,ierr)
 17:       endif
 18:       if (y .ne. -1) then
 19:         call VecCreateSeq(PETSC_COMM_SELF,12,y,ierr)
 20:       endif

 22:       return
 23:       end


 26:       program main
 27:       implicit none

 29: #include <petsc/finclude/petscsys.h>
 30: #include <petsc/finclude/petscis.h>
 31: #include <petsc/finclude/petscvec.h>
 32: #include <petsc/finclude/petscmat.h>
 33: #include <petsc/finclude/petscviewer.h>

 35:       PetscErrorCode ierr
 36:       Vec     x,y
 37:       Mat     m
 38:       external  mymatgetvecs

 40:       call PetscInitialize(PETSC_NULL_CHARACTER,ierr)

 42:       call MatCreateShell(PETSC_COMM_SELF,12,12,12,12,0,m,ierr)
 43:       call MatAssemblyBegin(m,MAT_FINAL_ASSEMBLY,ierr)
 44:       call MatAssemblyEnd(m,MAT_FINAL_ASSEMBLY,ierr)
 45:       call MatShellSetOperation(m,MATOP_GET_VECS,mymatgetvecs,ierr)
 46:       call MatCreateVecs(m,x,y,ierr)
 47:       call MatDestroy(m,ierr)
 48:       call VecDestroy(x,ierr)
 49:       call VecDestroy(y,ierr)
 50:       call PetscFinalize(ierr)
 51:       end