SVD is enormously expensive, needs to be done on a full dense matrix so 
completely impractical. You need the best tuned iterative method, Jose is the 
by far the most knowledgeable about that.

   Barry


> On Aug 16, 2020, at 7:46 PM, Nidish <n...@rice.edu> wrote:
> 
> Thank you for the suggestions.
> 
> I'm getting a zero pivot error for the LU in slepc while calculating the rest 
> of the modes. 
> 
> Would conducting an SVD for just the stiffness matrix and then using the 
> singular vectors as bases for the nullspace work? I haven't tried this out 
> just yet, but I'm wondering if you could provide me insights into whether 
> this will.
> 
> Thanks,
> Nidish
> 
> On 8/16/20 2:50 PM, Barry Smith wrote:
>> 
>>   If you know part of your null space explicitly (for example the rigid body 
>> modes) I would recommend you always use that information explicitly since it 
>> is extremely expensive numerically to obtain. Thus rather than numerically 
>> computing the entire null space compute the part orthogonal to the part you 
>> already know. Presumably SLEPc has tools to help do this, naively I would 
>> just orthogonalized against the know subspace during the computational 
>> process but there are probably better ways.
>> 
>>    Barry
>> 
>> 
>> 
>> 
>>> On Aug 16, 2020, at 11:26 AM, Nidish <n...@rice.edu <mailto:n...@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.
>>> 
>>> 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 <j...@jedbrown.org 
>>> <mailto:j...@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 <n...@rice.edu <mailto:n...@rice.edu>> writes:
>>> 
>>>  I just use the standard eigs function 
>>> (https://www.mathworks.com/help/matlab/ref/eigs.html 
>>> <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 <bsm...@petsc.dev 
>>> <mailto:bsm...@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 <n...@rice.edu <mailto:n...@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
>> 
> -- 
> Nidish

Reply via email to