Tpetra Matrix/Vector Services  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines
Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node > Class Template Reference

Abstract interface for operators (e.g., matrices and preconditioners). More...

#include <Tpetra_Operator.hpp>

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

List of all members.

Public Types

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.

Public Member Functions

Pure virtual functions to be overridden by subclasses.
virtual Teuchos::RCP< const
Map< LocalOrdinal,
GlobalOrdinal, Node > > 
getDomainMap () const =0
 The Map associated with the domain of this operator, which must be compatible with X.getMap().
virtual Teuchos::RCP< const
Map< LocalOrdinal,
GlobalOrdinal, Node > > 
getRangeMap () const =0
 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
 Whether this operator supports applying the transpose or conjugate transpose.

Detailed Description

template<class Scalar = MultiVector<>::scalar_type, class LocalOrdinal = typename MultiVector<Scalar>::local_ordinal_type, class GlobalOrdinal = typename MultiVector<Scalar, LocalOrdinal>::global_ordinal_type, class Node = typename MultiVector<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
class Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >

Abstract interface for operators (e.g., matrices and preconditioners).

Template Parameters:
ScalarThe type of the entries of the input and output MultiVector objects. See the documentation of MultiVector for details and requirements.
LocalOrdinalThe type of local indices. See the documentation of Map for requirements.
GlobalOrdinalThe type of global indices. See the documentation of Map for requirements.
NodeThe Kokkos Node type. See the documentation of Map for requirements.

An Operator takes a MultiVector as input, and fills a given output MultiVector with the result. The input and output MultiVector objects must have the same number of columns (vectors). However, they need not have the same numbers of rows or the same parallel distributions. The domain of the Operator describes the parallel distribution of valid input MultiVector objects, and the range of the Operator describes the parallel distribution of valid output MultiVector objects.

Operator is just an interface, not an implementation. Many different classes implement this interface, including sparse matrices, direct solvers, iterative solvers, and preconditioners.

Definition at line 96 of file Tpetra_Operator.hpp.


Member Typedef Documentation

template<class Scalar = MultiVector<>::scalar_type, class LocalOrdinal = typename MultiVector<Scalar>::local_ordinal_type, class GlobalOrdinal = typename MultiVector<Scalar, LocalOrdinal>::global_ordinal_type, class Node = typename MultiVector<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
typedef Scalar Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::scalar_type
template<class Scalar = MultiVector<>::scalar_type, class LocalOrdinal = typename MultiVector<Scalar>::local_ordinal_type, class GlobalOrdinal = typename MultiVector<Scalar, LocalOrdinal>::global_ordinal_type, class Node = typename MultiVector<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
typedef LocalOrdinal Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_ordinal_type
template<class Scalar = MultiVector<>::scalar_type, class LocalOrdinal = typename MultiVector<Scalar>::local_ordinal_type, class GlobalOrdinal = typename MultiVector<Scalar, LocalOrdinal>::global_ordinal_type, class Node = typename MultiVector<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
typedef GlobalOrdinal Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::global_ordinal_type
template<class Scalar = MultiVector<>::scalar_type, class LocalOrdinal = typename MultiVector<Scalar>::local_ordinal_type, class GlobalOrdinal = typename MultiVector<Scalar, LocalOrdinal>::global_ordinal_type, class Node = typename MultiVector<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
typedef Node Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::node_type

Member Function Documentation

template<class Scalar = MultiVector<>::scalar_type, class LocalOrdinal = typename MultiVector<Scalar>::local_ordinal_type, class GlobalOrdinal = typename MultiVector<Scalar, LocalOrdinal>::global_ordinal_type, class Node = typename MultiVector<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::getDomainMap ( ) const [pure virtual]
template<class Scalar = MultiVector<>::scalar_type, class LocalOrdinal = typename MultiVector<Scalar>::local_ordinal_type, class GlobalOrdinal = typename MultiVector<Scalar, LocalOrdinal>::global_ordinal_type, class Node = typename MultiVector<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::getRangeMap ( ) const [pure virtual]
template<class Scalar = MultiVector<>::scalar_type, class LocalOrdinal = typename MultiVector<Scalar>::local_ordinal_type, class GlobalOrdinal = typename MultiVector<Scalar, LocalOrdinal>::global_ordinal_type, class Node = typename MultiVector<Scalar, LocalOrdinal, GlobalOrdinal>::node_type>
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]
template<class Scalar , class LocalOrdinal , class GlobalOrdinal , class Node >
bool Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::hasTransposeApply ( ) const [virtual]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines