Amesos2 - Direct Sparse Solver Interfaces Version of the Day
|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...|
Contains declarations for Amesos2::create and Amesos2::query.
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.