46 #ifndef XPETRA_OPERATOR_HPP
47 #define XPETRA_OPERATOR_HPP
51 #include <Teuchos_Describable.hpp>
55 #include "Xpetra_Map.hpp"
56 #include "Xpetra_MultiVector.hpp"
60 template<
class Scalar,
127 #define XPETRA_OPERATOR_SHORT
Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > Map
LocalOrdinal local_ordinal_type
The local index type.
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 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.
GlobalOrdinal global_ordinal_type
The global index type.
virtual void residual(const MultiVector &X, const MultiVector &B, MultiVector &R) const =0
Compute a residual R = B - (*this) * X.
virtual Teuchos::RCP< const Map > getDomainMap() const =0
The Map associated with the domain of this operator, which must be compatible with X....
virtual void removeEmptyProcessesInPlace(const RCP< const Map > &)
Node node_type
The Kokkos Node type.
Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > MultiVector
Scalar scalar_type
The type of the entries of the input and output multivectors.