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"
126 template<
class MatrixType>
129 typename MatrixType::local_ordinal_type,
130 typename MatrixType::global_ordinal_type,
131 typename MatrixType::node_type> >
133 const Teuchos::RCP<const MatrixType>& matrix)
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;
144 if (! matrix.is_null ()) {
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> >
173 const Teuchos::RCP<const MatrixType>& matrix,
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;
185 if (! matrix.is_null ()) {
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);
"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)
Create an instance of Ifpack2_Preconditioner given the string name of the preconditioner type.
Definition Ifpack2_Factory_decl.hpp:132
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
Interface for all Ifpack2 preconditioners.
Definition Ifpack2_Preconditioner.hpp:108
Preconditioners and smoothers for Tpetra sparse matrices.
Definition Ifpack2_AdditiveSchwarz_decl.hpp:74
bool supportsUnsymmetric(const std::string &prec_type)
\C true if the specified preconditioner type supports nonsymmetric matrices, else false.
Definition Ifpack2_Factory.cpp:56