Barry,

this helped a lot.
I do multiple solves with the operator changing at each solve. Without
forcing recomputing the preconditioner and setting explicitly
KSPSetReusePreconditioner,
I mostly get "PCSetUp(): Leaving PC with identical preconditioner since
operator is unchanged" and a few times  "PCSetUp(): Setting up PC with
same nonzero pattern".
Shouldn't I get "PCSetUp(): Setting up PC with same nonzero pattern" all
the times since the operator keeps changing?
I am solving with CG + MG with coarse operators computed via Galerkin
process. 

Michele 




On Thu, 2015-07-09 at 15:06 -0500, Barry Smith wrote:

>   Run with -info ; it prints lots of stuff but you can grep for PCSetUp  and 
> you'll see a message such as 
> 
> Setting up PC for first time
> 
> Leaving PC with identical preconditioner since operator is unchanged
> 
> Setting up PC with different nonzero pattern\n");CHKERRQ(ierr);
> 
> Setting up PC with same nonzero pattern
> 
> or 
> 
> Leaving PC with identical preconditioner since reuse preconditioner is set
> 
> 
> 
> > On Jul 9, 2015, at 2:45 PM, Michele Rosso <[email protected]> wrote:
> > 
> > Barry,
> > 
> > thanks you for your help.
> > Is there a database options that allows me to check weather PC has been 
> > recomputed or kept the same?
> > 
> > Thanks,
> > Michele 
> > 
> > 
> > On Thu, 2015-07-09 at 14:43 -0500, Barry Smith wrote:
> >>    By default in the last two PETSc releases KSP automatically updates the 
> >> preconditioner whenever the matrix you set with KSPSetOperators() has been 
> >> changed. That is you have to do nothing and PETSc will recompute the 
> >> preconditioner as needed. If you wish to keep the same preconditioner even 
> >> though the matrix has changed then you can use 
> >> KSPSetReusePreconditioner(ksp,PETSC_TRUE) and it will keep using the same 
> >> preconditioner until you call KSPSetReusePreconditioner(ksp,PETSC_FALSE) 
> >> which will switch back to the default mode.
> >> 
> >>   You only need to destroy the KSP or call KSPReset() when you change the 
> >> size of the vectors or matrices.
> >> 
> >>   Barry
> >> 
> >> 
> >> > On Jul 9, 2015, at 12:20 PM, Michele Rosso <[email protected]> wrote:
> >> > 
> >> > Hi,
> >> > 
> >> > I need to recompute the preconditioner every once in a while. So far I 
> >> > do this "manually", i.e. I destroy ksp and re-create and reset it 
> >> > whenever needed. 
> >> > I am wondering if there is a cleaner way of doing this via a PETSc 
> >> > function. I found KSPreset but there are no examples about it so I am 
> >> > not sure it is what I am looking for.
> >> > Could you help please?
> >> > 
> >> > 
> >> > Thanks,
> >> > Michele
> >> 
> >> 
> >> 
> > 
> 


Reply via email to