<div dir="ltr">PCSHELL is for adding your own preconditioner method (mat->ops->solve).<br><div>Pmat is the matrix that you want the PC to use to compute the preconditioner. </div><div>This is usually the same as Amat, the matrix that you want to use to apply the operator, but if you want to use say a matrix-free Amat, then you need to provide some sort of explicit matrix approximation of Amat for most preconditioners.</div><div>If you have a matrix that is an approximation of the inverse of Amat that you simply want to apply then you would need to make a PCSHELL with a method that does that.</div><div>Mark</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 6, 2021 at 8:51 AM Milan Pelletier via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Dear PETSc users,<br></div><div><br></div><div>I would like to know if it is possible to provide PETSc with a ILU-preconditioner matrix computed externally beforehand.<br></div><div><div>I tried and built a PCSHELL, to which I pass the externally-computed preconditioner matrix as "Pmat" using the KSPSetOperators function. Then I wanted to use that Pmat in PCApply by calling MatSolve as it seems to be done in the ILU case. Though, this fails since the mat->ops->solve (with mat being my PC Matrix) is a null pointer.<br></div><div><br></div><div>I guess the way I set the matrix (as a MATSEQAIJ) is not sufficient for PETSc to know what function to use as MatSolve.<br></div><div><br></div><div>How could I achieve providing my own ILU-decomposed matrix and feed PETSc's PCG with it? Is it actually possible?<br></div><div><br></div><div>Thanks for your help,<br><br></div></div><div><div><div><span style="color:rgb(107,107,107)">Milan Pelletier</span><br></div></div><div></div></div><div><br></div></blockquote></div>