> On Mar 7, 2023, at 12:19 PM, Angus, Justin Ray <ang...@llnl.gov> wrote: > > Hi Matthew, > > Thank you for the reply. But my question was really related to what Barry had > said – the BT method will use the full step as long as it leads to some > decease in the function norm. The full step does indeed satisfy this > condition, but the BT method does not seem to be using the full step. Why? > > Is it because the step value is larger than the default maxstep? I don’t know > what that value is or how to find it.
The easiest way is to run in a debugger and put in a break point for SNESLineSearchApply_BT(). Step to see exactly what decision it is making You can see the parameters used by running with -snes_view_pre (here pre means to display the parameters before the solve is done). The line search default values are set in SNESLineSearchCreate() in src/snes/linesearch/interface/linesearch.c It defaults to a huge value linesearch->maxstep = 1e8; If you use VSCode or some other programming environment you can set it up to find things in the PETSc source easily https://petsc.org/release/docs/manual/other/#visual-studio-code-users Barry > > -Justin > > From: Matthew Knepley <knep...@gmail.com <mailto:knep...@gmail.com>> > Date: Tuesday, March 7, 2023 at 9:16 AM > To: "Angus, Justin Ray" <ang...@llnl.gov <mailto:ang...@llnl.gov>> > Cc: Barry Smith <bsm...@petsc.dev <mailto:bsm...@petsc.dev>>, > "petsc-dev@mcs.anl.gov <mailto:petsc-dev@mcs.anl.gov>" <petsc-dev@mcs.anl.gov > <mailto:petsc-dev@mcs.anl.gov>> > Subject: Re: [petsc-dev] SNESNEWTONLS > > On Tue, Mar 7, 2023 at 12:03 PM Angus, Justin Ray via petsc-dev > <petsc-dev@mcs.anl.gov <mailto:petsc-dev@mcs.anl.gov>> wrote: >> Hi Barry, >> >> Very helpful. >> >> I’m still having some trouble with reconciling your answer to question >> number 2 based on some recent observations I have had. I’ve shared 1 slide >> concerning that observation, which I will briefly describe below. >> >> I have a code that uses petsc but also has a native JFNK solver that works >> in the standard textbook way and always uses the full newton step. I >> recently found that the SNES newton solver in petsc with default options was >> failing on step 1 of a simulation, while our native solver worked fine. The >> fix for petsc was to switch from backtracking line search to basic. >> >> Based in the information in the slide, can you make sense of this behavior? > > Sure. It is completely possible to converge using full steps when you do not > converge using BT. All of the convergence proofs > are predicated on starting "close enough" to the solution. You can start far > away, take full steps, and by chance get into the basin of > convergence. BT, that is trying to guarantee convergence, will fail. There > are a very small number of cases for which we can > guarantee global convergence. > > Thanks, > > Matt > >> -Justin >> >> From: Barry Smith <bsm...@petsc.dev <mailto:bsm...@petsc.dev>> >> Date: Tuesday, March 7, 2023 at 8:52 AM >> To: "Angus, Justin Ray" <ang...@llnl.gov <mailto:ang...@llnl.gov>> >> Cc: "petsc-dev@mcs.anl.gov <mailto:petsc-dev@mcs.anl.gov>" >> <petsc-dev@mcs.anl.gov <mailto:petsc-dev@mcs.anl.gov>> >> Subject: Re: [petsc-dev] SNESNEWTONLS >> >> >> >> >>> On Mar 7, 2023, at 11:36 AM, Angus, Justin Ray via petsc-dev >>> <petsc-dev@mcs.anl.gov <mailto:petsc-dev@mcs.anl.gov>> wrote: >>> >>> Hello, >>> >>> I’ve been using the default newton line search nonlinear solver in petsc. I >>> recently discovered that the default line search method is bt – >>> backtracking. I have two questions. >>> >>> How exactly does the backtracking line search use the L2 norm of the >>> function to modify the newton step? What is the formula? >> >> >> https://petsc.org/main/src/snes/linesearch/impls/bt/linesearchbt.c.html#SNESLINESEARCHBT >> >> <https://urldefense.us/v3/__https:/petsc.org/main/src/snes/linesearch/impls/bt/linesearchbt.c.html*SNESLINESEARCHBT__;Iw!!G2kpM7uM-TzIFchu!gRMzIDCT2gk_bmfyFDMW_2hqc18xUq_eOd-GQOXGkPsHzw_F01t55J_ab98JKVI$> >> >> >>> >>> Why is backtracking default? I would think that the basic method, which is >>> a standard Newton method, would be default. >> >> All SNES Newton line searches use the full Newton step if it satisfies >> the Wolf conditions (there is some decrease in the function norm) and if the >> full Newton step is selected there is no nontrivial extra costs from using a >> line search (since the line search is never done) so there is no reason not >> to default to using SNESLINESEARCHBT. While using ONLY the full-step there >> may not convergence for many situations. Hence our default. >> >> >> >> >> >> >>> >>> >>> -Justin >> >> >> > > > > -- > 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://www.cse.buffalo.edu/~knepley/ > <https://urldefense.us/v3/__http:/www.cse.buffalo.edu/*knepley/__;fg!!G2kpM7uM-TzIFchu!j3AGZCLzChJI9AkGBKcae0TA2fNh_B_Y_Isx1koEbyAOIQVPHznYaIG73_xzqJw$>