43 #ifndef IFPACK2_DETAILS_ONELEVELFACTORY_DECL_HPP
44 #define IFPACK2_DETAILS_ONELEVELFACTORY_DECL_HPP
46 #include "Ifpack2_ConfigDefs.hpp"
48 #include "Tpetra_RowMatrix.hpp"
49 #include <type_traits>
122 template<
class MatrixType>
125 typedef typename MatrixType::scalar_type scalar_type;
126 typedef typename MatrixType::local_ordinal_type local_ordinal_type;
127 typedef typename MatrixType::global_ordinal_type global_ordinal_type;
128 typedef typename MatrixType::node_type node_type;
129 typedef ::Ifpack2::Preconditioner<scalar_type,
133 typedef ::Tpetra::RowMatrix<scalar_type,
136 node_type> row_matrix_type;
138 static_assert (std::is_same<MatrixType, row_matrix_type>::value,
139 "Ifpack2::Details::OneLevelFactory: MatrixType must be a "
140 "Tpetra::RowMatrix specialization.");
152 Teuchos::RCP<prec_type>
153 create (
const std::string& precType,
154 const Teuchos::RCP<const row_matrix_type>& matrix)
const;
160 #endif // IFPACK2_DETAILS_ONELEVELFACTORY_DECL_HPP