<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, Jul 25, 2015 at 2:56 PM, Gideon Simpson <span dir="ltr"><<a href="mailto:gideon.simpson@gmail.com" target="_blank">gideon.simpson@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Are there any tools for constructing the Jacobian of a function when using DMComposite and DMRedundant?</div></blockquote><div><br></div><div>No good ones right now, since it would be a sparse Jacobian + a low rank update. We have talked about putting</div><div>this in forever, but no one was screaming for it.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div>
<span style="border-collapse:separate;color:rgb(0,0,0);font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">-gideon</span>

</div>
<br><div><blockquote type="cite"><span class=""><div>On Jul 13, 2015, at 8:25 PM, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>> wrote:</div><br></span><div><span class=""><br>  You can use a DMCOMPOSITE with a DMDA and a DMREDUNDANT see src/snes/examples/tutorials/ex21.c  It is intended for this type of situation.<br><br>  Barry<br><br><br></span><blockquote type="cite"><span class="">On Jul 13, 2015, at 4:05 PM, Gideon Simpson <<a href="mailto:gideon.simpson@gmail.com" target="_blank">gideon.simpson@gmail.com</a>> wrote:<br><br>Thanks for the suggestions.  Suppose though that I wanted to avoid using a self-consistent approach and just attack the full nonlinear problem.  Is there a “smart” way to handle my data where the Vec q, which stores both the function on the mesh, and the eigenvalue parameter.  Suppose the eigenvalue parameter was in the last entry of the q vector, and the N-1 entries represnted the solution.  Is there a way to mask this sub-vector so it can be manipulated with a da?<br><br>-gideon<br><br></span><blockquote type="cite">On Jul 7, 2015, at 10:38 AM, Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> wrote:<span class=""><br><br>On Tue, Jul 7, 2015 at 2:06 AM, Jose E. Roman <<a href="mailto:jroman@dsic.upv.es" target="_blank">jroman@dsic.upv.es</a>> wrote:<br><br>El 07/07/2015, a las 03:34, Matthew Knepley escribió:<br><br></span><div><div class="h5"><blockquote type="cite">On Mon, Jul 6, 2015 at 7:43 PM, Gideon Simpson <<a href="mailto:gideon.simpson@gmail.com" target="_blank">gideon.simpson@gmail.com</a>> wrote:<br>I have a nonlinear eigenvalue problem for a system of equations, of the form,<br><br>-Delta u + f(u) = E * u,<br><br>where E is my nonlinear eigenvalue parameter, and u and f are vector valued.<br><br>I thus have the following two things to contend with:<br><br>1.  E is a scalar which needs to be distributed across all the processes when the right hand side is formed<br><br>2.  I would like to be able to use a da to manage the spatial and multicomponent nature of u<br><br>Obviously the Vec that my nonlinear solver is going to search for has to store both bits of data.  Is there a clever petsc way to handle this, or will I need to do all the indexing and broadcasting by hand?<br><br><blockquote type="cite">My first suggestion would be to investigate SLEPc, which does have some support for nonlinear<br>eigenvalue problems. Failing that, E normally comes out of the algorithm as the result of some<br>vector algebra which automatically distributes the constant (like VecDot).<br></blockquote></blockquote><br>Nonlinear eigenvalue problems can be generally classified in two groups: those that depend nonlinearly on the eigenvalue parameter T(lambda)*x=0, and those that are nonlinear with respect to the eigenvector H(X)*X=X*Lambda. It seems that Gideon's problem belongs to the seocond type.<br><br>Currently, SLEPc provides solvers for the first type only. We do not foresee to have solvers for the latter type anytime soon.<br><br>I guess what Gideon needs to do is compute E from an initial guess of u, then use SNES to update u, and iterate until a self-consistent state is reached.<br><br>Thanks for the clarification, Jose. I think what you could do is to use SLEPc as the subsolver for each<br>eigenproblem with frozen coefficients (so this would be a type of 'Picard' method according to Jed or<br>an Inexact Newton Method according to me) and then update using SNES, exactly as Jose says above.<br>Even if you do not know the actual Jacobian, you can do the obvious thing in your FormJacobian, which<br>is to just reassemble the matrix with the latest 'u' and you will get linear convergence if its contractive. This<br>also allows you to try out the nice line searches.<br><br>  Thanks,<br><br>     Matt<br><br>Jose<br><br><br><blockquote type="cite"><blockquote type="cite"><br>  Thanks,<br><br>     Matt<br><br></blockquote>-gideon<br><br><br><br><br>--<br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener<br></blockquote><br><br><br><br>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener<br></div></div></blockquote><br></blockquote><br></div></blockquote></div><br></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>