Xpetra
Version of the Day
|
#include <Xpetra_Operator.hpp>
Public Member Functions | |
virtual | ~Operator () |
virtual void | removeEmptyProcessesInPlace (const RCP< const map_type > &) |
virtual void | residual (const mv_type &X, const mv_type &B, mv_type &R) const =0 |
Compute a residual R = B - (*this) * X. More... | |
Private Types | |
typedef Xpetra::Map < LocalOrdinal, GlobalOrdinal, Node > | map_type |
typedef Xpetra::MultiVector < Scalar, LocalOrdinal, GlobalOrdinal, Node > | mv_type |
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 const Teuchos::RCP < const map_type > | getDomainMap () const =0 |
The Map associated with the domain of this operator, which must be compatible with X.getMap(). More... | |
virtual const Teuchos::RCP < const map_type > | getRangeMap () const =0 |
The Map associated with the range of this operator, which must be compatible with Y.getMap(). More... | |
virtual void | apply (const mv_type &X, mv_type &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 28 of file Xpetra_Operator.hpp.
|
private |
Definition at line 29 of file Xpetra_Operator.hpp.
|
private |
Definition at line 30 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 38 of file Xpetra_Operator.hpp.
typedef LocalOrdinal Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_ordinal_type |
The local index type.
Definition at line 41 of file Xpetra_Operator.hpp.
typedef GlobalOrdinal Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::global_ordinal_type |
The global index type.
Definition at line 44 of file Xpetra_Operator.hpp.
typedef Node Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::node_type |
The Kokkos Node type.
Definition at line 47 of file Xpetra_Operator.hpp.
|
inlinevirtual |
Definition at line 33 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::EpetraCrsMatrixT< long long, EpetraNode >, Xpetra::TpetraBlockCrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::TpetraCrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::EpetraCrsMatrixT< int, EpetraNode >, Xpetra::TpetraBlockCrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::TpetraCrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::BlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrixWrap< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraBlockCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrix< double, int, int, EpetraNode >, Xpetra::CrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::CrsMatrix< double, int, EpetraGlobalOrdinal, Node >, Xpetra::CrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::CrsMatrix< double, int, long long, EpetraNode >, Xpetra::TpetraOperator< double, int, long long, EpetraNode >, Xpetra::TpetraRowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::EpetraCrsMatrixT< EpetraGlobalOrdinal, Node >, Xpetra::EpetraInverseOperator< EpetraGlobalOrdinal, Node >, Xpetra::TpetraOperator< double, int, int, EpetraNode >, Xpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraHalfPrecisionOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >, 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::EpetraCrsMatrixT< long long, EpetraNode >, Xpetra::TpetraBlockCrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::TpetraCrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::EpetraCrsMatrixT< int, EpetraNode >, Xpetra::TpetraBlockCrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::TpetraCrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::BlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrixWrap< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraBlockCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrix< double, int, int, EpetraNode >, Xpetra::CrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::CrsMatrix< double, int, EpetraGlobalOrdinal, Node >, Xpetra::CrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::CrsMatrix< double, int, long long, EpetraNode >, Xpetra::TpetraOperator< double, int, long long, EpetraNode >, Xpetra::TpetraRowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::EpetraCrsMatrixT< EpetraGlobalOrdinal, Node >, Xpetra::EpetraInverseOperator< EpetraGlobalOrdinal, Node >, Xpetra::TpetraOperator< double, int, int, EpetraNode >, Xpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraHalfPrecisionOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >, 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::TpetraCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraBlockCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraRowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::EpetraInverseOperator< EpetraGlobalOrdinal, Node >, Xpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::ReorderedBlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraHalfPrecisionOperator< 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::EpetraInverseOperator< EpetraGlobalOrdinal, Node >, Xpetra::TpetraOperator< double, int, int, EpetraNode >, Xpetra::TpetraHalfPrecisionOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::EpetraOperator< EpetraGlobalOrdinal, Node >, and Xpetra::TpetraOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 77 of file Xpetra_Operator.hpp.
|
inlinevirtual |
Reimplemented in Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 81 of file Xpetra_Operator.hpp.
|
pure virtual |
Compute a residual R = B - (*this) * X.
Implemented in Xpetra::BlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrixWrap< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraBlockCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::EpetraInverseOperator< EpetraGlobalOrdinal, Node >, Xpetra::EpetraOperator< EpetraGlobalOrdinal, Node >, Xpetra::TpetraHalfPrecisionOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >, and Xpetra::TpetraOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.