:orphan: # KSPSetComputeOperators set routine to compute the linear operators ## Synopsis ``` #include "petscksp.h" #include "petscmat.h" PetscErrorCode KSPSetComputeOperators(KSP ksp, PetscErrorCode (*func)(KSP, Mat, Mat, void *), void *ctx) ``` Logically Collective ## Input Parameters - ***ksp -*** the `KSP` context - ***func -*** function to compute the operators - ***ctx -*** optional context ## Calling sequence of `func` ```none PetscErrorCode func(KSP ksp, Mat A, Mat B, void *ctx) ``` - ***ksp -*** the `KSP` context - ***A -*** the linear operator - ***B -*** preconditioning matrix - ***ctx -*** optional user-provided context ## Notes The user provided 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 [](ch_ksp), `KSP`, `KSPSetOperators()`, `KSPSetComputeRHS()`, `DMKSPSetComputeOperators()`, `KSPSetComputeInitialGuess()` ## Level beginner ## Location src/ksp/ksp/interface/itfunc.c ## Examples src/ksp/ksp/tutorials/ex22f.F90
src/ksp/ksp/tutorials/ex25.c
src/ksp/ksp/tutorials/ex28.c
src/ksp/ksp/tutorials/ex29.c
src/ksp/ksp/tutorials/ex32.c
src/ksp/ksp/tutorials/ex34.c
src/ksp/ksp/tutorials/ex35.cxx
src/ksp/ksp/tutorials/ex36.cxx
src/ksp/ksp/tutorials/ex45.c
src/ksp/ksp/tutorials/ex45f.F90
src/ksp/ksp/tutorials/ex50.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/ksp/interface/itfunc.c) [Index of all KSP routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)