MatSetOperation#
Allows user to set a matrix operation for any matrix type
Synopsis#
#include "petscmat.h"
PetscErrorCode MatSetOperation(Mat mat, MatOperation op, void (*f)(void))
Logically Collective
Input Parameters#
mat - the matrix
op - the name of the operation
f - the function that provides the operation
Usage#
extern PetscErrorCode usermult(Mat, Vec, Vec);
PetscCall(MatCreateXXX(comm, ..., &A));
PetscCall(MatSetOperation(A, MATOP_MULT, (PetscVoidFunction)usermult));
Notes#
See the file include/petscmat.h
for a complete list of matrix
operations, which all have the form MATOP_MatMult()
-> MATOP_MULT
).
All user-provided functions (except for MATOP_DESTROY
) should have the same calling
sequence as the usual matrix interface routines, since they
are intended to be accessed via the usual matrix interface
routines, e.g.,
In particular each function MUST return PETSC_SUCCESS
on success and
nonzero on failure.
This routine is distinct from MatShellSetOperation()
in that it can be called on any matrix type.
See Also#
Matrices, Mat
, MatGetOperation()
, MatCreateShell()
, MatShellSetContext()
, MatShellSetOperation()
Level#
developer
Location#
Examples#
src/ksp/ksp/tutorials/ex29.c
src/ksp/ksp/tutorials/ex34.c
src/tao/bound/tutorials/jbearing2.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages