# Method with low memory requirement for large-scale eigenvalue problem

I am working on the flow stability problem. In this work the main complication is solving generalized eigenvalue problem for a large scale Non-Hermitian matrix. I need only one eigenvalue (most left on real axis), so I used shift-invert transformation. I used SLEPc library to solve this problem, especially Krylov-Shur method with MUMPS LU decomposition. It works fine for small problem (matrix size up to 500k). But real cases give me matrix size about 15M, so I just do not have such amount of memory to solve these cases with MUMPS. I tried to find an iterative method for my problem (method with small memory requirement), but they do not work for me. Generalized Davidson and Jacobi-Davidson are not converged. Also I tried iterative linear solver instead of direct MUMPS for Krylov-Shur method, but they also are not converged. I concentrated on one relatively small problem (about 70k matrix size) that solved fine using MUMPS and cannot find any iterative method to solve it.

Is it possible that iterative eigenvalue solver (or solver with small memory requirement) does not exist for my matrix? I will very appreciate if someone gives me an advice what I can do more to solve my problem.

• What preconditioners have you tried? Do you have a reasonable guess of your target eigenvalue for shift-and-invert? – Geoff Oxberry Sep 30 '14 at 9:17
• I tried almost all available in PETSc preconditioners. Can you propose a specific one? Yes, I have precise value of eigenvalue which I got from direct method. – Kirill Belyaev Sep 30 '14 at 10:19
• For large scale problems Arnoldi method is competitive. It is provided by Arpack. See Bagheri et al., "Matrix-Free Methods for the Stability and Control of Boundary Layers" – cpraveen Sep 30 '14 at 10:24
• @PraveenChandrashekar Krylov-Schur is already supposed to be an improvement over Arnoldi. – Federico Poloni Sep 30 '14 at 17:02
• @KirillBelyaev: If MUMPS has been working well as a direct solver, and you have enough memory, you might try using MUMPS as an ILU preconditioner with an iterative method. Experimenting with fill level will help in trading off between memory and preconditioner efficacy. When you say that you are solving the generalized eigenvalue problem $Ax = \lambda Bx$ and your matrix is non-Hermitian, which matrix are you referring to: $A$ or $B$? (Or both?) – Geoff Oxberry Oct 1 '14 at 22:21