43 #ifndef IFPACK2_FACTORY_DECL_HPP 
   44 #define IFPACK2_FACTORY_DECL_HPP 
   46 #include "Ifpack2_ConfigDefs.hpp" 
   48 #include "Ifpack2_Details_Factory.hpp" 
   50 #include "Ifpack2_Chebyshev.hpp" 
   51 #include "Ifpack2_RILUK.hpp" 
   52 #include "Ifpack2_Experimental_RBILUK.hpp" 
   54 #include <type_traits> 
  126   template<
class MatrixType>
 
  129                               typename MatrixType::local_ordinal_type,
 
  130                               typename MatrixType::global_ordinal_type,
 
  131                               typename MatrixType::node_type> >
 
  136     using Teuchos::rcp_implicit_cast;
 
  137     typedef typename MatrixType::scalar_type SC;
 
  138     typedef typename MatrixType::local_ordinal_type LO;
 
  139     typedef typename MatrixType::global_ordinal_type GO;
 
  140     typedef typename MatrixType::node_type NT;
 
  141     typedef Tpetra::RowMatrix<SC, LO, GO, NT> row_matrix_type;
 
  143     RCP<const row_matrix_type> A;
 
  145       A = rcp_implicit_cast<
const row_matrix_type> (matrix);
 
  147     Ifpack2::Details::Factory<SC, LO, GO, NT> factory;
 
  148     return factory.create (precType, A);
 
  166   template<
class MatrixType>
 
  169                               typename MatrixType::local_ordinal_type,
 
  170                               typename MatrixType::global_ordinal_type,
 
  171                               typename MatrixType::node_type> >
 
  177     using Teuchos::rcp_implicit_cast;
 
  178     typedef typename MatrixType::scalar_type SC;
 
  179     typedef typename MatrixType::local_ordinal_type LO;
 
  180     typedef typename MatrixType::global_ordinal_type GO;
 
  181     typedef typename MatrixType::node_type NT;
 
  182     typedef Tpetra::RowMatrix<SC, LO, GO, NT> row_matrix_type;
 
  184     RCP<const row_matrix_type> A;
 
  186       A = rcp_implicit_cast<
const row_matrix_type> (matrix);
 
  188     Ifpack2::Details::Factory<SC, LO, GO, NT> factory;
 
  189     return factory.create (precType, A, overlap);
 
  192   template<
class MatrixType>
 
  195   isSupported (
const std::string& precType)
 
  197     typedef typename MatrixType::scalar_type SC;
 
  198     typedef typename MatrixType::local_ordinal_type LO;
 
  199     typedef typename MatrixType::global_ordinal_type GO;
 
  200     typedef typename MatrixType::node_type NT;
 
  202     Ifpack2::Details::Factory<SC, LO, GO, NT> factory;
 
  203     return factory.isSupported (precType);
 
  210 #endif // IFPACK2_FACTORY_DECL_HPP 
bool supportsUnsymmetric(const std::string &prec_type)
true if the specified preconditioner type supports nonsymmetric matrices, else false. 
Definition: Ifpack2_Factory.cpp:56
 
Interface for all Ifpack2 preconditioners. 
Definition: Ifpack2_Preconditioner.hpp:107
 
static Teuchos::RCP< Preconditioner< typename MatrixType::scalar_type, typename MatrixType::local_ordinal_type, typename MatrixType::global_ordinal_type, typename MatrixType::node_type > > create(const std::string &precType, const Teuchos::RCP< const MatrixType > &matrix)
Create an instance of Ifpack2_Preconditioner given the string name of the preconditioner type...
Definition: Ifpack2_Factory_decl.hpp:132
 
"Factory" for creating Ifpack2 preconditioners. 
Definition: Ifpack2_Factory_decl.hpp:114
 
static Teuchos::RCP< Preconditioner< typename MatrixType::scalar_type, typename MatrixType::local_ordinal_type, typename MatrixType::global_ordinal_type, typename MatrixType::node_type > > create(const std::string &precType, const Teuchos::RCP< const MatrixType > &matrix, const int overlap)
Create an instance of Ifpack2_Preconditioner given the string name of the preconditioner type...
Definition: Ifpack2_Factory_decl.hpp:172