On 07 Aug 2014, at 11:53, Jose E. Roman <[email protected]> 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
