91 typename MatrixType::local_ordinal_type,
92 typename MatrixType::global_ordinal_type,
93 typename MatrixType::node_type>,
95 typename MatrixType::local_ordinal_type,
96 typename MatrixType::global_ordinal_type,
97 typename MatrixType::node_type> >
121 typedef typename Teuchos::ScalarTraits<scalar_type>::magnitudeType
magnitude_type;
124 typedef Tpetra::RowMatrix<scalar_type, local_ordinal_type, global_ordinal_type, node_type>
row_matrix_type;
126 static_assert(std::is_same<MatrixType, row_matrix_type>::value,
"Ifpack2::Details::TriDiSolver: The template parameter MatrixType must be a Tpetra::RowMatrix specialization. Please don't use Tpetra::CrsMatrix (a subclass of Tpetra::RowMatrix) here anymore. The constructor can take either a RowMatrix or a CrsMatrix just fine.");
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;
133 typedef Tpetra::Map<local_ordinal_type, global_ordinal_type, node_type>
map_type;
142 TriDiSolver (
const Teuchos::RCP<const row_matrix_type>& matrix);
170 apply (
const Tpetra::MultiVector<scalar_type,local_ordinal_type,global_ordinal_type,node_type>& X,
171 Tpetra::MultiVector<scalar_type,local_ordinal_type,global_ordinal_type,node_type>& Y,
172 Teuchos::ETransp mode = Teuchos::NO_TRANS,
173 scalar_type alpha = Teuchos::ScalarTraits<scalar_type>::one(),
174 scalar_type beta = Teuchos::ScalarTraits<scalar_type>::zero())
const;
210 Teuchos::RCP<const row_matrix_type>
getMatrix ()
const;
213 void setMatrix (
const Teuchos::RCP<const row_matrix_type>& A);
238 std::string description ()
const;
242 describe (Teuchos::FancyOStream &out,
243 const Teuchos::EVerbosityLevel verbLevel =
244 Teuchos::Describable::verbLevel_default)
const;
250 describeLocal (Teuchos::FancyOStream& out,
251 const Teuchos::EVerbosityLevel verbLevel)
const;
264 extract (Teuchos::SerialTriDiMatrix<int, scalar_type>& A_local_tridi,
277 factor (Teuchos::SerialTriDiMatrix<int, scalar_type>& A,
278 const Teuchos::ArrayView<int>& ipiv);
293 typedef Teuchos::ScalarTraits<scalar_type> STS;
304 applyImpl (
const MV& X,
306 const Teuchos::ETransp mode,
311 Teuchos::RCP<const row_matrix_type> A_;
314 Teuchos::RCP<const row_matrix_type> A_local_;
317 Teuchos::SerialTriDiMatrix<int, scalar_type> A_local_tridi_;
320 Teuchos::Array<int> ipiv_;
323 double initializeTime_;
329 mutable double applyTime_;
338 mutable int numApply_;
349template<
class MatrixType>
352 typename MatrixType::local_ordinal_type,
353 typename MatrixType::global_ordinal_type,
354 typename MatrixType::node_type>,
356 typename MatrixType::local_ordinal_type,
357 typename MatrixType::global_ordinal_type,
358 typename MatrixType::node_type> >
367 typedef MatrixType matrix_type;
370 typedef typename MatrixType::scalar_type scalar_type;
373 typedef typename MatrixType::local_ordinal_type local_ordinal_type;
376 typedef typename MatrixType::global_ordinal_type global_ordinal_type;
379 typedef typename MatrixType::node_type node_type;
382 typedef typename Teuchos::ScalarTraits<scalar_type>::magnitudeType
magnitude_type;
385 typedef Tpetra::RowMatrix<scalar_type, local_ordinal_type, global_ordinal_type, node_type> row_matrix_type;
387 static_assert(std::is_same<MatrixType, row_matrix_type>::value,
"Ifpack2::Details::TriDiSolver: The template parameter MatrixType must be a Tpetra::RowMatrix specialization. Please don't use Tpetra::CrsMatrix (a subclass of Tpetra::RowMatrix) here anymore. The constructor can take either a RowMatrix or a CrsMatrix just fine.");
390 typedef Tpetra::Map<local_ordinal_type, global_ordinal_type, node_type> map_type;
399 TriDiSolver (
const Teuchos::RCP<const row_matrix_type>& matrix);
426 apply (
const Tpetra::MultiVector<scalar_type,local_ordinal_type,global_ordinal_type,node_type>& X,
427 Tpetra::MultiVector<scalar_type,local_ordinal_type,global_ordinal_type,node_type>& Y,
428 Teuchos::ETransp mode = Teuchos::NO_TRANS,
429 scalar_type alpha = Teuchos::ScalarTraits<scalar_type>::one(),
430 scalar_type beta = Teuchos::ScalarTraits<scalar_type>::zero())
const;
466 Teuchos::RCP<const row_matrix_type>
getMatrix ()
const;
469 void setMatrix (
const Teuchos::RCP<const row_matrix_type>& A);
494 std::string description ()
const;
498 describe (Teuchos::FancyOStream &out,
499 const Teuchos::EVerbosityLevel verbLevel =
500 Teuchos::Describable::verbLevel_default)
const;
503 describeLocal (Teuchos::FancyOStream& out,
504 const Teuchos::EVerbosityLevel verbLevel)
const;
509 typedef Tpetra::MultiVector<scalar_type, local_ordinal_type,
510 global_ordinal_type, node_type> MV;