[Trilinos-Users] How does Anasazi internally treat preconditioners ?

Chris Baker cgbaker at gmail.com
Fri Feb 22 22:00:53 MST 2008


Anasazi provides three eigensolvers: block Krylov-Schur (BKS) is a Krylov
subspace solver, and LOBPCG and block Davidson are so-called preconditioned
eigenvalue iterations.

The BasicEigenproblem class allows for the provision of four operators:

   - *A, B* - these define the eigenproblem being targeted: A x = B x
   - *Op* - this defines the operator defining the Krylov subspace, used
   by BKS: typically Op = inv(A) B (when the smallest magnitude eigenvalue is
   sought) or Op = inv(B) A (when the largest magnitude eigenvalue is sought)
   - *Prec* - this defines an optional preconditioner for one of the
   preconditioned eigensolvers (LOBPCG or BD). The application of this operator
   should approximate inv(A). For one source of information on "preconditioned
   eigensolvers", see Knyazev's webpage:

The operation of BKS is as follows. If the operator Op is defined in the
eigenvalue problem, then this operator is used as a generator for the Krylov
subspaces. The operator stored in the BasicEigenproblem via
getPrec()/setPrec() is not used by BKS. In the case that this operator
involves the solution of a linear system, any preconditioner used by the
linear solver is likely passed at construction of whatever linear solver
object is being used. Such functionality (i.e., linear solvers and their
preconditioners) is independent of Anasazi. For an example of this mode of
operation (shift-invert usage of BKS with a preconditioned linear solver),
see the following example:

Note, Anasazi does not provide any linear solvers. Linear solvers present in
Trilinos include iterative linear solvers in AztecOO and Belos, as well as
direct factorization-based solvers in Amesos. All three of these are capable
of solving systems defined by Epetra matrices.

Best regards,

On Fri, Feb 22, 2008 at 10:45 PM, Davood Ansari <david.ansari at gmail.com>

> *Hi everyone
> The basic idea for krylov subspace eigen solvers is to find the largest
> eigen value(s) of a problem A x = lambda B x
> by  repeated application of the operation B^(-1) A on an initial
> vector (very roughly speaking).
> This means a multiplication by A and a linear solve by B is involved.
> When smallest eigenvalue(s) are sought, the two are interchanged (A and B)
> to solve B x = (1 / lambda) A x.
> In trilinos, when an eigen problem is being defined  through either the
> BasicEigenproblem or the Eigenproblem class, a preconditioner
> can be introduced. I guess this is going to be used for the linear
> solve???
> Based on this interpretation, when largest eigenvalues of **A x = lambda B
> x
> are sought, one should (for example) produce an incomplete factorization
> of A. On the other hand, for the case with the smallest eigenvalues, one
> should take the incomplete factorization of B as the preconditioner???
> Is that right ?
> Please comment
> Davood
> **
> *
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> http://software.sandia.gov/mailman/listinfo/trilinos-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://software.sandia.gov/mailman/private/trilinos-users/attachments/20080223/8dcfa048/attachment.html

More information about the Trilinos-Users mailing list