Belos  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Functions
Belos::Details Namespace Reference

Classes

class  LinearSolver
 Belos' implementation of Trilinos::Details::LinearSolver. More...
 
class  LinearSolverFactory
 
class  RealSolverManager
 Base class for Belos::SolverManager subclasses which normally can only compile for real ScalarType. More...
 
class  RealSolverManager< ScalarType, MV, OP, false >
 
class  RealSolverManager< ScalarType, MV, OP, true >
 
class  LapackSupportsScalar
 Type traits class that says whether Teuchos::LAPACK has a valid implementation for the given ScalarType. More...
 
class  LapackSupportsScalar< float >
 
class  LapackSupportsScalar< double >
 
class  SolverManagerRequiresLapack
 Base class for Belos::SolverManager subclasses which normally can only compile with ScalarType types for which Teuchos::LAPACK has a valid implementation. More...
 
class  SolverManagerRequiresLapack< ScalarType, MV, OP, true >
 Specialization for ScalarType types for which Teuchos::LAPACK has a valid implementation. More...
 
class  SolverManagerRequiresLapack< ScalarType, MV, OP, false >
 Specialization for ScalarType types for which Teuchos::LAPACK does NOT have a valid implementation. More...
 
class  SolverManagerRequiresRealLapack
 Base class for Belos::SolverManager subclasses which normally can only compile with real ScalarType types for which Teuchos::LAPACK has a valid implementation. More...
 
class  SolverManagerRequiresRealLapack< ScalarType, MV, OP, true >
 Non-stub specialization for real ScalarType types for which Teuchos::LAPACK has a valid implementation. More...
 
class  SolverManagerRequiresRealLapack< ScalarType, MV, OP, false >
 Stub specialization for ScalarType types which are NOT real, or for which Teuchos::LAPACK does NOT have a valid implementation. More...
 

Functions

std::pair< std::string, bool > getCanonicalNameFromAlias (const std::string &candidateAlias)
 Get the candidate canonical name for a given candidate alias. More...
 
std::vector< std::string > solverNameAliases ()
 List of supported aliases (to canonical solver names). More...
 
std::vector< std::string > canonicalSolverNames ()
 List of canonical solver names. More...
 
int numSupportedSolvers ()
 Number of Belos solvers supported for any linear algebra implementation ("generically"). More...
 
void reviseParameterListForAlias (const std::string &aliasName, Teuchos::ParameterList &solverParams)
 Modify the input ParameterList appropriately for the given solver alias. More...
 
void registerLinearSolverFactory ()
 Register Belos' LinearSolverFactory with the central repository, for all enabled combinations of template parameters. More...
 
void registerSolverFactory ()
 

Function Documentation

std::pair< std::string, bool > Belos::Details::getCanonicalNameFromAlias ( const std::string &  candidateAlias)

Get the candidate canonical name for a given candidate alias.

Parameters
candidateAlias[in] Must be upper case.
Returns
The candidate canonical name, and whether the candidate canonical name was recognized as an alias. If it was NOT recognized as an alias, this function just returns its input.

The keys of this map do not necessarily include canonical solver names. If a candidate name isn't a key in this map, then it must be a canonical name in order to be valid. There doesn't need to be an alias for each solver.

Note
To Belos developers: If you want to add a new alias, first add the mapping from alias to canonical solver name in the SolverFactory constructor. Then, edit Details::reviseParameterListForAlias to do any modifications of the input ParameterList associated with that alias.

Definition at line 49 of file Belos_Details_EBelosSolverType.cpp.

std::vector< std::string > Belos::Details::solverNameAliases ( )

List of supported aliases (to canonical solver names).

This list does not include canonical names.

Definition at line 130 of file Belos_Details_EBelosSolverType.cpp.

std::vector< std::string > Belos::Details::canonicalSolverNames ( )

List of canonical solver names.

This list does not include aliases.

Definition at line 186 of file Belos_Details_EBelosSolverType.cpp.

int Belos::Details::numSupportedSolvers ( )

Number of Belos solvers supported for any linear algebra implementation ("generically").

This may differ from the number of supported solver names, since we may accept multiple names ("aliases") for some solvers.

Definition at line 208 of file Belos_Details_EBelosSolverType.cpp.

void Belos::Details::reviseParameterListForAlias ( const std::string &  aliasName,
Teuchos::ParameterList solverParams 
)

Modify the input ParameterList appropriately for the given solver alias.

Some aliases include modifications or special checking of the input ParameterList. All alias-related ParameterList revision happens in this method.

Definition at line 213 of file Belos_Details_EBelosSolverType.cpp.

void Belos::Details::registerLinearSolverFactory ( )

Register Belos' LinearSolverFactory with the central repository, for all enabled combinations of template parameters.

For all combinations of template parameters that Belos enables, register Belos::Details::LinearSolverFactory with the central repository. This will let any clients of Trilinos::Details::getLinearSolver create Belos 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, but see Bug

  1. Belos tries its best to register its LinearSolverFactory automatically with the central repository, for all enabled template parameter combinations. You may have to call this function if your C++ compiler does not support the necessary features for automatic registration to work, or if Trilinos was configured with automatic registration turned off (Trilinos_ENABLE_LINEAR_SOLVER_FACTORY_REGISTRATION was set to OFF). It never hurts to invoke this function manually, though, since it is idempotent.

If you need to register Belos's LinearSolverFactory for a set of template parameters that is not enabled, see Belos_Details_LinearSolverFactory.hpp (in this directory).

Warning
FIXME (mfh 23 Aug 2015) This currently only works if the compiler understands GCC's attribute((weak)) syntax. See the comments in Belos_Details_registerLinearSolverFactory.cpp in this directory. As a work-around, you may invoke Belos::Details::Tpetra::registerLinearSolverFactory() for the Tpetra specialization, or Belos::Details::Epetra::registerLinearSolverFactory() for the Epetra specialization. Either of these requires an extern declaration in your code.

Definition at line 80 of file Belos_Details_registerLinearSolverFactory.cpp.

void Belos::Details::registerSolverFactory ( )

Definition at line 76 of file Belos_Details_registerSolverFactory.cpp.


Generated on Fri Aug 14 2020 10:48:35 for Belos by doxygen 1.8.5