> On Oct 28, 2020, at 7:56 PM, Sajid Ali <[email protected]> 
> wrote:
> 
> Hi Matt, 
> 
> Thanks for the clarification. The documentation 
> <https://gitlab.com/petsc/petsc/-/blob/master/src/snes/interface/snes.c#L3304>
>  for SNESSetLagPreconditioner states "If  -1 is used before the very first 
> nonlinear solve the preconditioner is still built because there is no 
> previous preconditioner to use" which was true prior to 3.14, is this 
> statement no longer valid ?

   This looks like outdated information. We may have been less picky at one 
point. Will remove.


> 
> What is the difference between having -snes_lag_preconditioner -2 and having 
> -snes_lag_preconditioner_persists true ? 

    -2 -1 persist through more nonlinear solves but if the number is positive a 
new preconditioner will be built for each zero iteration of the Newton solve. 

    persists means that the recompute (say every 2 iterations) is done across 
all the solves not each individually. 

    Say the lag is 2. And 2 newton steps are done in the first iteration then.  
 

    without persistence

    iter 0 total its 0  of first solve compute preconditioning
    iter 1              1        do not
          2              2        do
    it     0              3        do
           1              4        do not


    with persistence

    iter 0           0 e compute preconditioning
    iter 1            1          do not
          2            2          do
    it     0           3           do not
           1           4           do 

so with persistence it does the mod over the second column the total iterations 
without persistence it does over the local iteration (the normal way).

  Barry


> 
> PS :  The man pages for SNESSetLagJacobianPersists should perhaps not state 
> the lag preconditioner options database keys and vice versa for clarity.
> 
> Thank You,
> Sajid Ali | PhD Candidate
> Applied Physics
> Northwestern University
> s-sajid-ali.github.io <http://s-sajid-ali.github.io/>

Reply via email to