[petsc-users] request suggestions for most appropriate eigenvalue solver

Jose E. Roman jroman at dsic.upv.es
Wed May 16 06:32:22 CDT 2012


El 16/05/2012, a las 13:12, Giacomo Mulas escribió:

> Hello. This is a slepc issue.
> 
> I have developed a code to compute anharmonic corrections to a harmonic
> vibrational analysis of a molecule, including an explicit treatment of
> accidental resonances.
> This results in setting up a number of eigenvalue problems "around" pure harmonic states, which are my basis set. These eigenvalue problems are
> sparse, and I only need a relatively small subset of the solutions. However,
> what is unusual is _which_ eigenpairs I want: I want the eigenpairs whose
> eigenvectors span a subspace which covers (within a predetermined accuracy)
> the few pure harmonic states I am interested in. That is, I want enough
> eigenpairs that the projection of my pure harmonic state on these
> eigenvectors is "close enough" to it.
> 
> So far, I am relying on spectral slicing to obtain the eigenpairs in a
> neighbourhood of the pure harmonic states I start from, increasing
> neighbourhood radius until I cover the starting state adequately. However,
> this results in a lot of waste: many eigenstates are accidentally close to
> my target harmonic states, with little or no projection on them. I end up
> computing 1-2 orders of magnitude more states than the needed ones (checked
> a posteriori).
> 
> The best, for my needs, would be to be able to specify, in slepc, that my
> target solutions are the ones with the highest projection on some vector
> (or, better, subspace spanned by some vectors), instead of using a selection
> criterion based on eigenvalues closest to a target or in an interval.  Is
> there some (not too complex) way to "convince" slepc to work like this?  I
> can think of providing my target vectors (one by one, or a linear
> combination) as a starting point to generate the Krylov subspace, but then
> how do I select eigenvectors to really be the ones I want?
> 
> Thanks in advance
> Giacomo

Currently there is no way to do this. But we have had a couple of similar requests before. We are now reorganizing parts of code within SLEPc, so I will think if it is viable to provide a solution for this. I will get back to you.

Jose



More information about the petsc-users mailing list