[petsc-users] Interior eigenvalues with slepc and shell matrix

John Travers jtravs at gmail.com
Thu Aug 7 05:48:40 CDT 2014


On 07 Aug 2014, at 11:53, Jose E. Roman <jroman at dsic.upv.es> wrote:

> 
> El 07/08/2014, a las 11:39, John Travers escribió:
> 
>> Hi all,
>> 
>> I'm trying to compute a large number of interior complex eigenvalues of a large non-Hermitian matrix. For small test problems I can use a dense matrix, and finding interior eigenvalues worked very well. However, for increasing problem sizes I cannot use this approach as my matrix is not very sparse (about 40% non zero). I need to solve problems with 64000x64000 elements. However my matrix can be very efficiently generated (it contains diagonals and two toeplitz sub matrices), so, by using MatCreateShell etc. I have created a shell matrix with very efficient matrix-vector multiply performance (using FFT for the toeplitz matrices). In this case I can solve for the largest eigenvalues of huge problems very efficiently. However, I now cannot solve for the interior eigenvalues (often closely spaced) well at all (using -eps_target).
>> 
>> Is there a well known solution to this? I have tried eps_harmonic etc. Note, I am not an expert in computational linalg, so I maybe being naive. Ideally I'd be able to collect all eigenvalues within a certain region, but the region based solvers (such as ciss) do not seem to be available when using a Shell Matrix, and neither is shift invert, which is what worked very well previously.
>> 
>> Does anyone have proposed solutions or pointers to where I can find more literature on this sort of problem.
>> 
>> Any help much appreciated!
>> John
>> 
> 
> You should be able to do inexact shift-and-invert with an iterative linear solver such as gmres or bcgs, although no guarantee it works well for your problem. See section 3.4.1 of the users manual.
> 
> An alternative is to use a preconditioned eigensolver such as GD or JD. Options for these solvers are described here: http://dx.doi.org/10.1145/2543696
> 
> Jose
> 

Hi Jose,

Thanks for your fast response. I’m reading through your paper now (though it is a little advanced for me). Some simple trials with the GD solver do not seem to work. Following your paper, I simply tried: -eps_type gd, but get:

0]PETSC ERROR: No support for this operation for this object type
[0]PETSC ERROR: gd only works with precond spectral transformation

Should I also set other options?

Thanks,
John


More information about the petsc-users mailing list