[petsc-users] nonlinear eigenvalue problem with structured mesh

Barry Smith bsmith at mcs.anl.gov
Mon Jul 13 19:25:36 CDT 2015


  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.

  Barry


> On Jul 13, 2015, at 4:05 PM, Gideon Simpson <gideon.simpson at gmail.com> wrote:
> 
> 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?
> 
> -gideon
> 
>> On Jul 7, 2015, at 10:38 AM, Matthew Knepley <knepley at gmail.com> wrote:
>> 
>> On Tue, Jul 7, 2015 at 2:06 AM, Jose E. Roman <jroman at dsic.upv.es> wrote:
>> 
>> El 07/07/2015, a las 03:34, Matthew Knepley escribió:
>> 
>> > On Mon, Jul 6, 2015 at 7:43 PM, Gideon Simpson <gideon.simpson at gmail.com> wrote:
>> > I have a nonlinear eigenvalue problem for a system of equations, of the form,
>> >
>> > -Delta u + f(u) = E * u,
>> >
>> > where E is my nonlinear eigenvalue parameter, and u and f are vector valued.
>> >
>> > I thus have the following two things to contend with:
>> >
>> > 1.  E is a scalar which needs to be distributed across all the processes when the right hand side is formed
>> >
>> > 2.  I would like to be able to use a da to manage the spatial and multicomponent nature of u
>> >
>> > 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?
>> >
>> >> My first suggestion would be to investigate SLEPc, which does have some support for nonlinear
>> >> eigenvalue problems. Failing that, E normally comes out of the algorithm as the result of some
>> >> vector algebra which automatically distributes the constant (like VecDot).
>> 
>> 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.
>> 
>> Currently, SLEPc provides solvers for the first type only. We do not foresee to have solvers for the latter type anytime soon.
>> 
>> 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.
>> 
>> Thanks for the clarification, Jose. I think what you could do is to use SLEPc as the subsolver for each
>> eigenproblem with frozen coefficients (so this would be a type of 'Picard' method according to Jed or
>> an Inexact Newton Method according to me) and then update using SNES, exactly as Jose says above.
>> Even if you do not know the actual Jacobian, you can do the obvious thing in your FormJacobian, which
>> is to just reassemble the matrix with the latest 'u' and you will get linear convergence if its contractive. This
>> also allows you to try out the nice line searches.
>> 
>>   Thanks,
>> 
>>      Matt
>>  
>> Jose
>> 
>> 
>> >>
>> >>   Thanks,
>> >>
>> >>      Matt
>> >>
>> > -gideon
>> >
>> >
>> >
>> >
>> > --
>> > What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
>> > -- Norbert Wiener
>> 
>> 
>> 
>> 
>> -- 
>> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
>> -- Norbert Wiener
> 



More information about the petsc-users mailing list