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

Giacomo Mulas gmulas at oa-cagliari.inaf.it
Tue Jul 17 12:56:40 CDT 2012

Hello Jose.

Some months ago, I wrote to the petsc-users mailing list asking if it would
be possible to use an iterative solver in slepc which converges eigenvectors
in order of maximum projection on a given basis vector.  Back then you told
me you might look into it in some time and let me know.  Since some time
passed, and you might quite understandably not remember about this, I am
quoting that email exchange below.

In the meanwhile, I found that there the Davidson algorithm and its 
derivatives (e.g. block Davidson) appears to behave as I would like, or 
close to it.
You probably know them, but I send you a couple of references in any case:

E. Davidson, J. Comput. Phys. 17, 87 ͑1975͒.

E. Davidson, Comput. Phys. Commun. 53, 49 ͑1989͒.

F. Ribeiro, C. Iung, and C. Leforestier, Chem. Phys. Lett. 362, 199

F. Ribeiro, C. Iung, and C. Leforestier, J. Theor. Comput. Chem. 2, 609

Any hope of implementing something like that (or some other algorithm to
obtain the same behaviour) in Slepc/Petsc any time soon?

Thanks in advance, bye
Giacomo Mulas

On Wed, 16 May 2012, Jose E. Roman wrote:

> 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


Giacomo Mulas <gmulas at oa-cagliari.inaf.it>

Str. 54, Loc. Poggio dei Pini * 09012 Capoterra (CA)

Tel. (OAC): +39 070 71180 248     Fax : +39 070 71180 222
Tel. (UNICA): +39 070 675 4916

"When the storms are raging around you, stay right where you are"
                          (Freddy Mercury)

More information about the petsc-users mailing list