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
virtual Teuchos::RCP< const Map > getRangeMap() const =0
The Map associated with the range of this operator, which must be compatible with Y....
Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > Map
LocalOrdinal local_ordinal_type
The local index type.
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 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.
virtual Teuchos::RCP< const Map > getDomainMap() const =0
The Map associated with the domain of this operator, which must be compatible with X....