Xpetra
Version of the Day
|
#include <Xpetra_Operator.hpp>
Public Member Functions | |
virtual | ~Operator () |
virtual void | removeEmptyProcessesInPlace (const RCP< const Map > &) |
virtual void | residual (const MultiVector &X, const MultiVector &B, MultiVector &R) const =0 |
Compute a residual R = B - (*this) * X. More... | |
Private Types | |
typedef Xpetra::Map < LocalOrdinal, GlobalOrdinal, Node > | Map |
typedef Xpetra::MultiVector < Scalar, LocalOrdinal, GlobalOrdinal, Node > | MultiVector |
Typedefs that give access to the template parameters. | |
typedef Scalar | scalar_type |
The type of the entries of the input and output multivectors. More... | |
typedef LocalOrdinal | local_ordinal_type |
The local index type. More... | |
typedef GlobalOrdinal | global_ordinal_type |
The global index type. More... | |
typedef Node | node_type |
The Kokkos Node type. More... | |
Pure virtual functions to be overridden by subclasses. | |
virtual Teuchos::RCP< const Map > | getDomainMap () const =0 |
The Map associated with the domain of this operator, which must be compatible with X.getMap(). More... | |
virtual Teuchos::RCP< const Map > | getRangeMap () const =0 |
The Map associated with the range of this operator, which must be compatible with Y.getMap(). More... | |
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. More... | |
virtual bool | hasTransposeApply () const |
Whether this operator supports applying the transpose or conjugate transpose. More... | |
Definition at line 64 of file Xpetra_Operator.hpp.
|
private |
Definition at line 65 of file Xpetra_Operator.hpp.
|
private |
Definition at line 66 of file Xpetra_Operator.hpp.
typedef Scalar Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::scalar_type |
The type of the entries of the input and output multivectors.
Definition at line 73 of file Xpetra_Operator.hpp.
typedef LocalOrdinal Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_ordinal_type |
The local index type.
Definition at line 76 of file Xpetra_Operator.hpp.
typedef GlobalOrdinal Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::global_ordinal_type |
The global index type.
Definition at line 79 of file Xpetra_Operator.hpp.
typedef Node Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::node_type |
The Kokkos Node type.
Definition at line 82 of file Xpetra_Operator.hpp.
|
inlinevirtual |
Definition at line 68 of file Xpetra_Operator.hpp.
|
pure virtual |
The Map associated with the domain of this operator, which must be compatible with X.getMap().
Implemented in Xpetra::BlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrixWrap< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraOperator< double, int, long long, EpetraNode >, Xpetra::TpetraOperator< double, int, int, EpetraNode >, Xpetra::EpetraOperator< EpetraGlobalOrdinal, Node >, and Xpetra::TpetraOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.
|
pure virtual |
The Map associated with the range of this operator, which must be compatible with Y.getMap().
Implemented in Xpetra::BlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrixWrap< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraOperator< double, int, long long, EpetraNode >, Xpetra::TpetraOperator< double, int, int, EpetraNode >, Xpetra::EpetraOperator< EpetraGlobalOrdinal, Node >, and Xpetra::TpetraOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.
|
pure virtual |
Computes the operator-multivector application.
Loosely, performs \(Y = \alpha \cdot A^{\textrm{mode}} \cdot X + \beta \cdot Y\). However, the details of operation vary according to the values of alpha
and beta
. Specifically
beta == 0
, apply() must overwrite Y
, so that any values in Y
(including NaNs) are ignored.alpha == 0
, apply() may short-circuit the operator, so that any values in X
(including NaNs) are ignored. Implemented in Xpetra::BlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrixWrap< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::ReorderedBlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::EpetraOperator< EpetraGlobalOrdinal, Node >, and Xpetra::TpetraOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.
|
inlinevirtual |
Whether this operator supports applying the transpose or conjugate transpose.
By default, this returns false. Subclasses must override this method if they can support apply() with mode=Teuchos::TRANS
or mode=Teuchos::CONJ_TRANS
.
Reimplemented in Xpetra::TpetraOperator< double, int, long long, EpetraNode >, Xpetra::TpetraOperator< double, int, int, EpetraNode >, Xpetra::EpetraOperator< EpetraGlobalOrdinal, Node >, and Xpetra::TpetraOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 112 of file Xpetra_Operator.hpp.
|
inlinevirtual |
Definition at line 116 of file Xpetra_Operator.hpp.
|
pure virtual |
Compute a residual R = B - (*this) * X.
Implemented in Xpetra::BlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::EpetraOperator< EpetraGlobalOrdinal, Node >, and Xpetra::TpetraOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.