<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Oct 28, 2020, at 7:56 PM, Sajid Ali <<a href="mailto:sajidsyed2021@u.northwestern.edu" class="">sajidsyed2021@u.northwestern.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class=""><div dir="ltr" class=""><div class="">Hi Matt, <br class=""><br class=""></div>Thanks for the clarification. The <a href="https://gitlab.com/petsc/petsc/-/blob/master/src/snes/interface/snes.c#L3304" class="">documentation</a> 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 ?<br class=""></div></div></div></div></div></blockquote><div><br class=""></div>   This looks like outdated information. We may have been less picky at one point. Will remove.</div><div><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><div class=""><br class=""></div>What is the difference between having -snes_lag_preconditioner -2 and having -snes_lag_preconditioner_persists true ? <br class=""></div></div></div></blockquote><div><br class=""></div>    -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. </div><div><br class=""></div><div>    persists means that the recompute (say every 2 iterations) is done across all the solves not each individually. </div><div><br class=""></div><div>    Say the lag is 2. And 2 newton steps are done in the first iteration then.   </div><div><br class=""></div><div>    without persistence</div><div><br class=""></div><div>    iter 0 total its 0  of first solve compute preconditioning</div><div>    iter 1              1        do not</div><div>          2              2        do</div><div>    it     0              3        do</div><div>           1              4        do not</div><div><br class=""></div><div><br class=""></div><div><div>    with persistence</div><div><br class=""></div><div>    iter 0           0 e compute preconditioning</div><div>    iter 1            1          do not</div><div>          2            2          do</div><div>    it     0           3           do not</div><div>           1           4           do </div><div class=""><br class=""></div><div class="">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).</div><div class=""><br class=""></div><div class="">  Barry</div><div class=""><br class=""></div></div><div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div>PS :  The man pages for SNESSetLagJacobianPersists should perhaps not state the lag preconditioner options database keys and vice versa for clarity.<br class=""><div class=""><div class=""><div class=""><br class=""></div><div class="">Thank You,<br class=""></div><div class=""><div dir="ltr" class="gmail_signature"><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div style="font-size:12.8px" class="">Sajid Ali | PhD Candidate<br class=""></div><div style="font-size:12.8px" class="">Applied Physics<br class=""></div><div style="font-size:12.8px" class="">Northwestern University</div><div style="font-size:12.8px" class=""><a href="http://s-sajid-ali.github.io/" target="_blank" class="">s-sajid-ali.github.io</a></div></div></div></div></div></div></div></div></div></div></div>
</div></blockquote></div><br class=""></body></html>