<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p dir="ltr">> On 28. aug. 2014 20:52, Barry Smith wrote:<br>
> > <br>
> > On Aug 28, 2014, at 4:34 AM, Åsmund Ervik <asmund.ervik@ntnu.no> wrote:<br>
> > <br>
> >> Hello,<br>
> >><br>
> >> I am solving a pressure Poisson equation with KSP, where the initial<br>
> >> guess, RHS and matrix are computed by functions that I've hooked into<br>
> >> KSPSetComputeXXX. (I'm also using DMDA for my domain decomposition.)<br>
> >><br>
> >> For (single-phase|two-phase) I would like to (reuse|not reuse) the<br>
> >> preconditioner. How do I specify that when using this way of setting the<br>
> >> operator? Is it toggled by whether or not I call KSPSetOperators before<br>
> >> each KSPSolve? (The manual does not mention KSPSetComputeXXX.)<br>
> > <br>
> >    You should call KSPSetOperators() before each KSPSolve() (otherwise the function you  provide to compute the matrix won’t be triggered).<br>
> > <br>
> >    With PETSc 3.5 after the call to KSPSetOperators() call KSPSetReusePreconditioner() to tell KSP wether to reuse the preconditioner or build a new one.<br>
> >    With PETSc 3.4 and earlier, the final argument to KSPSetOperators() would be MAT_SAME_PRECONDITIONER to reuse the preconditioner or MAT_SAME_NONZERO_PATTERN to construct a new preconditioner<br>
> > </p>
<p dir="ltr">Thanks Barry for the clarification. Is there an example somewhere that<br>
does this? All the ones I can find which use KSPSetComputeOperators()<br>
have no calls to KSPSetOperators(). I guess this is because they are<br>
only doing one linear solve?</p>
<p dir="ltr">Furthermore, what should I pass in for Amat and Pmat to the KSPSetOperators() call? PetscNullObject, or do I get the Amat from the KSP somehow?</p>
<p dir="ltr">Åsmund</p>
</body>
</html>