Xpetra Version of the Day
Loading...
Searching...
No Matches
Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > Class Template Referenceabstract

#include <Xpetra_Operator.hpp>

Inheritance diagram for Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >:
Teuchos::Describable Teuchos::LabeledObject Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >

Public Member Functions

virtual ~Operator ()
Public Member Functions inherited from Teuchos::Describable
virtual std::string description () const
virtual void describe (FancyOStream &out, const EVerbosityLevel verbLevel=verbLevel_default) const
void describe (std::ostream &out, const EVerbosityLevel verbLevel=verbLevel_default) const
virtual ~Describable ()
DescribableStreamManipulatorState describe (const Describable &describable, const EVerbosityLevel verbLevel=Describable::verbLevel_default)
std::ostream & operator<< (std::ostream &os, const DescribableStreamManipulatorState &d)
virtual std::string description () const
virtual void describe (FancyOStream &out, const EVerbosityLevel verbLevel=verbLevel_default) const
void describe (std::ostream &out, const EVerbosityLevel verbLevel=verbLevel_default) const
virtual ~Describable ()
Public Member Functions inherited from Teuchos::LabeledObject
 LabeledObject ()
virtual ~LabeledObject ()
virtual void setObjectLabel (const std::string &objectLabel)
virtual std::string getObjectLabel () const

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.
typedef LocalOrdinal local_ordinal_type
 The local index type.
typedef GlobalOrdinal global_ordinal_type
 The global index type.
typedef Node node_type
 The Kokkos Node type.

Pure virtual functions to be overridden by subclasses.

virtual const Teuchos::RCP< const map_typegetDomainMap () const =0
 The Map associated with the domain of this operator, which must be compatible with X.getMap().
virtual const Teuchos::RCP< const map_typegetRangeMap () const =0
 The Map associated with the range of this operator, which must be compatible with Y.getMap().
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.
virtual bool hasTransposeApply () const
 Whether this operator supports applying the transpose or conjugate transpose.
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.

Additional Inherited Members

Static Public Attributes inherited from Teuchos::Describable
static const EVerbosityLevel verbLevel_default

Detailed Description

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
class Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >

Definition at line 28 of file Xpetra_Operator.hpp.

Member Typedef Documentation

◆ map_type

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
typedef Xpetra::Map<LocalOrdinal, GlobalOrdinal, Node> Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::map_type
private

Definition at line 29 of file Xpetra_Operator.hpp.

◆ mv_type

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
typedef Xpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::mv_type
private

Definition at line 30 of file Xpetra_Operator.hpp.

◆ scalar_type

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
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.

◆ local_ordinal_type

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
typedef LocalOrdinal Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_ordinal_type

The local index type.

Definition at line 41 of file Xpetra_Operator.hpp.

◆ global_ordinal_type

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
typedef GlobalOrdinal Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::global_ordinal_type

The global index type.

Definition at line 44 of file Xpetra_Operator.hpp.

◆ node_type

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
typedef Node Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::node_type

The Kokkos Node type.

Definition at line 47 of file Xpetra_Operator.hpp.

Constructor & Destructor Documentation

◆ ~Operator()

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
virtual Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::~Operator ( )
inlinevirtual

Definition at line 33 of file Xpetra_Operator.hpp.

Member Function Documentation

◆ getDomainMap()

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
virtual const Teuchos::RCP< const map_type > Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::getDomainMap ( ) const
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::BlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Tpetra::KokkosClassic::DefaultNode::DefaultNodeType >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrix< double, int, EpetraGlobalOrdinal, Node >, Xpetra::CrsMatrix< double, int, int, EpetraNode >, Xpetra::CrsMatrix< double, int, long long, EpetraNode >, Xpetra::CrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::CrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Tpetra::KokkosClassic::DefaultNode::DefaultNodeType >, Xpetra::CrsMatrixWrap< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::EpetraCrsMatrixT< EpetraGlobalOrdinal, Node >, Xpetra::EpetraCrsMatrixT< int, EpetraNode >, Xpetra::EpetraCrsMatrixT< long long, EpetraNode >, Xpetra::EpetraInverseOperator< EpetraGlobalOrdinal, Node >, Xpetra::EpetraOperator< EpetraGlobalOrdinal, Node >, Xpetra::local_matrix_type< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::local_ordinal_type< double, int, GlobalOrdinal, Node >, Xpetra::node_type< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::RowMatrix< double, int, EpetraGlobalOrdinal, Node >, Xpetra::RowMatrix< double, int, int, EpetraNode >, Xpetra::RowMatrix< double, int, long long, EpetraNode >, Xpetra::RowMatrix< Scalar, int, int, EpetraNode >, Xpetra::RowMatrix< Scalar, int, long long, EpetraNode >, Xpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Tpetra::KokkosClassic::DefaultNode::DefaultNodeType >, Xpetra::scalar_type< double, int, GlobalOrdinal, Node >, Xpetra::TpetraBlockCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraBlockCrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::TpetraBlockCrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::TpetraBlockCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraCrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::TpetraCrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::TpetraCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraHalfPrecisionOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraOperator< double, int, int, EpetraNode >, Xpetra::TpetraOperator< double, int, long long, EpetraNode >, and Xpetra::TpetraRowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >.

