|
Teuchos - Trilinos Tools Package
Version of the Day
|
Declaration and definition of linear solver factory, and "factory of factories". More...
#include "Teuchos_RCP.hpp"#include "TeuchosRemainder_config.h"#include <map>#include <stdexcept>#include <sstream>#include <string>Go to the source code of this file.
Classes | |
| class | Trilinos::Details::LinearSolver< MV, OP, NormType > |
| Interface for a method for solving linear system(s) AX=B. More... | |
| class | Trilinos::Details::LinearSolverFactory< MV, OP, NormType > |
| Interface for a "factory" that creates solvers. More... | |
| class | Trilinos::Details::Impl::LinearSolverFactoryRepository< MV, OP, NormType > |
| Repository of solver factories. More... | |
Namespaces | |
| Trilinos | |
| Namespace of things generally useful to many Trilinos packages. | |
| Details | |
| Namespace of implementation details. | |
| Trilinos::Details::Impl | |
| Implementation details of implementation details. | |
Functions | |
| template<class MV , class OP , class NormType > | |
| Teuchos::RCP< LinearSolver< MV, OP, NormType > > | Trilinos::Details::getLinearSolver (const std::string &packageName, const std::string &solverName) |
| Get a LinearSolver instance. More... | |
| template<class MV , class OP , class NormType > | |
| void | Trilinos::Details::registerLinearSolverFactory (const std::string &packageName, const Teuchos::RCP< LinearSolverFactory< MV, OP, NormType > > &factory) |
| Called by a package to register its LinearSolverFactory. More... | |
| bool | Trilinos::Details::Impl::rememberRegisteredSomeLinearSolverFactory (const std::string &packageName) |
| Remember which packages registered at least one LinearSolverFactory, with any template parameters. More... | |
| bool | Trilinos::Details::Impl::registeredSomeLinearSolverFactory (const std::string &packageName) |
| Did the package with the given name register at least one LinearSolverFactory, with any template parameters? More... | |
| bool | Trilinos::Details::Impl::haveLinearSolverFactoryRunTimeRegistration () |
| Whether the CMake run-time registration option is ON. More... | |
Declaration and definition of linear solver factory, and "factory of factories".
Tpetra::Details::getLinearSolver, Tpetra::Details::registerLinearSolverFactory, and Tpetra::Details::LinearSolverFactory implement the Dependency Inversion and Injection (DII) pattern, as applied to "linear solvers." A linear solver solves or helps solve linear system(s) AX=B. Examples include sparse direct solvers, iterative solvers, and preconditioners for iterative solvers.
DII naturally admits hierarchical run-time options, as in e.g., Teuchos::ParameterList. This lets solvers create inner solvers in an arbitrarily nested way, following the arbitrary nesting of the Teuchos::ParameterList.
DII works well when a ParameterList can express all the data that a solver might need. However, some solvers need or may benefit from additional data. For example, algebraic multigrid can use mesh coordinates, and a sparse factorization can use an initial permutation. Such data do not fit naturally in a Teuchos::ParameterList.
Definition in file Trilinos_Details_LinearSolverFactory.hpp.
1.8.5