[petsc-users] How to solve nonlinear F(x) = b(x)?

Oxberry, Geoffrey Malcolm oxberry1 at llnl.gov
Mon Aug 8 16:33:56 CDT 2016


On Aug 8, 2016, at 2:23 PM, Neiferd, David John <david.neiferd at wright.edu<mailto:david.neiferd at wright.edu>> wrote:

Thanks for the suggestions Geoff and Dave.  Using G(x) = F(x) - b(x) = 0, will required redefinition of the Jacobian correct? If I understand correctly, the Jacobian is the derivative of F(x) with respect to x.  Since we are redefining F(x) to G(x), it would be necessary to change the Jacobian from dF(x)/dx to dF(x)/dx - db(x)/dx, correct?

Yes.

Also, I noticed when I implemented G(x) = F(x) - b = 0 (where b is constant) the method seems less robust when using newton's method with a line search, at least for one particular problem, the line search (using default settings) diverges (converged reason = -6), but using a trust region newton method or a quasi-newton method it converges to the answer.

I would start with the suggestions in http://www.mcs.anl.gov/petsc/documentation/faq.html#newton first before doing any more tuning. In optimization, trust region solvers have a reputation of being more robust, but slower, than comparable line search methods; I’m not sure if this statement is true for general equation solving.

Geoff

________________________________
From: Oxberry, Geoffrey Malcolm <oxberry1 at llnl.gov<mailto:oxberry1 at llnl.gov>>
Sent: Monday, August 8, 2016 4:20:27 PM
To: Neiferd, David John
Cc: petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>
Subject: Re: [petsc-users] How to solve nonlinear F(x) = b(x)?

David,

What about solving G(x) = F(x) - b(x) = 0?

Geoff

On Aug 8, 2016, at 1:12 PM, Neiferd, David John <david.neiferd at wright.edu<mailto:david.neiferd at wright.edu>> wrote:

Hello all,

I've been searching through the PETSc documentation to try to find how to solve a nonlinear system where the right hand side (b) varies as a function of the state variables (x).  According to the PETSc documentation, SNES solves the equations F(x) = b where b is a constant vector.  What would I do to solve F(x) = b(x)?  An example of this would be a nonlinear thermoelastic structure where as the structure deforms the direction of the loads generated by the thermal expansion changes as well.  Any insight into how to implement this is appreciated.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160808/6e49b729/attachment-0001.html>


More information about the petsc-users mailing list