[petsc-users] Solving singular systems with petsc
Mark Adams
mfadams at lbl.gov
Sun Aug 16 13:49:25 CDT 2020
On Sun, Aug 16, 2020 at 12:26 PM Nidish <nb25 at rice.edu> wrote:
> Well some of the zero eigenvectors are rigid body modes, but there are
> some more which are introduced by lagrange-multiplier based constraint
> enforcement, which are non trivial.
>
If you want the null space for AMG solvers, they do not deal with the
constraints anyway, so you need an outer solver like Uzawa that uses a
solver for the PDE block of your system. And Uzawa requires that you
regularize this to remove the null space.
So the Rigid body modes are what you want to give to the AMG solver. (it
sounds like your system might be too complex for out of the box AMG anyway).
(If you don't know what your null space is I don't see how you would keep
the initial state and the RHS orthogonal to them.)
>
> My final application is for a nonlinear simulation, so I don't mind the
> extra computational effort initially. Could you have me the suggested
> solver configurations to get this type of eigenvectors in slepc?
>
> Nidish
> On Aug 16, 2020, at 00:17, Jed Brown <jed at jedbrown.org> wrote:
>>
>> It's possible to use this or a similar algorithm in SLEPc, but keep in mind that it's more expensive to compute these eigenvectors than to solve a linear system. Do you have a sequence of systems with the same null space?
>>
>> You referred to the null space as "rigid body modes". Why can't those be written down? Note that PETSc has convenience routines for computing rigid body modes from coordinates.
>>
>> Nidish <nb25 at rice.edu> writes:
>>
>> I just use the standard eigs function (https://www.mathworks.com/help/matlab/ref/eigs.html) as a black box. I think it uses a lanczos type method under the hood.
>>>
>>> Nidish
>>>
>>> On Aug 15, 2020, 21:42, at 21:42, Barry Smith <bsmith at petsc.dev> wrote:
>>>
>>>>
>>>> Exactly what algorithm are you using in Matlab to get the 10 smallest
>>>> eigenvalues and their corresponding eigenvectors?
>>>>
>>>> Barry
>>>>
>>>>
>>>> On Aug 15, 2020, at 8:53 PM, Nidish <nb25 at rice.edu> wrote:
>>>>>
>>>>> The section on solving singular systems in the manual starts with
>>>>>
>>>> assuming that the singular eigenvectors are already known.
>>>>
>>>>>
>>>>> I have a large system where finding the singular eigenvectors is not
>>>>>
>>>> trivially written down. How would you recommend I proceed with making
>>>> initial estimates? In MATLAB (with MUCH smaller matrices), I conduct an
>>>> eigensolve for the first 10 smallest eigenvalues and take the
>>>> eigenvectors corresponding to the zero eigenvalues from this. This
>>>> approach doesn't work here since I'm unable to use SLEPc for solving
>>>>
>>>>>
>>>>> K.v = lam*M.v
>>>>>
>>>>> for cases where K is positive semi-definite (contains a few "rigid
>>>>>
>>>> body modes") and M is strictly positive definite.
>>>>
>>>>>
>>>>> I'd appreciate any assistance you may provide with this.
>>>>>
>>>>> Thank you,
>>>>> Nidish
>>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200816/4751b019/attachment.html>
More information about the petsc-users
mailing list