|
Tpetra Matrix/Vector Services
Version of the Day
|
Wrap a CrsMatrix instance's triangular solve in an Operator. More...
#include <Tpetra_CrsMatrixSolveOp_decl.hpp>

Public Types | |
| typedef CrsMatrix< MatScalar, LocalOrdinal, GlobalOrdinal, Node > | crs_matrix_type |
| The specialization of CrsMatrix which this class wraps. | |
| typedef Map< LocalOrdinal, GlobalOrdinal, Node > | map_type |
| The specialization of Map which this class uses. | |
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 | |
Constructor and destructor | |
| CrsMatrixSolveOp (const Teuchos::RCP< const crs_matrix_type > &A) | |
| Constructor; takes a CrsMatrix to use for local triangular solves. | |
| virtual | ~CrsMatrixSolveOp () |
| Destructor. | |
Implementation of Operator | |
| 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 |
Compute , where represents the result of the local triangular solve. | |
| bool | hasTransposeApply () const |
| Whether apply() can solve with the (conjugate) transpose of the matrix. | |
| Teuchos::RCP< const map_type > | getDomainMap () const |
| The domain Map of this operator. This is the range map of the underlying CrsMatrix. | |
| Teuchos::RCP< const map_type > | getRangeMap () const |
| The range Map of this operator. This is the domain Map of the underlying CrsMatrix. | |
Protected Member Functions | |
| void | applyNonTranspose (const MV &X, MV &Y) const |
| Do the non-transpose solve. | |
| void | applyTranspose (const MV &X, MV &Y, const Teuchos::ETransp mode) const |
| Do the transpose or conjugate transpose solve. | |
Protected Attributes | |
| const Teuchos::RCP< const crs_matrix_type > | matrix_ |
| The underlying CrsMatrix. | |
| Teuchos::RCP< MV > | importMV_ |
| Cached temporary destination of Import operation in apply(). | |
| Teuchos::RCP< MV > | exportMV_ |
| Cached temporary source of Export operation in apply(). | |
Related Functions | |
(Note that these are not member functions.) | |
| template<class Scalar , class MatScalar , class LocalOrdinal , class GlobalOrdinal , class Node > | |
| Teuchos::RCP< CrsMatrixSolveOp < Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node > > | createCrsMatrixSolveOp (const Teuchos::RCP< const CrsMatrix< MatScalar, LocalOrdinal, GlobalOrdinal, Node > > &A) |
| Nonmember function that wraps a CrsMatrix in a CrsMatrixSolveOp. | |
Wrap a CrsMatrix instance's triangular solve in an Operator.
| Scalar | Same as the first template parameter of Operator. The type of the entries of the MultiVector input and output of apply(). Not necessarily the same as the first template parameter of the CrsMatrix used to create this object. |
| MatScalar | Same as the first template parameter of CrsMatrix. The type of the entries of the sparse matrix. Not necessarily the same as the type of the entries of the MultiVector input and output of apply(). |
| LocalOrdinal | Same as the second template parameter of CrsMatrix and Operator. |
| GlobalOrdinal | Same as the third template parameter of CrsMatrix and Operator. |
| Node | Same as the fourth template parameter of CrsMatrix and Operator. |
This class' apply() method does a "local" triangular solve. "Local" is in quotes because apply() does the same communication (Import and Export) operations that CrsMatrix's apply() method would do for a sparse matrix-vector multiply, but the triangular solve is restricted to each process' part of the data. Thus, it is not a triangular solve of a fully distributed triangular matrix.
Here are some situations where this operation is useful:
MatScalar of entries in the matrix differs from the type Scalar of entries in the MultiVector input and output of apply(). Definition at line 95 of file Tpetra_CrsMatrixSolveOp_decl.hpp.
| typedef CrsMatrix<MatScalar, LocalOrdinal, GlobalOrdinal, Node> Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::crs_matrix_type |
The specialization of CrsMatrix which this class wraps.
Definition at line 99 of file Tpetra_CrsMatrixSolveOp_decl.hpp.
| typedef Map<LocalOrdinal, GlobalOrdinal, Node> Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::map_type |
The specialization of Map which this class uses.
Definition at line 101 of file Tpetra_CrsMatrixSolveOp_decl.hpp.
typedef Scalar Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >::scalar_type [inherited] |
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 [inherited] |
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 [inherited] |
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 [inherited] |
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.
| Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::CrsMatrixSolveOp | ( | const Teuchos::RCP< const crs_matrix_type > & | A | ) |
Constructor; takes a CrsMatrix to use for local triangular solves.
| virtual Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::~CrsMatrixSolveOp | ( | ) | [virtual] |
Destructor.
| void Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, 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 [virtual] |
Compute
, where
represents the result of the local triangular solve.
Implements Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.
| bool Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::hasTransposeApply | ( | ) | const [virtual] |
Whether apply() can solve with the (conjugate) transpose of the matrix.
Reimplemented from Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.
| Teuchos::RCP<const map_type> Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::getDomainMap | ( | ) | const [virtual] |
The domain Map of this operator. This is the range map of the underlying CrsMatrix.
Implements Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.
| Teuchos::RCP<const map_type> Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::getRangeMap | ( | ) | const [virtual] |
The range Map of this operator. This is the domain Map of the underlying CrsMatrix.
Implements Tpetra::Operator< Scalar, LocalOrdinal, GlobalOrdinal, Node >.
| void Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::applyNonTranspose | ( | const MV & | X, |
| MV & | Y | ||
| ) | const [protected] |
Do the non-transpose solve.
| void Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::applyTranspose | ( | const MV & | X, |
| MV & | Y, | ||
| const Teuchos::ETransp | mode | ||
| ) | const [protected] |
Do the transpose or conjugate transpose solve.
| Teuchos::RCP< CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node > > createCrsMatrixSolveOp | ( | const Teuchos::RCP< const CrsMatrix< MatScalar, LocalOrdinal, GlobalOrdinal, Node > > & | A | ) | [related] |
Nonmember function that wraps a CrsMatrix in a CrsMatrixSolveOp.
The function has the same template parameters of CrsMatrixSolveOp.
| A | [in] The CrsMatrix instance to wrap in an CrsMatrixSolveOp. |
const Teuchos::RCP<const crs_matrix_type> Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::matrix_ [protected] |
The underlying CrsMatrix.
Definition at line 141 of file Tpetra_CrsMatrixSolveOp_decl.hpp.
Teuchos::RCP<MV> Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::importMV_ [mutable, protected] |
Cached temporary destination of Import operation in apply().
Definition at line 144 of file Tpetra_CrsMatrixSolveOp_decl.hpp.
Teuchos::RCP<MV> Tpetra::CrsMatrixSolveOp< Scalar, MatScalar, LocalOrdinal, GlobalOrdinal, Node >::exportMV_ [mutable, protected] |
Cached temporary source of Export operation in apply().
Definition at line 146 of file Tpetra_CrsMatrixSolveOp_decl.hpp.
1.7.6.1