#include "petscmat.h" PetscErrorCode MatShellSetOperation(Mat mat,MatOperation op,void (*f)(void))Logically Collective on Mat Many br
mat | - the shell matrix Many br | |
op | - the name of the operation Many br | |
f | - the function that provides the operation. Many br |
Many br
extern PetscErrorCode usermult(Mat,Vec,Vec);
ierr = MatCreateShell(comm,m,n,M,N,ctx,&A);
ierr = MatShellSetOperation(A,MATOP_MULT,(void(*)(void))usermult);
All user-provided functions (execept for MATOP_DESTROY) should have the same calling Many brsequence as the usual matrix interface routines, since they Many brare intended to be accessed via the usual matrix interface Many brroutines, e.g., Many br
MatMult(Mat,Vec,Vec) -> usermult(Mat,Vec,Vec)
In particular each function MUST return an error code of 0 on success and Many brnonzero on failure. Many br
Within each user-defined routine, the user should call Many brMatShellGetContext() to obtain the user-defined context that was Many brset by MatCreateShell(). Many br
Fortran Notes: For MatCreateVecs() the user code should check if the input left or right matrix is -1 and in that case not Many brgenerate a matrix. See src/mat/examples/tests/ex120f.F Many br
Level:advanced
Location:src/mat/impls/shell/shell.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages