90 typename MatrixType::local_ordinal_type,
91 typename MatrixType::global_ordinal_type,
92 typename MatrixType::node_type>,
94 typename MatrixType::local_ordinal_type,
95 typename MatrixType::global_ordinal_type,
96 typename MatrixType::node_type> >
120 typedef typename Teuchos::ScalarTraits<scalar_type>::magnitudeType
magnitude_type;
123 typedef Tpetra::RowMatrix<scalar_type, local_ordinal_type, global_ordinal_type, node_type>
row_matrix_type;
125 static_assert(std::is_same<MatrixType, row_matrix_type>::value,
126 "Ifpack2::Details::DenseSolver: Please use MatrixType = Tpetra::RowMatrix.");
128 typedef typename row_matrix_type::nonconst_global_inds_host_view_type nonconst_global_inds_host_view_type;
129 typedef typename row_matrix_type::nonconst_local_inds_host_view_type nonconst_local_inds_host_view_type;
130 typedef typename row_matrix_type::nonconst_values_host_view_type nonconst_values_host_view_type;
135 typedef Tpetra::Map<local_ordinal_type, global_ordinal_type, node_type>
map_type;
144 DenseSolver (
const Teuchos::RCP<const row_matrix_type>& matrix);
172 apply (
const Tpetra::MultiVector<scalar_type,local_ordinal_type,global_ordinal_type,node_type>& X,
173 Tpetra::MultiVector<scalar_type,local_ordinal_type,global_ordinal_type,node_type>& Y,
174 Teuchos::ETransp mode = Teuchos::NO_TRANS,
175 scalar_type alpha = Teuchos::ScalarTraits<scalar_type>::one(),
176 scalar_type beta = Teuchos::ScalarTraits<scalar_type>::zero())
const;
212 Teuchos::RCP<const row_matrix_type>
getMatrix ()
const;
215 void setMatrix (
const Teuchos::RCP<const row_matrix_type>& A);
240 std::string description ()
const;
244 describe (Teuchos::FancyOStream &out,
245 const Teuchos::EVerbosityLevel verbLevel =
246 Teuchos::Describable::verbLevel_default)
const;
252 describeLocal (Teuchos::FancyOStream& out,
253 const Teuchos::EVerbosityLevel verbLevel)
const;
266 extract (Teuchos::SerialDenseMatrix<int, scalar_type>& A_local_dense,
279 factor (Teuchos::SerialDenseMatrix<int, scalar_type>& A,
280 const Teuchos::ArrayView<int>& ipiv);
295 typedef Teuchos::ScalarTraits<scalar_type> STS;
306 applyImpl (
const MV& X,
308 const Teuchos::ETransp mode,
313 Teuchos::RCP<const row_matrix_type> A_;
316 Teuchos::RCP<const row_matrix_type> A_local_;
319 Teuchos::SerialDenseMatrix<int, scalar_type> A_local_dense_;
322 Teuchos::Array<int> ipiv_;
325 double initializeTime_;
331 mutable double applyTime_;
340 mutable int numApply_;
351template<
class MatrixType>
354 typename MatrixType::local_ordinal_type,
355 typename MatrixType::global_ordinal_type,
356 typename MatrixType::node_type>,
358 typename MatrixType::local_ordinal_type,
359 typename MatrixType::global_ordinal_type,
360 typename MatrixType::node_type> >
370 typedef MatrixType matrix_type;
373 typedef typename MatrixType::scalar_type scalar_type;
376 typedef typename MatrixType::local_ordinal_type local_ordinal_type;
379 typedef typename MatrixType::global_ordinal_type global_ordinal_type;
382 typedef typename MatrixType::node_type node_type;
385 typedef typename Teuchos::ScalarTraits<scalar_type>::magnitudeType
magnitude_type;
388 typedef Tpetra::RowMatrix<scalar_type, local_ordinal_type, global_ordinal_type, node_type> row_matrix_type;
391 typedef Tpetra::Map<local_ordinal_type, global_ordinal_type, node_type> map_type;
400 DenseSolver (
const Teuchos::RCP<const row_matrix_type>& matrix);
427 apply (
const Tpetra::MultiVector<scalar_type,local_ordinal_type,global_ordinal_type,node_type>& X,
428 Tpetra::MultiVector<scalar_type,local_ordinal_type,global_ordinal_type,node_type>& Y,
429 Teuchos::ETransp mode = Teuchos::NO_TRANS,
430 scalar_type alpha = Teuchos::ScalarTraits<scalar_type>::one(),
431 scalar_type beta = Teuchos::ScalarTraits<scalar_type>::zero())
const;
467 Teuchos::RCP<const row_matrix_type>
getMatrix ()
const;
470 void setMatrix (
const Teuchos::RCP<const row_matrix_type>& A);
495 std::string description ()
const;
499 describe (Teuchos::FancyOStream &out,
500 const Teuchos::EVerbosityLevel verbLevel =
501 Teuchos::Describable::verbLevel_default)
const;
505 typedef Tpetra::MultiVector<scalar_type, local_ordinal_type,
506 global_ordinal_type, node_type> MV;