On Aug 8, 2016, at 2:23 PM, Neiferd, David John <david.neif...@wright.edu<mailto:david.neif...@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 <oxber...@llnl.gov<mailto:oxber...@llnl.gov>> Sent: Monday, August 8, 2016 4:20:27 PM To: Neiferd, David John Cc: petsc-users@mcs.anl.gov<mailto:petsc-users@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.neif...@wright.edu<mailto:david.neif...@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.