[petsc-users] Solving tridiagonal hermitian generalized eigenvalue problem with SLEPC

Hong hzhang at mcs.anl.gov
Tue Aug 19 12:59:18 CDT 2014


Toon,
Please read SLEPc user manual and learn
1. what type of eigenvalue problems do you have.
We know you have Hermitian generalized eigen problems, you want
largest eigenvalues, but how many do you want, a few, or many? Do you
want eigenvectors as well?

2. what algorithms should be used for your problem? Iterative Lanczos
method and some direct methods provided by Lapack (sequential) or
Elemental (parallel).
Here, you can start experimenting these methods provided by slepc.

3. base on your matrix structure, i.e., tridiagonal blocked or banded,
you can use packages for dense matrices. Now start searching for
efficient solvers among those working ones obtained in step 2.

Hong

On Tue, Aug 19, 2014 at 10:38 AM, Jed Brown <jed at jedbrown.org> wrote:
> Toon Weyens <tweyens at fis.uc3m.es> writes:
>
>> Yes, you are probably right: My code is not yet bug free (by all means!).
>> However, I have been working very hard on it and I will see if I find
>> something. B should not ever be really singular!
>>
>> I do, however, still have some questions:
>>
>> - Does slepc detect whether my matrix is tridiagonal and does it apply a
>> direct method to solve it? Or do you talk about it in general: that it
>> would be better for me to use a direct method that is not part of slepc?
>
> The direct method is just a default.  For a tridiagonal matrix, there is
> no fill, so direct methods have great complexity.  For other problems
> (multi-dimensional, etc.) the direct solver has fill and becomes
> asymptotically suboptimal.
>
>> - How do I make use of the information that both A and B have the same
>> non-zero structure? Is there an easy way?
>
> I don't think it could make any difference for your scenario.
>
>> - What is the call "MatSetOption(mat,MAT_HERMITIAN,PETSC_TRUE,ierr)" do? Is
>> it important? It does not seem to influence anything...
>
> In some circumstances, it would cause a method to default to Lanczos
> instead of Arnoldi, or Cholesky instead of LU.


More information about the petsc-users mailing list