[petsc-users] Interior eigenvalues with slepc and shell matrix
Jose E. Roman
jroman at dsic.upv.es
Thu Aug 7 04:53:13 CDT 2014
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
More information about the petsc-users
mailing list