Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > Class Template Reference

Abstract interface for linear operators accepting Tpetra MultiVector objects. More...

#include <Tpetra_Operator.hpp>

Inheritance diagram for Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >:
Inheritance graph
[legend]

List of all members.

Public Member Functions

Pure virtual functions to be overridden by subclasses.

virtual const Teuchos::RCP
< const Map< LocalOrdinal,
GlobalOrdinal, Node > > & 
getDomainMap () const =0
 Returns the Map associated with the domain of this operator, which must be compatible with X.getMap().
virtual const Teuchos::RCP
< const Map< LocalOrdinal,
GlobalOrdinal, Node > > & 
getRangeMap () const =0
 Returns the Map associated with the range of this operator, which must be compatible with Y.getMap().
virtual void apply (const MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, 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 =0
 Computes the operator-multivector application.
virtual bool hasTransposeApply () const
 Indicates whether this operator supports applying the adjoint operator.

Detailed Description

template<class Scalar, class LocalOrdinal = int, class GlobalOrdinal = LocalOrdinal, class Node = Kokkos::DefaultNode::DefaultNodeType>
class Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >

Abstract interface for linear operators accepting Tpetra MultiVector objects.

This class is templated on Scalar, LocalOrdinal, GlobalOrdinal and Node. The LocalOrdinal type, if omitted, defaults to int. The GlobalOrdinal type, if omitted, defaults to the LocalOrdinal type Node is by defult of type Kokkos::DefaultNode::DefaultNodeType.

A Operator object applies a linear operator to a MultiVector, storing the result in another MultiVector. The scalar type Scalar of the Operator specifies the scalar field of the input and output MultiVector objects, not that of the underlying linear operator. Operator is an abstract base class, and interfaces exist for this interface from numerous other classes, including sparse matrices, direct solvers, iterative solvers, and preconditioners.

Definition at line 51 of file Tpetra_Operator.hpp.


Member Function Documentation

template<class Scalar, class LocalOrdinal = int, class GlobalOrdinal = LocalOrdinal, class Node = Kokkos::DefaultNode::DefaultNodeType>
virtual const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::getDomainMap (  )  const [pure virtual]
template<class Scalar, class LocalOrdinal = int, class GlobalOrdinal = LocalOrdinal, class Node = Kokkos::DefaultNode::DefaultNodeType>
virtual const Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >& Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::getRangeMap (  )  const [pure virtual]
template<class Scalar, class LocalOrdinal = int, class GlobalOrdinal = LocalOrdinal, class Node = Kokkos::DefaultNode::DefaultNodeType>
virtual void Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::apply ( const MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  X,
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 [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 Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps >, Tpetra::CrsMatrixMultiplyOp< OpScalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps >, Tpetra::CrsMatrixSolveOp< OpScalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps >, and Tpetra::VbrMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps >.

template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node >
bool Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::hasTransposeApply (  )  const [inline, virtual]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Wed Apr 13 10:21:42 2011 for Tpetra Matrix/Vector Services by  doxygen 1.6.3