MueLu Version of the Day
Loading...
Searching...
No Matches
MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node > Class Template Reference

Takes a sequence of operators and applies their product. More...

#include <MueLu_ProductOperator_decl.hpp>

Inheritance diagram for MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >:

Public Member Functions

virtual const Teuchos::RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap () const
 The Map associated with the domain of this operator, which must be compatible with X.getMap().
 
virtual const Teuchos::RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap () const
 The Map associated with the range of this operator, which must be compatible with Y.getMap().
 
virtual void apply (const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const
 Computes the operator-multivector application.
 
virtual bool hasTransposeApply () const
 Whether this operator supports applying the transpose or conjugate transpose.
 

Xpetra specific

std::vector< Teuchos::RCP< Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > > ops_
 
std::vector< Teuchos::ETransp > modes_
 
std::vector< Teuchos::RCP< Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > > tempVecs_
 
 ProductOperator ()=default
 
 ProductOperator (std::vector< Teuchos::RCP< Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > > ops, std::vector< Teuchos::ETransp > modes)
 TpetraOperator constructor to wrap a Tpetra::Operator object.
 
 ProductOperator (std::vector< Teuchos::RCP< Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > > ops)
 
void CheckMaps ()
 
void AllocateTemporaryMultiVectors (size_t NumVectors) const
 
void residual (const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &R) const
 Compute a residual R = B - (*this) * X.
 

Overridden from Teuchos::Describable

std::string description () const
 A simple one-line description of this object.
 
void describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const
 Print the object with the given verbosity level to a FancyOStream.
 

Detailed Description

template<class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
class MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >

Takes a sequence of operators and applies their product.

Wrap operators op0, op1, op2, ... and apply modes mode0, mode1, mode2, ... into a single operator with apply Y : =(op0^mode0 * op1^mode1 * op2^mode2 * ...) X.

Definition at line 33 of file MueLu_ProductOperator_decl.hpp.

Constructor & Destructor Documentation

◆ ProductOperator() [1/3]

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::ProductOperator ( )
default

◆ ProductOperator() [2/3]

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::ProductOperator ( std::vector< Teuchos::RCP< Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > >  ops,
std::vector< Teuchos::ETransp >  modes 
)
inline

TpetraOperator constructor to wrap a Tpetra::Operator object.

Definition at line 94 of file MueLu_ProductOperator_decl.hpp.

◆ ProductOperator() [3/3]

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::ProductOperator ( std::vector< Teuchos::RCP< Xpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > > >  ops)
inline

Definition at line 105 of file MueLu_ProductOperator_decl.hpp.

Member Function Documentation

◆ getDomainMap()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
virtual const Teuchos::RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::getDomainMap ( ) const
inlinevirtual

The Map associated with the domain of this operator, which must be compatible with X.getMap().

Definition at line 38 of file MueLu_ProductOperator_decl.hpp.

◆ getRangeMap()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
virtual const Teuchos::RCP< const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::getRangeMap ( ) const
inlinevirtual

The Map associated with the range of this operator, which must be compatible with Y.getMap().

Definition at line 43 of file MueLu_ProductOperator_decl.hpp.

◆ apply()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node >
void MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::apply ( const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  X,
Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  Y,
Teuchos::ETransp  mode = Teuchos::NO_TRANS,
Scalar  alpha = Teuchos::ScalarTraits<Scalar>::one(),
Scalar  beta = Teuchos::ScalarTraits<Scalar>::zero() 
) const
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.

Definition at line 17 of file MueLu_ProductOperator_def.hpp.

◆ hasTransposeApply()

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

Whether this operator supports applying the transpose or conjugate transpose.

Definition at line 61 of file MueLu_ProductOperator_decl.hpp.

◆ description()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
std::string MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::description ( ) const
inline

A simple one-line description of this object.

Definition at line 71 of file MueLu_ProductOperator_decl.hpp.

◆ describe()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
void MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::describe ( Teuchos::FancyOStream &  out,
const Teuchos::EVerbosityLevel  verbLevel = Teuchos::Describable::verbLevel_default 
) const
inline

Print the object with the given verbosity level to a FancyOStream.

Definition at line 80 of file MueLu_ProductOperator_decl.hpp.

◆ CheckMaps()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
void MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::CheckMaps ( )
inline

Definition at line 117 of file MueLu_ProductOperator_decl.hpp.

◆ AllocateTemporaryMultiVectors()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
void MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::AllocateTemporaryMultiVectors ( size_t  NumVectors) const
inline

Definition at line 125 of file MueLu_ProductOperator_decl.hpp.

◆ residual()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
void MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::residual ( const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  X,
const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  B,
Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  R 
) const
inline

Compute a residual R = B - (*this) * X.

Definition at line 136 of file MueLu_ProductOperator_decl.hpp.

Member Data Documentation

◆ ops_

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
std::vector<Teuchos::RCP<Xpetra::Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node> > > MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::ops_
private

Definition at line 149 of file MueLu_ProductOperator_decl.hpp.

◆ modes_

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
std::vector<Teuchos::ETransp> MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::modes_
private

Definition at line 150 of file MueLu_ProductOperator_decl.hpp.

◆ tempVecs_

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
std::vector<Teuchos::RCP<Xpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> > > MueLu::ProductOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::tempVecs_
mutableprivate

Definition at line 151 of file MueLu_ProductOperator_decl.hpp.


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