|
Tpetra Matrix/Vector Services
Version of the Day
|
Abstract interface for operators (e.g., matrices and preconditioners). More...
#include <Tpetra_Operator.hpp>

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. | |
Abstract interface for operators (e.g., matrices and preconditioners).
| Scalar | The type of the entries of the input and output MultiVector objects. See the documentation of MultiVector for details and requirements. |
| LocalOrdinal | The type of local indices. See the documentation of Map for requirements. |
| GlobalOrdinal | The type of global indices. See the documentation of Map for requirements. |
| Node | The 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.
| typedef Scalar Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::scalar_type |
The type of the entries of the input and output multivectors.
Reimplemented in Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::Experimental::BlockCrsMatrix< Scalar, LO, GO, Node >, Tpetra::VbrMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RowMatrix< Scalar, LO, GO, Node >, Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >, Tpetra::details::ApplyOp< Scalar, OperatorType >, and Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >.
Definition at line 102 of file Tpetra_Operator.hpp.
| typedef LocalOrdinal Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_ordinal_type |
The local index type.
Reimplemented in Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::Experimental::BlockCrsMatrix< Scalar, LO, GO, Node >, Tpetra::VbrMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RowMatrix< Scalar, LO, GO, Node >, Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >, Tpetra::details::ApplyOp< Scalar, OperatorType >, and Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >.
Definition at line 105 of file Tpetra_Operator.hpp.
| typedef GlobalOrdinal Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::global_ordinal_type |
The global index type.
Reimplemented in Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::Experimental::BlockCrsMatrix< Scalar, LO, GO, Node >, Tpetra::VbrMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RowMatrix< Scalar, LO, GO, Node >, Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >, Tpetra::details::ApplyOp< Scalar, OperatorType >, and Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >.
Definition at line 108 of file Tpetra_Operator.hpp.
| typedef Node Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::node_type |
The Kokkos Node type.
Reimplemented in Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::Experimental::BlockCrsMatrix< Scalar, LO, GO, Node >, Tpetra::VbrMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RowMatrix< Scalar, LO, GO, Node >, Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >, Tpetra::details::ApplyOp< Scalar, OperatorType >, and Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >.
Definition at line 111 of file Tpetra_Operator.hpp.
| virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > Tpetra::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 Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >, Tpetra::CrsMatrixMultiplyOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::VbrMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::Experimental::BlockCrsMatrix< Scalar, LO, GO, Node >, Tpetra::details::ApplyOp< Scalar, OperatorType >, Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel >, and Tpetra::RTI::KernelOp< S, LO, GO, Node, Tpetra::RTI::detail::BinaryFunctorAdapterWithAlphaBeta< Op, S > >.
| virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > Tpetra::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 Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >, Tpetra::CrsMatrixMultiplyOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::VbrMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::Experimental::BlockCrsMatrix< Scalar, LO, GO, Node >, Tpetra::details::ApplyOp< Scalar, OperatorType >, Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel >, and Tpetra::RTI::KernelOp< S, LO, GO, Node, Tpetra::RTI::detail::BinaryFunctorAdapterWithAlphaBeta< Op, S > >.
| 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
. However, the details of operation vary according to the values of alpha and beta. Specifically
beta == 0, apply() must overwrite Y, so that any values in Y (including NaNs) are ignored.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 >, Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >, Tpetra::VbrMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::CrsMatrixMultiplyOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::details::ApplyOp< Scalar, OperatorType >, Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::RTI::KernelOp< S, LO, GO, Node, Kernel >, and Tpetra::RTI::KernelOp< S, LO, GO, Node, Tpetra::RTI::detail::BinaryFunctorAdapterWithAlphaBeta< Op, S > >.
| bool Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::hasTransposeApply | ( | ) | const [virtual] |
Whether this operator supports applying the transpose or conjugate transpose.
By default, this returns false. Subclasses must override this method if they can support apply() with mode=Teuchos::TRANS or mode=Teuchos::CONJ_TRANS.
Reimplemented in Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Kokkos::Compat::KokkosDeviceWrapperNode< DeviceType > >, Tpetra::CrsMatrixMultiplyOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::Experimental::BlockCrsMatrix< Scalar, LO, GO, Node >, Tpetra::VbrMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >, Tpetra::details::ApplyOp< Scalar, OperatorType >, and Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >.
Definition at line 148 of file Tpetra_Operator.hpp.
1.7.6.1