Amesos2 - Direct Sparse Solver Interfaces Version of the Day
Classes | Files
Amesos2 Solver Framework
Amesos2 Solvers
Collaboration diagram for Amesos2 Solver Framework:


class  Amesos2::Solver< Matrix, Vector >
 Interface to Amesos2 solver objects. More...
class  Amesos2::SolverCore< ConcreteSolver, Matrix, Vector >
 Amesos2::SolverCore: A templated interface for interaction with third-party direct sparse solvers. More...


file  Amesos2_Factory.hpp

Contains declarations for Amesos2::create and Amesos2::query.

Detailed Description

The Amesos2 Solver Framework provides an infrastructure that concrete solver interfaces depend upon. At the same time this framework provides a sort of fill-in-the-blank framework for solving a system of linear equations that depends upon the solver-interfaces to fill in those blanks.

Its purpose is to abstract all the solver-independent features in order to reduce the burden on those developing new solver interfaces. In doing this it reduces the amount of maintained code and focuses a developers concerns. A developer writing a new solver interface does not have to be bothered to recreate infrastructure but can instead rely on the framework provided by Amesos2.

We could describe the framework in terms of the "Chain of Responsibility" pattern. When a user requests for a solve to be done, the SolveCore class takes care of any work that would need to be done by any solver (such as starting some timers, checking for exceptions, updating internal state, etc.) and then passes of responsibility to the concrete solver interfaces, who in turn delegate the algorithmic work to our third-party libraries.

In a way, the Amesos2 adapters could be viewed as part of the solver framework, but they are interesting enough in their own right to be listed as a separate module.