45#include <Tpetra_RowMatrix.hpp>
49 template <class Scalar = Tpetra::Operator<>::scalar_type,
50 class LocalOrdinal =
typename Tpetra::Operator<Scalar>::local_ordinal_type,
51 class GlobalOrdinal =
typename Tpetra::Operator<Scalar, LocalOrdinal>::global_ordinal_type,
52 class Node =
typename Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
56 using op_type = Tpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>;
57 using vec_type = Tpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>;
60 using row_matrix_type = Tpetra::RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>;
63 using mag_type =
typename Kokkos::ArithTraits<impl_scalar_type>::mag_type;
66 typename row_matrix_type::local_inds_device_view_type;
68 typename row_matrix_type::local_inds_host_view_type;
70 typename row_matrix_type::nonconst_local_inds_host_view_type;
73 typename row_matrix_type::global_inds_device_view_type;
75 typename row_matrix_type::global_inds_host_view_type;
77 typename row_matrix_type::nonconst_global_inds_host_view_type;
80 typename row_matrix_type::values_device_view_type;
82 typename row_matrix_type::values_host_view_type;
84 typename row_matrix_type::nonconst_values_host_view_type;
97 const RCP<vec_type>& diag)
104 Teuchos::RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
getDomainMap()
const {
105 return op_->getDomainMap();
109 Teuchos::RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
getRangeMap()
const {
110 return op_->getRangeMap();
118 void apply(
const Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>& X,
119 Tpetra::MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>& Y,
120 Teuchos::ETransp mode = Teuchos::NO_TRANS,
121 Scalar alpha = Teuchos::ScalarTraits<Scalar>::one(),
122 Scalar beta = Teuchos::ScalarTraits<Scalar>::zero())
const {
123 op_->apply(X, Y, mode, alpha, beta);
127 Teuchos::RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
getRowMap()
const {
128 return op_->getRangeMap();
131 Teuchos::RCP<const Tpetra::Map<LocalOrdinal,GlobalOrdinal,Node> >
getColMap()
const {
135 Teuchos::RCP<const Teuchos::Comm<int> >
getComm()
const {
136 return op_->getDomainMap()->getComm();
139 Teuchos::RCP<const Tpetra::RowGraph<LocalOrdinal,GlobalOrdinal,Node> >
getGraph()
const {
144 return getRowMap()->getGlobalNumElements();
152 return getRowMap()->getLocalNumElements();
211 size_t& NumEntries)
const {
219 size_t& NumEntries)
const {
237 void getLocalDiagCopy (Tpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node> &diag)
const {
244 void leftScale (
const Tpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& x) {
248 void rightScale (
const Tpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& x) {
MueLu::DefaultLocalOrdinal LocalOrdinal
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal
Exception throws to report errors in the internal logical of the program.
Teuchos::RCP< const Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node > > getGraph() const
typename row_matrix_type::local_inds_device_view_type local_inds_device_view_type
typename row_matrix_type::values_device_view_type values_device_view_type
void getGlobalRowCopy(GlobalOrdinal GlobalRow, nonconst_global_inds_host_view_type &Indices, nonconst_values_host_view_type &Values, size_t &NumEntries) const
typename row_matrix_type::values_host_view_type values_host_view_type
void getLocalRowView(LocalOrdinal LocalRow, local_inds_host_view_type &indices, values_host_view_type &values) const
typename row_matrix_type::global_inds_host_view_type global_inds_host_view_type
Teuchos::RCP< const Teuchos::Comm< int > > getComm() const
Tpetra::global_size_t getGlobalNumEntries() const
typename row_matrix_type::nonconst_values_host_view_type nonconst_values_host_view_type
void apply(const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const
Returns in Y the result of a Tpetra::Operator applied to a Tpetra::MultiVector X.
size_t getGlobalMaxNumRowEntries() const
Teuchos::RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getRowMap() const
size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const
Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > vec_type
bool isFillComplete() const
void rightScale(const Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &x)
size_t getLocalMaxNumRowEntries() const
typename row_matrix_type::nonconst_global_inds_host_view_type nonconst_global_inds_host_view_type
Tpetra::global_size_t getGlobalNumRows() const
size_t getLocalNumCols() const
typename row_matrix_type::impl_scalar_type impl_scalar_type
typename row_matrix_type::nonconst_local_inds_host_view_type nonconst_local_inds_host_view_type
GlobalOrdinal getIndexBase() const
Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > op_type
bool isLocallyIndexed() const
Teuchos::RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap() const
Returns the Tpetra::Map object associated with the range of this operator.
Tpetra::global_size_t getGlobalNumCols() const
typename Kokkos::ArithTraits< impl_scalar_type >::mag_type mag_type
Teuchos::RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap() const
Returns the Tpetra::Map object associated with the domain of this operator.
size_t getLocalNumEntries() const
void getLocalRowCopy(LocalOrdinal LocalRow, nonconst_local_inds_host_view_type &Indices, nonconst_values_host_view_type &Values, size_t &NumEntries) const
mag_type getFrobeniusNorm() const
typename row_matrix_type::local_inds_host_view_type local_inds_host_view_type
Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > row_matrix_type
The RowMatrix representing the base class of CrsMatrix.
bool supportsRowViews() const
bool isGloballyIndexed() const
Teuchos::RCP< const Tpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getColMap() const
size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const
TpetraOperatorAsRowMatrix(const RCP< op_type > &op, const RCP< vec_type > &diag)
void getGlobalRowView(GlobalOrdinal GlobalRow, global_inds_host_view_type &indices, values_host_view_type &values) const
typename row_matrix_type::global_inds_device_view_type global_inds_device_view_type
TpetraOperatorAsRowMatrix(const RCP< op_type > &op)
Constructor.
void leftScale(const Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &x)
size_t getLocalNumRows() const
void getLocalDiagCopy(Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &diag) const
Namespace for MueLu classes and methods.