petsc-3.14.6 2021-03-30
Report Typos and Errors

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 on Mat

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);
     ierr = MatCreateXXX(comm,...&A);
     ierr = MatSetOperation(A,MATOP_MULT,(void(*)(void))usermult);

Notes

See the file include/petscmat.h for a complete list of matrix operations, which all have the form MATOP_<OPERATION>, where <OPERATION> is the name (in all capital letters) of the user interface routine (e.g., 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.,

      MatMult(Mat,Vec,Vec) -> usermult(Mat,Vec,Vec)

In particular each function MUST return an error code of 0 on success and nonzero on failure.

This routine is distinct from MatShellSetOperation() in that it can be called on any matrix type.

See Also

MatGetOperation(), MatCreateShell(), MatShellSetContext(), MatShellSetOperation()

Level

developer

Location

src/mat/interface/matrix.c

Examples

src/ksp/ksp/tutorials/ex29.c.html
src/ksp/ksp/tutorials/ex34.c.html
src/tao/bound/tutorials/jbearing2.c.html

Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages