Skip to main content
`Ctrl`+`K`

# KSPSetComputeOperators

set routine to compute the linear operators

## Synopsis

    #include "petscksp.h"
    #include "petscmat.h"
    PetscErrorCode KSPSetComputeOperators(KSP ksp, KSPComputeOperatorsFn *func, PetscCtx ctx)

Logically Collective

## Input Parameters

- ksp - the `KSP` context

- func - function to compute the operators, see `KSPComputeOperatorsFn` for the calling sequence

- ctx - optional context

## Notes

`func()` will be called automatically at the very next call to `KSPSolve()`. It will NOT be called at future `KSPSolve()` calls unless either `KSPSetComputeOperators()` or `KSPSetOperators()` is called before that `KSPSolve()` is called. This allows the same system to be solved several times with different right-hand side functions but is a confusing API since one might expect it to be called for each `KSPSolve()`

To reuse the same preconditioner for the next `KSPSolve()` and not compute a new one based on the most recently computed matrix call `KSPSetReusePreconditioner()`

## Developer Note

Perhaps this routine and `KSPSetComputeRHS()` could be combined into a new API that makes clear when new matrices are computing without requiring call this routine to indicate when the new matrix should be computed.

## See Also

KSP: Linear System Solvers, `KSP`, `KSPSetOperators()`, `KSPSetComputeRHS()`, `DMKSPSetComputeOperators()`, `KSPSetComputeInitialGuess()`, `KSPComputeOperatorsFn`

## Level

beginner

## Location

src/ksp/ksp/interface/itfunc.c

## Examples

src/ksp/ksp/tutorials/ex32.c
src/ksp/ksp/tutorials/ex35.cxx
src/ksp/ksp/tutorials/ex22f.F90
src/ksp/ksp/tutorials/ex36.cxx
src/ksp/ksp/tutorials/ex34.c
src/ksp/ksp/tutorials/ex45.c
src/ksp/ksp/tutorials/ex28.c
src/ksp/ksp/tutorials/ex45f.F90
src/ksp/ksp/tutorials/ex25.c
src/ksp/ksp/tutorials/ex29.c

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