Belos is a powerful, extensible and interoperable C++ framework for the numerical solution of large-scale linear systems of equations. The motivation for this framework is to provide a generic interface to a collection of algorithms for solving large-scale linear problems. Belos' 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 Belos 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 Belos.
The Belos linear solver framework describes solver managers that provide efficient, convenient, and powerful computational methods for solving large-scale linear systems of equations. Belos' power is a result of the distribution of functionality across different computational entities in the framework: orthogonalization, iterations, stopping criteria, restarting methodologies, etc. Belos' extensibility comes via the abstract interfaces describing these entities. Belos 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.
Belos provides a framework capable of solving a wide variety of linear systems of equations. Belos can currently solve complex and real, Hermitian and non-Hermitian, linear problems, via the following included methods:
The following people have contributed to the development of Belos:
You can browse all of Belos as a single doxygen collection. Warning, this is not the recommended way to learn about Belos software. However, this is a good way to browse the directory structure of belos, to locate files, etc.
The Belos to Thyra Linear Solver Adapters take
Thyra::LinearOpBase objects and turn them into
Thyra::LinearOpWithSolveBase objects which can then be used to solve linear systems using Belos linear solvers implementations.