MueLu  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MueLu::Details::LinearSolverFactory< MV, OP, NormType > Class Template Reference

Interface for a "factory" that creates MueLu solvers. More...

#include <MueLu_Details_LinearSolverFactory_decl.hpp>

Inheritance diagram for MueLu::Details::LinearSolverFactory< MV, OP, NormType >:
Trilinos::Details::LinearSolverFactory< MV, OP, NormType >

Public Member Functions

virtual Teuchos::RCP
< Trilinos::Details::LinearSolver
< MV, OP, NormType > > 
getLinearSolver (const std::string &solverName)
 Get an instance of a MueLu solver. More...
 

Static Public Member Functions

static void registerLinearSolverFactory ()
 Register this LinearSolverFactory with the central registry. More...
 

Detailed Description

template<class MV, class OP, class NormType>
class MueLu::Details::LinearSolverFactory< MV, OP, NormType >

Interface for a "factory" that creates MueLu solvers.

Template Parameters
MVType of a (multi)vector, representing either the solution(s) X or the right-hand side(s) B of a linear system AX=B. For example, with Tpetra, use a Tpetra::MultiVector specialization. A multivector is a single data structure containing zero or more vectors with the same dimensions and layout.
OPType of a matrix or linear operator that this Solver understands. For example, for Tpetra, use a Tpetra::Operator specialization. Always use the most abstract interface possible; solvers should dynamic_cast to the subclass they need. Also, be consistent: using different classes here (e.g., Tpetra::RowMatrix instead of Tpetra::Operator) means more expensive explicit template instantiation.
NormTypeType of the norm of a residual.

Definition at line 43 of file MueLu_Details_LinearSolverFactory_decl.hpp.

Member Function Documentation

template<class MV , class OP , class NormType >
Teuchos::RCP< Trilinos::Details::LinearSolver< MV, OP, NormType > > MueLu::Details::LinearSolverFactory< MV, OP, NormType >::getLinearSolver ( const std::string &  solverName)
virtual

Get an instance of a MueLu solver.

The solver is wrapped in a Trilinos::Details::LinearSolver interface.

Parameters
solverName[in] The solver's name. Names are case sensitive
Returns
A pointer to the solver, if the name was valid; else, a null pointer (Teuchos::null).

Implements Trilinos::Details::LinearSolverFactory< MV, OP, NormType >.

Definition at line 354 of file MueLu_Details_LinearSolverFactory_def.hpp.

template<class MV , class OP , class NormType >
void MueLu::Details::LinearSolverFactory< MV, OP, NormType >::registerLinearSolverFactory ( )
static

Register this LinearSolverFactory with the central registry.

Register this LinearSolverFactory with the central registry, for the given SC, LO, GO, NT template parameters. This will let any clients of Trilinos::Details::getLinearSolver create MueLu solvers with those template parameters.

You may call this function multiple times; it will only have an effect the first time (it is idempotent).

Users do not normally have to call this function. MueLu automatically registers its LinearSolverFactory with the central repository, for all enabled template parameter combinations.

Definition at line 361 of file MueLu_Details_LinearSolverFactory_def.hpp.


The documentation for this class was generated from the following files: