Você pode usar aditivo
P−1ax=(BTB)−1x+(CTC)−1x,
multiplicativo
P−1mx=(BTB)−1x+(CTC)−1(x−A(BTB)−1x),
ou multiplicativo simétrico. Os métodos desta classe estão disponíveis no PETSc usando PCCOMPOSITE no PETSc. Por exemplo,
petsc/src/ksp/ksp/examples/tutorials$ ./ex2 -m 100 -n 100 -ksp_monitor \
-pc_type composite -pc_composite_type multiplicative \
-pc_composite_pcs ilu,gamg
0 KSP Residual norm 7.088415699389e+01
1 KSP Residual norm 1.271768323411e+01
2 KSP Residual norm 1.529853612054e+00
3 KSP Residual norm 1.214841683459e-01
4 KSP Residual norm 8.341606406485e-03
5 KSP Residual norm 6.471990946051e-04
6 KSP Residual norm 8.082672366030e-05
7 KSP Residual norm 6.111138513482e-06
Norm of error 6.93786e-06 iterations 7
O manual do usuário possui uma seção "Combinando pré-condicionadores".