[petsc-users] user defined algorithm for newton solver

Michael Povolotskyi mpovolot at purdue.edu
Fri Oct 9 12:45:30 CDT 2015


thank you,
I'll try to do that.

Yes, i have some criteria that can tell that the solution is a 
non-physical one.
Basically what I'm trying to do is very similar to a predictor corrector 
scheme.
Predictor should move solution to the right direction.

On 10/08/2015 03:44 PM, Matthew Knepley wrote:
> On Thu, Oct 8, 2015 at 2:41 PM, Barry Smith <bsmith at mcs.anl.gov 
> <mailto:bsmith at mcs.anl.gov>> wrote:
>
>
>        The easiest way for you to implement this is to simply call
>     your update to the solution and then call SNESSolve() again. For
>     example
>
>        while (1) {
>          SNESSolve(snes,x,NULL);
>          SNESGetConvergedReason(snes,&reason);
>          if (reason > 0) break;  /* since snes has converged */
>          change x per your way
>       }
>
>     The problem with the code above is that each new call to
>     SNESSolve() resets the rtol convergence factor based on the
>     current latest norm of F so the code above will "oversolve" the
>     problem. You can call SNESSetTolerance() above the while loop with
>     an appropriate atol to get it to exit at the point you want to
>     declare it converged.
>
>       It is not worthwhile trying to "weave" your special update code
>     inside the Newton method.
>
>
> Do you know what the non-physical solutions are?
>
>    Matt
>
>
>        Barry
>
>     > On Oct 8, 2015, at 1:05 PM, Michael Povolotskyi
>     <mpovolot at purdue.edu <mailto:mpovolot at purdue.edu>> wrote:
>     >
>     > Thank you.
>     > The situation is as follows:
>     > The system I need to solve does not have a unique solution, but
>     only one makes sense from physical point of view.  I need to
>     compute direction in a different way based on the physics.
>     >
>     > In other words it should be like this:
>     >
>     > 1. Start with a solution guess
>     > 2. Do full Newton step
>     > 3. If converged, exit
>     >    else if the solution improved go to step 2
>     >    otherwise "update_solution_in_my_way" ang go to step 2
>     >
>     > Is it possible to do this in PETSc?
>     > Michael.
>     >
>     > On 10/08/2015 01:58 PM, Barry Smith wrote:
>     >>> On Oct 8, 2015, at 12:26 PM, Michael Povolotskyi
>     <mpovolot at purdue.edu <mailto:mpovolot at purdue.edu>> wrote:
>     >>>
>     >>> Dear Petsc developers and users,
>     >>> I'm solving a nonlinear system with PETSc.
>     >>> Often simple Newton iterations do not work and I have to use
>     either linear search or trust region.
>     >>> I would like to use my own algorithm to find a next iteration
>     approximation to solution if the Newton step does not improve the
>     residual. As far as I can see I have to define my own
>     SNELLineSearch object. Is there any example that shows how to do it?
>     >>    The line search model is 1) select direction based on
>     approximate solution of approximate Jacobian  2) search in THAT
>     direction for a decrease in the function evaluation. You state "if
>     the Newton step does not improve the residual." so will you be
>     computing the DIRECTION in a different way than (1) or will you be
>     using the same direction but trying somehow to find a decrease in
>     the function evaluation using a different technique then the
>     standard line searchs we provide?
>     >>
>     >>    Frankly if the line searches we provide don't work that
>     means the direction is not good and no "special" line search will
>     recover.  I really recommend you go through our suggestions on the
>     FAQ http://www.mcs.anl.gov/petsc/documentation/faq.html#newton on
>     trying to figure out why Newton is not converging before you think
>     about writing a special line search.
>     >>
>     >>   Barry
>     >>
>     >>
>     >>
>     >>> Thank you,
>     >>> Michael.
>     >>>
>     >>> --
>     >>> Michael Povolotskyi, PhD
>     >>> Research Assistant Professor
>     >>> Network for Computational Nanotechnology
>     >>> Hall for Discover and Learning Research, Room 441
>     >>> West Lafayette, IN 47907
>     >>> Phone (765) 4949396 <tel:%28765%29%204949396>
>     >>>
>     >
>     > --
>     > Michael Povolotskyi, PhD
>     > Research Assistant Professor
>     > Network for Computational Nanotechnology
>     > Hall for Discover and Learning Research, Room 441
>     > West Lafayette, IN 47907
>     > Phone (765) 4949396 <tel:%28765%29%204949396>
>     >
>
>
>
>
> -- 
> 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

-- 
Michael Povolotskyi, PhD
Research Assistant Professor
Network for Computational Nanotechnology
Hall for Discover and Learning Research, Room 441
West Lafayette, IN 47907
Phone (765) 4949396

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20151009/2562d7c6/attachment.html>


More information about the petsc-users mailing list