> El 17 ago 2020, a las 14:27, Barry Smith <bsm...@petsc.dev> escribió:
> 
> 
>  Nidish,
> 
>     Your matrix is dense, correct? MUMPS is for sparse matrices.
> 
>     Then I guess you could use Scalapack 
> http://netlib.org/scalapack/slug/node48.html#SECTION04323200000000000000 to 
> do the SVD. The work is order N^3 and parallel efficiency may not be great 
> but it might help you solve your problem.
> 
>      I don't know if SLEPc has an interface to Scalapack for SVD or not.

Yes, SLEPc (master) has interfaces for ScaLAPACK and Elemental for both SVD and 
(symmetric) eigenvalues.

Jose

> 
>    Barry
> 
> 
> 
> 
> 
> 
> 
>> On Aug 17, 2020, at 2:51 AM, Jose E. Roman <jro...@dsic.upv.es> wrote:
>> 
>> You can use SLEPc's SVD to compute the nullspace, but it has pitfalls: make 
>> sure you use an absolute convergence test (not relative); for the particular 
>> case of zero singular vectors, accuracy may not be very good and convergence 
>> may be slow (with the corresponding high computational cost).
>> 
>> MUMPS has functionality to get a basis of the nullspace, once you have 
>> computed the factorization. But I don't know if this is easily accessible 
>> via PETSc.
>> 
>> Jose
>> 
>> 
>> 
>>> El 17 ago 2020, a las 3:10, Nidish <n...@rice.edu> escribió:
>>> 
>>> Oh damn. Alright, I'll keep trying out the different options.
>>> 
>>> Thank you,
>>> Nidish
>>> 
>>> On 8/16/20 8:05 PM, Barry Smith wrote:
>>>> 
>>>> 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> 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> 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
>>>>>>>> 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 <
>>>>>>> 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
>>>>>>>> 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
>>>> 
>>> -- 
>>> Nidish
>> 
> 

Reply via email to