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

Reply via email to