# [petsc-users] Solving singular systems with petsc

Nidish nb25 at rice.edu
Sun Aug 16 11:26:17 CDT 2020

```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.

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, 00:17, 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/029b7db9/attachment.html>
```