[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