46 #ifndef XPETRA_OPERATOR_HPP
47 #define XPETRA_OPERATOR_HPP
51 #include <Teuchos_Describable.hpp>
60 template<class Scalar = MultiVector<>::scalar_type,
61 class LocalOrdinal =
typename MultiVector<Scalar>::local_ordinal_type,
62 class GlobalOrdinal =
typename MultiVector<Scalar, LocalOrdinal>::global_ordinal_type,
63 class Node =
typename MultiVector<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
121 #define XPETRA_OPERATOR_SHORT
122 #endif // XPETRA_OPERATOR_HPP
virtual void apply(const MultiVector &X, MultiVector &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const =0
Computes the operator-multivector application.
Scalar scalar_type
The type of the entries of the input and output multivectors.
Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > MultiVector
Node node_type
The Kokkos Node type.
GlobalOrdinal global_ordinal_type
The global index type.
LocalOrdinal local_ordinal_type
The local index type.
Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > Map
virtual void removeEmptyProcessesInPlace(const RCP< const Map > &)
virtual Teuchos::RCP< const Map > getRangeMap() const =0
The Map associated with the range of this operator, which must be compatible with Y...
virtual bool hasTransposeApply() const
Whether this operator supports applying the transpose or conjugate transpose.
virtual Teuchos::RCP< const Map > getDomainMap() const =0
The Map associated with the domain of this operator, which must be compatible with X...