# Specify a block preconditioner? KSPSetOperators(KSP ksp, Mat Amat, Mat Pmat)

**URL:** <https://community.freefem.org/t/specify-a-block-preconditioner-kspsetoperators-ksp-ksp-mat-amat-mat-pmat/2567>\
**Category:** General Discussion\
**Created:** [June 29, 2023, 9:17am UTC](https://community.freefem.org/t/specify-a-block-preconditioner-kspsetoperators-ksp-ksp-mat-amat-mat-pmat/2567 "2023-06-29T09:17:32Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![yongxing](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.freefem.org/yongxing/32/3632_2.png) [@yongxing](https://community.freefem.org/u/yongxing)\
**Post date:** [June 29, 2023, 9:17am UTC](https://community.freefem.org/t/specify-a-block-preconditioner-kspsetoperators-ksp-ksp-mat-amat-mat-pmat/2567/1 "2023-06-29T09:17:32Z")

</div>

Say

```auto
Mat A =[[UU, UP', UA'],
        [UP, 0, 0],
        [UA, 0, 0]];

Mat P=[[UU, 0, 0],
       [0, PP, 0],
       [0, 0, AA]];

```

How can we apply `P` as the preconditioner for solving `Ax = f` in FreeFem using syntax like

```auto
set(A , sparams = " ... ", fields = usPETSc, names = names);
x = A^-1 * f ;

```

?

---

<div class="post-metadata">

**Author:** ![prj](https://avatars.discourse-cdn.com/v4/letter/p/ecae2f/32.png) [@prj](https://community.freefem.org/u/prj)\
**Post date:** [June 30, 2023, 5:21am UTC](https://community.freefem.org/t/specify-a-block-preconditioner-kspsetoperators-ksp-ksp-mat-amat-mat-pmat/2567/2 "2023-06-30T05:21:00Z")

</div>

See [Applying a modified preconditioner matrix in PETSc - #2 by prj](https://community.freefem.org/t/applying-a-modified-preconditioner-matrix-in-petsc/1142/2).
