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... | |
Methods implementing Operator | |
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, , or . More... | |
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... | |
Pure virtual functions to be overridden by subclasses. | |
virtual bool | hasDiagonal () const |
Whether this operator can return its diagonal. More... | |
virtual void | getLocalDiagCopy (Vector< Scalar, OperatorType::local_ordinal_type, OperatorType::global_ordinal_type, OperatorType::node_type > &diag) const |
Get the diagonal of the operator. More... | |
Protected Attributes | |
Teuchos::RCP< const OperatorType > | operator_ |
The underlying Operator object. 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 46 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 56 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 59 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 62 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 65 of file Tpetra_ApplyOp.hpp.
|
inline |
Constructor.
A | [in] The Operator to wrap with a different Scalar type. |
Definition at line 74 of file Tpetra_ApplyOp.hpp.
|
inlinevirtual |
Destructor.
Definition at line 78 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 90 of file Tpetra_ApplyOp.hpp.
|
inlinevirtual |
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.
Reimplemented from Tpetra::Operator< Scalar, OperatorType::local_ordinal_type, OperatorType::global_ordinal_type, OperatorType::node_type >.
Definition at line 105 of file Tpetra_ApplyOp.hpp.
|
inlinevirtual |
The domain Map of this Operator.
Definition at line 111 of file Tpetra_ApplyOp.hpp.
|
inlinevirtual |
The range Map of this Operator.
Definition at line 117 of file Tpetra_ApplyOp.hpp.
|
virtualinherited |
Whether this operator can return its diagonal.
By default, this returns false. Subclasses must override this method if they can supply a diagonal.
|
virtualinherited |
Get the diagonal of the operator.
By default, this throws. Subclasses must override this method if they can supply a diagonal.
|
protected |
The underlying Operator object.
Definition at line 124 of file Tpetra_ApplyOp.hpp.