<div dir="ltr"><div class="gmail_default"><p style="margin:0px 0px 1em;padding:0px;border:0px;font-variant-numeric:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;clear:both;color:rgb(36,39,41)"><font face="arial, helvetica, sans-serif">I'm using PETSc's SNES methods to solve PDEs which result from Euler-Lagrange equations for the strain energy of a 3D displacement field. There is an additional term in the Lagrangian which describes external forces which arise from various data sets, and that term contains nonlinearities (field terms higher than linear). The grid has about 1.6e6 elements, and the displacement field has 3 components at each grid element.</font></p><p style="margin:0px 0px 1em;padding:0px;border:0px;font-variant-numeric:inherit;font-stretch:inherit;line-height:inherit;vertical-align:baseline;clear:both;color:rgb(36,39,41)"><font face="arial, helvetica, sans-serif">I'm trying to solve a sequence of successively more complicated equations, and the latest equation is failing to converge on some data sets. In particular, the methods were successful for the infinitesimal bulk strain (compression) energy, as well as the full infinitesimal strain energy (bulk + shear), but I'm now trying to generalize to the </font><span style="font-family:arial,helvetica,sans-serif">finite strain, as certain data sets are known to result from displacement fields for which the infinitesimal strain is a poor approximation.</span></p></div><div class="gmail_default" style="font-size:small">I'm using a DMDA, closely following example 48, and my preferred solver is L-BFGS.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I have read the FAQs "<font face="arial, helvetica, sans-serif" size="2" style="color:rgb(36,39,41);font-weight:inherit">Why is Newton's method not converging?</font><div class="gmail_default" style="color:rgb(36,39,41);font-weight:inherit;display:inline"><font face="arial, helvetica, sans-serif" size="2">​" and "</font></div><font size="2" style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-weight:inherit">Why is my iterative linear solver not converging?<div class="gmail_default" style="display:inline">​"</div></font><div class="gmail_default" style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-weight:inherit;display:inline">​</div><div class="gmail_default" style="font-weight:inherit;color:rgb(36,39,41);display:inline"><font face="inherit"> which have raised </font></div>a number of questions:</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Is there documentation for the DMDA/SNES methods somewhere?  I don't understand these very well.  For example, I am not allocating any matrix for the global Jacobian, and I believe this prevents me from changing the line search.  If I'm mistaken I would love to see an example of changing the line search type while using DMDA/SNES.</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I don't know how to interpret the linesearch monitor.  Even for problems which are converging properly, the linesearch monitor reports "lssucceed=0" on every iteration.  Is this a problem?</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default">I'm also having trouble understanding the methods for troubleshooting.  I suspect that I've made an error in the analytical Jacobian, which has a rather large number of non-zero elements, but I have no idea how to use <span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif">-snes_type test -snes_test_display.  The FAQs mention that some troubleshooting tools are more useful for small test problems.  How small is small?  When I try to run the program with -snes_type test -snes_test_display, I get errors like:</span></div><div class="gmail_default"><span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif"><br></span></div><div class="gmail_default"><span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif">[0]PETSC ERROR: Argument out of range [0]PETSC ERROR: Local index 1076396032 too large 4979879 (max) at 0</span><span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif"><br></span></div><div class="gmail_default"><span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:15px"><br></span></div><div class="gmail_default"><span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif">The second size is 1 less than the number of field elements, while the first number seems too large for any aspect of the problem - the Jacobian has at most 59 non-zero columns per row.</span></div><div class="gmail_default"><span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif"><br></span></div><div class="gmail_default"><span style="color:rgb(36,39,41)"><font face="arial, helvetica, sans-serif">Because I suspect a possible error in the Jacobian, I ran with -snes_mf_operator -pc_type ksp -ksp_ksp_rtol 1e-12 and observed very similar failure to converge (diverging residual) as with the explicit Jacobian. Do I need to set an SNES method which is somehow compatible with the "matrix-free" approach? If I instead use -snes_mf, the problem seems to converge, but horrendously slowly (true residual relative decrease by about 1e-5 per iteration).  I suppose this supports my suspicion that the Jacobian is incorrect but doesn't really suggest a solution.</font></span><span style="color:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,sans-serif"><br></span></div><div class="gmail_default"><span style="color:rgb(36,39,41)"><font face="arial, helvetica, sans-serif"><br></font></span></div><div class="gmail_default"><font color="#242729" face="arial, helvetica, sans-serif">Is it possible that the analytical Jacobian is correct, but somehow pathological, which causes the SNES to diverge?  Neither the Jacobian nor the function have singularities.</font></div><div class="gmail_default"><font color="#242729" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#242729" face="arial, helvetica, sans-serif">Thanks for any help you can provide!</font></div></div>