> 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/>