On Aug 28, 2014, at 4:34 AM, Åsmund Ervik <[email protected]> wrote:

> Hello,
> 
> I am solving a pressure Poisson equation with KSP, where the initial
> guess, RHS and matrix are computed by functions that I've hooked into
> KSPSetComputeXXX. (I'm also using DMDA for my domain decomposition.)
> 
> For (single-phase|two-phase) I would like to (reuse|not reuse) the
> preconditioner. How do I specify that when using this way of setting the
> operator? Is it toggled by whether or not I call KSPSetOperators before
> each KSPSolve? (The manual does not mention KSPSetComputeXXX.)

   You should call KSPSetOperators() before each KSPSolve() (otherwise the 
function you  provide to compute the matrix won’t be triggered).

   With PETSc 3.5 after the call to KSPSetOperators() call 
KSPSetReusePreconditioner() to tell KSP wether to reuse the preconditioner or 
build a new one.
   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

  Barry

> 
> Regards,
> Åsmund
> 

Reply via email to