:orphan:
# KSPFGMRESSetModifyPC
Sets the routine used by `KSPFGMRES` to modify the preconditioner. [](sec_flexibleksp)
## Synopsis
```
#include "petscksp.h"
PetscErrorCode KSPFGMRESSetModifyPC(KSP ksp, PetscErrorCode (*fcn)(KSP, PetscInt, PetscInt, PetscReal, void *), void *ctx, PetscErrorCode (*d)(void *))
```
Logically Collective
## Input Parameters
- ***ksp -*** iterative context obtained from `KSPCreate()`
- ***fcn -*** modifypc function
- ***ctx -*** optional context
- ***d -*** optional context destroy routine
## Calling Sequence of `function`
```none
PetscErrorCode fcn(KSP ksp, PetscInt total_its, PetscInt loc_its, PetscReal res_norm, void *ctx);
```
- ***ksp -*** the ksp context being used.
- ***total_its -*** the total number of FGMRES iterations that have occurred.
- ***loc_its -*** the number of FGMRES iterations since last restart.
- ***res_norm -*** the current residual norm.
- ***ctx -*** optional context variable
## Calling Sequence of `d`
```none
PetscErrorCode d(void *ctx)
```
## Options Database Keys
- ***-ksp_fgmres_modifypcnochange -*** do not change the `PC`
- ***-ksp_fgmres_modifypcksp -*** changes the inner KSP solver tolerances
## Note
Several modifypc routines are predefined, including `KSPFGMRESModifyPCNoChange()`, and `KSPFGMRESModifyPCKSP()`
## See Also
[](ch_ksp), [](sec_flexibleksp), `KSPFGMRES`, `KSPFGMRESModifyPCNoChange()`, `KSPFGMRESModifyPCKSP()`
## Level
intermediate
## Location
src/ksp/ksp/impls/gmres/fgmres/modpcf.c
## Implementations
KSPFGMRESSetModifyPC_FGMRES in src/ksp/ksp/impls/gmres/fgmres/fgmres.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/ksp/impls/gmres/fgmres/modpcf.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)