<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">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?<div class=""><div class=""><br class=""><div apple-content-edited="true" class="">
<span class="Apple-style-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; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">-gideon</span>
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Jul 7, 2015, at 10:38 AM, Matthew Knepley <<a href="mailto:knepley@gmail.com" class="">knepley@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="gmail_extra"><div class="gmail_quote">On Tue, Jul 7, 2015 at 2:06 AM, Jose E. Roman<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:jroman@dsic.upv.es" target="_blank" class="">jroman@dsic.upv.es</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><br class="">El 07/07/2015, a las 03:34, Matthew Knepley escribió:<br class=""><br class="">> On Mon, Jul 6, 2015 at 7:43 PM, Gideon Simpson <<a href="mailto:gideon.simpson@gmail.com" class="">gideon.simpson@gmail.com</a>> wrote:<br class="">> I have a nonlinear eigenvalue problem for a system of equations, of the form,<br class="">><br class="">> -Delta u + f(u) = E * u,<br class="">><br class="">> where E is my nonlinear eigenvalue parameter, and u and f are vector valued.<br class="">><br class="">> I thus have the following two things to contend with:<br class="">><br class="">> 1. E is a scalar which needs to be distributed across all the processes when the right hand side is formed<br class="">><br class="">> 2. I would like to be able to use a da to manage the spatial and multicomponent nature of u<br class="">><br class="">> 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 class="">><br class="">>> My first suggestion would be to investigate SLEPc, which does have some support for nonlinear<br class="">>> eigenvalue problems. Failing that, E normally comes out of the algorithm as the result of some<br class="">>> vector algebra which automatically distributes the constant (like VecDot).<br class=""><br class="">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 class=""><br class="">Currently, SLEPc provides solvers for the first type only. We do not foresee to have solvers for the latter type anytime soon.<br class=""><br class="">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 class=""></blockquote><div class=""><br class=""></div><div class="">Thanks for the clarification, Jose. I think what you could do is to use SLEPc as the subsolver for each</div><div class="">eigenproblem with frozen coefficients (so this would be a type of 'Picard' method according to Jed or</div><div class="">an Inexact Newton Method according to me) and then update using SNES, exactly as Jose says above.</div><div class="">Even if you do not know the actual Jacobian, you can do the obvious thing in your FormJacobian, which</div><div class="">is to just reassemble the matrix with the latest 'u' and you will get linear convergence if its contractive. This</div><div class="">also allows you to try out the nice line searches.</div><div class=""><br class=""></div><div class=""> Thanks,</div><div class=""><br class=""></div><div class=""> Matt</div><div class=""> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;">Jose<br class=""><br class=""><br class="">>><br class="">>> Thanks,<br class="">>><br class="">>> Matt<br class="">>><br class="">> -gideon<br class="">><br class="">><br class="">><br class=""><span class="HOEnZb"><font color="#888888" class="">><br class="">> --<br class="">> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br class="">> -- Norbert Wiener<br class=""><br class=""></font></span></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>--<span class="Apple-converted-space"> </span><br class=""><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 class="">-- Norbert Wiener</div></div></div></div></blockquote></div><br class=""></div></div></body></html>