◆ getRangeMap()

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
virtual const Teuchos::RCP< const map_type > Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::getRangeMap ( ) const
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::BlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Tpetra::KokkosClassic::DefaultNode::DefaultNodeType >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrix< double, int, EpetraGlobalOrdinal, Node >, Xpetra::CrsMatrix< double, int, int, EpetraNode >, Xpetra::CrsMatrix< double, int, long long, EpetraNode >, Xpetra::CrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::CrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Tpetra::KokkosClassic::DefaultNode::DefaultNodeType >, Xpetra::CrsMatrixWrap< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::EpetraCrsMatrixT< EpetraGlobalOrdinal, Node >, Xpetra::EpetraCrsMatrixT< int, EpetraNode >, Xpetra::EpetraCrsMatrixT< long long, EpetraNode >, Xpetra::EpetraInverseOperator< EpetraGlobalOrdinal, Node >, Xpetra::EpetraOperator< EpetraGlobalOrdinal, Node >, Xpetra::local_matrix_type< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::local_ordinal_type< double, int, GlobalOrdinal, Node >, Xpetra::node_type< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::RowMatrix< double, int, EpetraGlobalOrdinal, Node >, Xpetra::RowMatrix< double, int, int, EpetraNode >, Xpetra::RowMatrix< double, int, long long, EpetraNode >, Xpetra::RowMatrix< Scalar, int, int, EpetraNode >, Xpetra::RowMatrix< Scalar, int, long long, EpetraNode >, Xpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Tpetra::KokkosClassic::DefaultNode::DefaultNodeType >, Xpetra::scalar_type< double, int, GlobalOrdinal, Node >, Xpetra::TpetraBlockCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraBlockCrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::TpetraBlockCrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::TpetraBlockCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraCrsMatrix< Scalar, int, int, EpetraNode >, Xpetra::TpetraCrsMatrix< Scalar, int, long long, EpetraNode >, Xpetra::TpetraCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraHalfPrecisionOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Xpetra::TpetraOperator< double, int, int, EpetraNode >, Xpetra::TpetraOperator< double, int, long long, EpetraNode >, and Xpetra::TpetraRowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >.

◆ apply()

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
virtual void Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::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
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

  • if beta == 0, apply() must overwrite Y, so that any values in Y (including NaNs) are ignored.
  • if alpha == 0, apply() may short-circuit the operator, so that any values in X (including NaNs) are ignored.

Implemented in Xpetra::CrsMatrix< double, int, EpetraGlobalOrdinal, Node >, Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Tpetra::KokkosClassic::DefaultNode::DefaultNodeType >, Xpetra::EpetraInverseOperator< EpetraGlobalOrdinal, Node >, Xpetra::EpetraOperator< EpetraGlobalOrdinal, Node >, Xpetra::RowMatrix< double, int, EpetraGlobalOrdinal, Node >, and Xpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Tpetra::KokkosClassic::DefaultNode::DefaultNodeType >.

◆ hasTransposeApply()

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
virtual bool Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::hasTransposeApply ( ) const
inlinevirtual

◆ removeEmptyProcessesInPlace()

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
virtual void Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::removeEmptyProcessesInPlace ( const RCP< const map_type > & )
inlinevirtual

◆ residual()

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
virtual void Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::residual ( const mv_type & X,
const mv_type & B,
mv_type & R ) const
pure virtual

The documentation for this class was generated from the following file: