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

Reply via email to