You can change the maxstep before the SNESSolve() if needed. Such a huge step is not common.
> On Mar 7, 2023, at 12:39 PM, Angus, Justin Ray <ang...@llnl.gov> wrote: > > Barry, > > “It defaults to a huge value linesearch->maxstep = 1e8;” – That is the > answer! > > The newton step being taken in the slide I sent is 2.7e10. > > Thank you. > > -Justin > > From: Barry Smith <bsm...@petsc.dev <mailto:bsm...@petsc.dev>> > Date: Tuesday, March 7, 2023 at 9:34 AM > To: "Angus, Justin Ray" <ang...@llnl.gov <mailto:ang...@llnl.gov>> > Cc: Matthew Knepley <knep...@gmail.com <mailto:knep...@gmail.com>>, > "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 12:19 PM, Angus, Justin Ray <ang...@llnl.gov >> <mailto: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 > <https://urldefense.us/v3/__https:/petsc.org/release/docs/manual/other/*visual-studio-code-users__;Iw!!G2kpM7uM-TzIFchu!kQU20Vj5R0UB_QFB21x9Xjasg-Ho2l-QtzxZdjA8AKCBr2ieX1aHpvjO04tN68k$> > > 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$>