Introduction

Anasazi is a powerful, extensible and interoperable C++ framework for the numerical solution of large-scale eigenvalue problems. The motivation for this framework is to provide a generic interface to a collection of algorithms for solving large-scale eigenvalue problems. Anasazi's interoperability results from its understanding of operators and vectors as opaque objects—these objects are accessed only via elementary operations. Hence the user has the flexibility to specify the data representation for operators and vectors and may so leverage any existing software investment. This mechanism is accomplished via the Anasazi Operator/Vector abstract interface. Current interfaces available include Thyra, Epetra and Tpetra. As a result, any existing code employing Thyra, Epetra or Tpetra operators and vectors (such as other packages in Trilinos) may also be used in conjunction with Anasazi.

The Anasazi eigensolver framework describes eigensolver and eigensolver managers that provide efficient, convenient and powerful computational methods. Anasazi's power is a result of the distribution of functionality across different computational entities in the framework: orthogonalization, sorting/selection, eigenvalue iterations, restarting methodologies, etc. Anasazi's extensibility comes via the abstract interfaces describing these entities. Anasazi currently provides a robust set of options, and users are able to expand this set to suit specific research and/or application needs. The ability to interact directly with these objects provides great flexibility in computation, while the existence of solver managers allow convenient programming for standard use cases.

Current Eigensolvers

Unlike ARPACK, which provides a single eigensolver, Anasazi provides a framework capable of describing a wide variety of eigenproblems and algorithms for solving them. Anasazi can currently solve complex and real, Hermitian and non-Hermitian, eigenvalue problems, via the following included methods:

Generalized Davidson method, a non-symmetric variant of the block Davidson solver described above. This solver is experimental, but is currently in active use. It currently only supports real-valued scalar types.