|
Tpetra parallel linear algebra
Version of the Day
|
A class for wrapping an Operator apply in a Operator. More...
#include <Tpetra_ApplyOp.hpp>

Public Types | |
| typedef OperatorType::scalar_type | scalar_type |
| The type of the entries of the input OperatorType. More... | |
| typedef OperatorType::local_ordinal_type | local_ordinal_type |
| The type of local indices in the input OperatorType. More... | |
| typedef OperatorType::global_ordinal_type | global_ordinal_type |
| The type of global indices in the input OperatorType. More... | |
| typedef OperatorType::node_type | node_type |
| The type of the Kokkos Node used by the input OperatorType. More... | |
Public Member Functions | |
Constructor and destructor | |
| ApplyOp (const Teuchos::RCP< const OperatorType > &op) | |
| Constructor. More... | |
| virtual | ~ApplyOp () |
| Destructor. More... | |
Pure virtual functions to be overridden by subclasses. | |
| virtual Teuchos::RCP< const Map< OperatorType::local_ordinal_type, OperatorType::global_ordinal_type, OperatorType::node_type > > | 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< OperatorType::local_ordinal_type, OperatorType::global_ordinal_type, OperatorType::node_type > > | getRangeMap () const=0 |
| The Map associated with the range of this operator, which must be compatible with Y.getMap(). More... | |
| virtual bool | hasTransposeApply () const |
| Whether this operator supports applying the transpose or conjugate transpose. More... | |
Methods implementing Operator | |
| Teuchos::RCP< const OperatorType > | operator_ |
| The underlying Operator object. More... | |
| void | apply (const Tpetra::MultiVector< Scalar, local_ordinal_type, global_ordinal_type, node_type > &X, Tpetra::MultiVector< Scalar, local_ordinal_type, global_ordinal_type, node_type > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const |
Compute Y = beta*Y + alpha*Op(A)*X, where Op(A) is either A, | |
| bool | hasTransposeApply () const |
| Whether this Operator's apply() method can apply the transpose or conjugate transpose. More... | |
| Teuchos::RCP< const Tpetra::Map< local_ordinal_type, global_ordinal_type, node_type > > | getDomainMap () const |
| The domain Map of this Operator. More... | |
| Teuchos::RCP< const Tpetra::Map< local_ordinal_type, global_ordinal_type, node_type > > | getRangeMap () const |
| The range Map of this Operator. More... | |
A class for wrapping an Operator apply in a Operator.
This class makes a Operator<OpScalar, ...> "look
like" an Operator<Scalar, ...>, where OpScalar and Scalar may be different types. It does so by working around a limitation of C++, namely that template methods of a class can't be virtual.
| Scalar | The type of the entries of the input and output MultiVector of the apply() method. Same as the first template parameter of Operator. |
| OperatorType | The type of the underlying Operator, whose first template parameter OperatorType::scalar_type may differ from this Operator's Scalar type. |
Definition at line 78 of file Tpetra_ApplyOp.hpp.
| typedef OperatorType::scalar_type Tpetra::details::ApplyOp< Scalar, OperatorType >::scalar_type |
The type of the entries of the input OperatorType.
Definition at line 88 of file Tpetra_ApplyOp.hpp.
| typedef OperatorType::local_ordinal_type Tpetra::details::ApplyOp< Scalar, OperatorType >::local_ordinal_type |
The type of local indices in the input OperatorType.
Definition at line 91 of file Tpetra_ApplyOp.hpp.
| typedef OperatorType::global_ordinal_type Tpetra::details::ApplyOp< Scalar, OperatorType >::global_ordinal_type |
The type of global indices in the input OperatorType.
Definition at line 94 of file Tpetra_ApplyOp.hpp.
| typedef OperatorType::node_type Tpetra::details::ApplyOp< Scalar, OperatorType >::node_type |
The type of the Kokkos Node used by the input OperatorType.
Definition at line 97 of file Tpetra_ApplyOp.hpp.
|
inline |
Constructor.
| A | [in] The Operator to wrap with a different Scalar type. |
Definition at line 106 of file Tpetra_ApplyOp.hpp.
|
inlinevirtual |
Destructor.
Definition at line 110 of file Tpetra_ApplyOp.hpp.
|
inlinevirtual |
Compute Y = beta*Y + alpha*Op(A)*X, where Op(A) is either A,
, or
.
This method calls the underlying Operator object's applyTempl<Scalar,Scalar>() method.
Definition at line 122 of file Tpetra_ApplyOp.hpp.
|
inline |
Whether this Operator's apply() method can apply the transpose or conjugate transpose.
This depends on whether it is true for the Operator that this object wraps.
Definition at line 137 of file Tpetra_ApplyOp.hpp.
|
inline |
The domain Map of this Operator.
Definition at line 143 of file Tpetra_ApplyOp.hpp.
|
inline |
The range Map of this Operator.
Definition at line 149 of file Tpetra_ApplyOp.hpp.
|
pure virtualinherited |
The Map associated with the domain of this operator, which must be compatible with X.getMap().
|
pure virtualinherited |
The Map associated with the range of this operator, which must be compatible with Y.getMap().
|
virtualinherited |
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.
Definition at line 132 of file Tpetra_Operator.hpp.
|
protected |
The underlying Operator object.
Definition at line 156 of file Tpetra_ApplyOp.hpp.