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

Interprets a matrix as an operator that acts on a vector of nonzeros via SpGEMM. More...

#include <MueLu_FlatOperator_decl.hpp>

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

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.
 
- Public Member Functions inherited from MueLu::VerboseObject
 VerboseObject ()
 
virtual ~VerboseObject ()
 Destructor.
 
VerbLevel GetVerbLevel () const
 Get the verbosity level.
 
void SetVerbLevel (const VerbLevel verbLevel)
 Set the verbosity level of this object.
 
int GetProcRankVerbose () const
 Get proc rank used for printing. Do not use this information for any other purpose.
 
int SetProcRankVerbose (int procRank) const
 Set proc rank used for printing.
 
bool IsPrint (MsgType type, int thisProcRankOnly=-1) const
 Find out whether we need to print out information for a specific message type.
 
Teuchos::FancyOStream & GetOStream (MsgType type, int thisProcRankOnly=0) const
 Get an output stream for outputting the input message type.
 
Teuchos::FancyOStream & GetBlackHole () const
 

Xpetra specific

RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > mat_
 
RCP< MueLu::Constraint< Scalar, LocalOrdinal, GlobalOrdinal, Node > > constraint_
 
RCP< Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > map_
 
RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > tempMat_
 
 FlatOperator ()=default
 
 FlatOperator (const Teuchos::RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > mat, const Teuchos::RCP< MueLu::Constraint< Scalar, LocalOrdinal, GlobalOrdinal, Node > > constraint)
 TpetraOperator constructor to wrap a Tpetra::Operator object.
 
void CheckMaps ()
 
void AllocateTemporaryMatrix () 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.
 

Additional Inherited Members

- Static Public Member Functions inherited from MueLu::VerboseObject
static void SetDefaultVerbLevel (const VerbLevel defaultVerbLevel)
 Set the default (global) verbosity level.
 
static VerbLevel GetDefaultVerbLevel ()
 Get the default (global) verbosity level.
 
static void SetMueLuOStream (const Teuchos::RCP< Teuchos::FancyOStream > &mueluOStream)
 
static void SetMueLuOFileStream (const std::string &filename)
 
static Teuchos::RCP< Teuchos::FancyOStream > GetMueLuOStream ()
 

Detailed Description

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

Interprets a matrix as an operator that acts on a vector of nonzeros via SpGEMM.

This class takes a matrix A and a constraint object. The constraint specifies a sparsity pattern. The FlatOperator applies A via

Y = flat(A*operator(X))

Here, operator(X) takes a vector X and interpretes it as a matrix with given sparsity pattern. Then a SpGEMM is performed. The entries corresponding to the sparsity pattern are extracted and returned in the vector Y.

Definition at line 41 of file MueLu_FlatOperator_decl.hpp.

Constructor & Destructor Documentation

◆ FlatOperator() [1/2]

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

◆ FlatOperator() [2/2]

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node >
MueLu::FlatOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::FlatOperator ( const Teuchos::RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > >  mat,
const Teuchos::RCP< MueLu::Constraint< Scalar, LocalOrdinal, GlobalOrdinal, Node > >  constraint 
)

TpetraOperator constructor to wrap a Tpetra::Operator object.

Definition at line 18 of file MueLu_FlatOperator_def.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::FlatOperator< 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 48 of file MueLu_FlatOperator_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::FlatOperator< 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 53 of file MueLu_FlatOperator_decl.hpp.

◆ apply()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node >
void MueLu::FlatOperator< 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 35 of file MueLu_FlatOperator_def.hpp.

◆ hasTransposeApply()

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

Whether this operator supports applying the transpose or conjugate transpose.

Definition at line 71 of file MueLu_FlatOperator_decl.hpp.

◆ description()

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

A simple one-line description of this object.

Definition at line 81 of file MueLu_FlatOperator_decl.hpp.

◆ describe()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
void MueLu::FlatOperator< 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 86 of file MueLu_FlatOperator_decl.hpp.

◆ CheckMaps()

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

Definition at line 101 of file MueLu_FlatOperator_decl.hpp.

◆ AllocateTemporaryMatrix()

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

Definition at line 104 of file MueLu_FlatOperator_decl.hpp.

◆ residual()

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
void MueLu::FlatOperator< 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 113 of file MueLu_FlatOperator_decl.hpp.

Member Data Documentation

◆ mat_

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
RCP<Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > MueLu::FlatOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::mat_
private

Definition at line 126 of file MueLu_FlatOperator_decl.hpp.

◆ constraint_

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
RCP<MueLu::Constraint<Scalar, LocalOrdinal, GlobalOrdinal, Node> > MueLu::FlatOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::constraint_
private

Definition at line 127 of file MueLu_FlatOperator_decl.hpp.

◆ map_

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
RCP<Xpetra::Map<LocalOrdinal, GlobalOrdinal, Node> > MueLu::FlatOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::map_
private

Definition at line 128 of file MueLu_FlatOperator_decl.hpp.

◆ tempMat_

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
RCP<Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > MueLu::FlatOperator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::tempMat_
mutableprivate

Definition at line 129 of file MueLu_FlatOperator_decl.hpp.


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