[petsc-users] PETSc using problem

Matthew Knepley knepley at gmail.com
Sun May 11 10:50:00 CDT 2025


On Sun, May 11, 2025 at 11:39 AM hj2000--- via petsc-users <
petsc-users at mcs.anl.gov> wrote:

> Dear Developer:
>
>    I am a user of PETSc, and I am using SNESLineSearchSetPostCheck to
> perform some actions when the line search fails.
>
> However, it seems that this function is only called when the line search
> is successful. Why is that?
>
PostCheck is intended to work on the solution found by the line search.


> Do I need to do something else?
>
Yes. We do not have a specific hook for failure, because that would make it
a different line search (one which may not obey the advertised properties).
Thus we would want your scheme to be its own line search.

  Thanks,

     Matt


> My PETSc version is 3.18.6. Below is my code.
>
>
>
>         auto LineSearchPostCheck = []( SNESLineSearch ls, Vec x, Vec y,
> Vec w, PetscBool* changed_Y,
>
>                                        PetscBool* changed_W, void* ) {
>
>             SNESLineSearchReason lscnv;
>
>             SNESLineSearchGetReason( ls, &lscnv );
>
>             SNES snes = nullptr;
>
>             SNESLineSearchGetSNES( ls, &snes );
>
>             SNESConvergedReason cnv;
>
>             SNESGetConvergedReason( snes, &cnv );
>
>             double lambda = 0.0;
>
>             SNESLineSearchGetLambda( ls, &lambda );
>
>             PetscPrintf( MPI_COMM_WORLD, "lambda=%lf\n", lambda );
>
>             if ( lscnv != SNES_LINESEARCH_SUCCEEDED || lambda < 1e-4 )
>
>             {
>
>                 VecWAXPY( w, -0.1, y, x );
>
>                 SNESLineSearchSetReason( ls, SNES_LINESEARCH_SUCCEEDED );
>
>                 *changed_W = PETSC_TRUE;
>
>             }
>
>             return 0;
>
>         };
>
>         SNESLineSearchSetPostCheck( ls, LineSearchPostCheck, nullptr);
>
>
>

-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://urldefense.us/v3/__https://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!Y6XIK823eTx-iRg60ThDREJsmpqY4jNxIxr-y3_Li6lAA2rs8JvxNjeeUrgfpgbcSCSaRzhBaYiBHw7nGypK$  <https://urldefense.us/v3/__http://www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!Y6XIK823eTx-iRg60ThDREJsmpqY4jNxIxr-y3_Li6lAA2rs8JvxNjeeUrgfpgbcSCSaRzhBaYiBH_soe98y$ >
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20250511/1cebbd55/attachment.html>


More information about the petsc-users mailing list