Ifpack2 Templated Preconditioning Package  Version 1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
List of all members
Ifpack2::SingletonFilter< MatrixType > Class Template Reference

Filter based on matrix entries. More...

#include <Ifpack2_SingletonFilter_decl.hpp>

Inheritance diagram for Ifpack2::SingletonFilter< MatrixType >:
Inheritance graph
[legend]

Public Member Functions

Constructor & destructor methods
 SingletonFilter (const Teuchos::RCP< const Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &Matrix)
 Constructor. More...
 
virtual ~SingletonFilter ()
 Destructor. More...
 
Matrix Query Methods
virtual Teuchos::RCP< const
Teuchos::Comm< int > > 
getComm () const
 Returns the communicator. More...
 
virtual Teuchos::RCP< const
Tpetra::Map< LocalOrdinal,
GlobalOrdinal, Node > > 
getRowMap () const
 Returns the Map that describes the row distribution in this matrix. More...
 
virtual Teuchos::RCP< const
Tpetra::Map< LocalOrdinal,
GlobalOrdinal, Node > > 
getColMap () const
 Returns the Map that describes the column distribution in this matrix. More...
 
virtual Teuchos::RCP< const
Tpetra::Map< LocalOrdinal,
GlobalOrdinal, Node > > 
getDomainMap () const
 Returns the Map that describes the domain distribution in this matrix. More...
 
virtual Teuchos::RCP< const
Tpetra::Map< LocalOrdinal,
GlobalOrdinal, Node > > 
getRangeMap () const
 Returns the Map that describes the range distribution in this matrix. More...
 
virtual Teuchos::RCP< const
Tpetra::RowGraph< LocalOrdinal,
GlobalOrdinal, Node > > 
getGraph () const
 Returns the RowGraph associated with this matrix. More...
 
virtual global_size_t getGlobalNumRows () const
 Returns the number of global rows in this matrix. More...
 
virtual global_size_t getGlobalNumCols () const
 Returns the number of global columns in this matrix. More...
 
virtual size_t getNodeNumRows () const
 Returns the number of rows owned on the calling node. More...
 
virtual size_t getNodeNumCols () const
 Returns the number of columns needed to apply the forward operator on this node, i.e., the number of elements listed in the column map. More...
 
virtual GlobalOrdinal getIndexBase () const
 Returns the index base for global indices for this matrix. More...
 
virtual global_size_t getGlobalNumEntries () const
 Returns the global number of entries in this matrix. More...
 
virtual size_t getNodeNumEntries () const
 Returns the local number of entries in this matrix. More...
 
virtual size_t getNumEntriesInGlobalRow (GlobalOrdinal globalRow) const
 Returns the current number of entries on this node in the specified global row. More...
 
virtual size_t getNumEntriesInLocalRow (LocalOrdinal localRow) const
 Returns the current number of entries on this node in the specified local row. More...
 
virtual size_t getGlobalMaxNumRowEntries () const
 Returns the maximum number of entries across all rows/columns on all nodes. More...
 
virtual size_t getNodeMaxNumRowEntries () const
 Returns the maximum number of entries across all rows/columns on this node. More...
 
virtual bool hasColMap () const
 Indicates whether this matrix has a well-defined column map. More...
 
virtual bool isLocallyIndexed () const
 If matrix indices are in the local range, this function returns true. Otherwise, this function returns false. */. More...
 
virtual bool isGloballyIndexed () const
 If matrix indices are in the global range, this function returns true. Otherwise, this function returns false. */. More...
 
virtual bool isFillComplete () const
 Returns true if fillComplete() has been called. More...
 
virtual bool supportsRowViews () const
 Returns true if RowViews are supported. More...
 
Extraction Methods
virtual void getGlobalRowCopy (GlobalOrdinal GlobalRow, const Teuchos::ArrayView< GlobalOrdinal > &Indices, const Teuchos::ArrayView< Scalar > &Values, size_t &NumEntries) const
 Extract a list of entries in a specified global row of this matrix. Put into pre-allocated storage. More...
 
virtual void getLocalRowCopy (LocalOrdinal LocalRow, const Teuchos::ArrayView< LocalOrdinal > &Indices, const Teuchos::ArrayView< Scalar > &Values, size_t &NumEntries) const
 Extract a list of entries in a specified local row of the graph. Put into storage allocated by calling routine. More...
 
virtual void getGlobalRowView (GlobalOrdinal GlobalRow, Teuchos::ArrayView< const GlobalOrdinal > &indices, Teuchos::ArrayView< const Scalar > &values) const
 Extract a const, non-persisting view of global indices in a specified row of the matrix. More...
 
virtual void getLocalRowView (LocalOrdinal LocalRow, Teuchos::ArrayView< const LocalOrdinal > &indices, Teuchos::ArrayView< const Scalar > &values) const
 Extract a const, non-persisting view of local indices in a specified row of the matrix. More...
 
virtual void getLocalDiagCopy (Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &diag) const
 Get a copy of the diagonal entries owned by this node, with local row indices. More...
 
Mathematical Methods
virtual void leftScale (const Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &x)
 Scales the RowMatrix on the left with the Vector x. More...
 
virtual void rightScale (const Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &x)
 Scales the RowMatrix on the right with the Vector x. More...
 
virtual mag_type getFrobeniusNorm () const
 Returns the Frobenius norm of the matrix. More...
 
virtual void apply (const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, Tpetra::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. More...
 
virtual bool hasTransposeApply () const
 Indicates whether this operator supports applying the adjoint operator. More...
 
virtual void SolveSingletons (const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &RHS, Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &LHS)
 Solve the singleton components of the linear system. More...
 
template<class DomainScalar , class RangeScalar >
void SolveSingletonsTempl (const Tpetra::MultiVector< DomainScalar, LocalOrdinal, GlobalOrdinal, Node > &RHS, Tpetra::MultiVector< RangeScalar, LocalOrdinal, GlobalOrdinal, Node > &LHS)
 
virtual void CreateReducedRHS (const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &LHS, const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &RHS, Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &ReducedRHS)
 Creates a RHS for the reduced singleton-free system. More...
 
template<class DomainScalar , class RangeScalar >
void CreateReducedRHSTempl (const Tpetra::MultiVector< DomainScalar, LocalOrdinal, GlobalOrdinal, Node > &LHS, const Tpetra::MultiVector< RangeScalar, LocalOrdinal, GlobalOrdinal, Node > &RHS, Tpetra::MultiVector< RangeScalar, LocalOrdinal, GlobalOrdinal, Node > &ReducedRHS)
 
virtual void UpdateLHS (const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &ReducedLHS, Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &LHS)
 Updates a full LHS from a reduces LHS. More...
 
template<class DomainScalar , class RangeScalar >
void UpdateLHSTempl (const Tpetra::MultiVector< DomainScalar, LocalOrdinal, GlobalOrdinal, Node > &ReducedLHS, Tpetra::MultiVector< RangeScalar, LocalOrdinal, GlobalOrdinal, Node > &LHS)
 
- Public Member Functions inherited from Ifpack2::Details::RowMatrix< MatrixType >
virtual ~RowMatrix ()=default
 Destructor (virtual for memory safety of derived classes) More...
 

Additional Inherited Members

- Public Types inherited from Ifpack2::Details::RowMatrix< MatrixType >
using scalar_type = typename MatrixType::scalar_type
 
using local_ordinal_type = typename MatrixType::local_ordinal_type
 
using global_ordinal_type = typename MatrixType::global_ordinal_type
 
using node_type = typename MatrixType::node_type
 

Detailed Description

template<class MatrixType>
class Ifpack2::SingletonFilter< MatrixType >

Filter based on matrix entries.

Template Parameters
MatrixTypeA specialization of Tpetra::RowMatrix.
Warning
This is an implementation detail of Ifpack2.

Constructor & Destructor Documentation

template<class MatrixType >
Ifpack2::SingletonFilter< MatrixType >::SingletonFilter ( const Teuchos::RCP< const Tpetra::RowMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > &  Matrix)
explicit

Constructor.

template<class MatrixType >
Ifpack2::SingletonFilter< MatrixType >::~SingletonFilter ( )
virtual

Destructor.

Member Function Documentation

template<class MatrixType >
Teuchos::RCP< const Teuchos::Comm< int > > Ifpack2::SingletonFilter< MatrixType >::getComm ( ) const
virtual

Returns the communicator.

template<class MatrixType >
Teuchos::RCP< const Tpetra::Map< typename MatrixType::local_ordinal_type, typename MatrixType::global_ordinal_type, typename MatrixType::node_type > > Ifpack2::SingletonFilter< MatrixType >::getRowMap ( ) const
virtual

Returns the Map that describes the row distribution in this matrix.

template<class MatrixType >
Teuchos::RCP< const Tpetra::Map< typename MatrixType::local_ordinal_type, typename MatrixType::global_ordinal_type, typename MatrixType::node_type > > Ifpack2::SingletonFilter< MatrixType >::getColMap ( ) const
virtual

Returns the Map that describes the column distribution in this matrix.

template<class MatrixType >
Teuchos::RCP< const Tpetra::Map< typename MatrixType::local_ordinal_type, typename MatrixType::global_ordinal_type, typename MatrixType::node_type > > Ifpack2::SingletonFilter< MatrixType >::getDomainMap ( ) const
virtual

Returns the Map that describes the domain distribution in this matrix.

template<class MatrixType >
Teuchos::RCP< const Tpetra::Map< typename MatrixType::local_ordinal_type, typename MatrixType::global_ordinal_type, typename MatrixType::node_type > > Ifpack2::SingletonFilter< MatrixType >::getRangeMap ( ) const
virtual

Returns the Map that describes the range distribution in this matrix.

template<class MatrixType >
Teuchos::RCP< const Tpetra::RowGraph< typename MatrixType::local_ordinal_type, typename MatrixType::global_ordinal_type, typename MatrixType::node_type > > Ifpack2::SingletonFilter< MatrixType >::getGraph ( ) const
virtual

Returns the RowGraph associated with this matrix.

template<class MatrixType >
global_size_t Ifpack2::SingletonFilter< MatrixType >::getGlobalNumRows ( ) const
virtual

Returns the number of global rows in this matrix.

template<class MatrixType >
global_size_t Ifpack2::SingletonFilter< MatrixType >::getGlobalNumCols ( ) const
virtual

Returns the number of global columns in this matrix.

template<class MatrixType >
size_t Ifpack2::SingletonFilter< MatrixType >::getNodeNumRows ( ) const
virtual

Returns the number of rows owned on the calling node.

template<class MatrixType >
size_t Ifpack2::SingletonFilter< MatrixType >::getNodeNumCols ( ) const
virtual

Returns the number of columns needed to apply the forward operator on this node, i.e., the number of elements listed in the column map.

template<class MatrixType >
MatrixType::global_ordinal_type Ifpack2::SingletonFilter< MatrixType >::getIndexBase ( ) const
virtual

Returns the index base for global indices for this matrix.

template<class MatrixType >
global_size_t Ifpack2::SingletonFilter< MatrixType >::getGlobalNumEntries ( ) const
virtual

Returns the global number of entries in this matrix.

template<class MatrixType >
size_t Ifpack2::SingletonFilter< MatrixType >::getNodeNumEntries ( ) const
virtual

Returns the local number of entries in this matrix.

template<class MatrixType >
size_t Ifpack2::SingletonFilter< MatrixType >::getNumEntriesInGlobalRow ( GlobalOrdinal  globalRow) const
virtual

Returns the current number of entries on this node in the specified global row.

Returns Teuchos::OrdinalTraits<size_t>::invalid() if the specified global row does not belong to this graph.

template<class MatrixType >
size_t Ifpack2::SingletonFilter< MatrixType >::getNumEntriesInLocalRow ( LocalOrdinal  localRow) const
virtual

Returns the current number of entries on this node in the specified local row.

Returns Teuchos::OrdinalTraits<size_t>::invalid() if the specified local row is not valid for this graph.

template<class MatrixType >
size_t Ifpack2::SingletonFilter< MatrixType >::getGlobalMaxNumRowEntries ( ) const
virtual

Returns the maximum number of entries across all rows/columns on all nodes.

template<class MatrixType >
size_t Ifpack2::SingletonFilter< MatrixType >::getNodeMaxNumRowEntries ( ) const
virtual

Returns the maximum number of entries across all rows/columns on this node.

template<class MatrixType >
bool Ifpack2::SingletonFilter< MatrixType >::hasColMap ( ) const
virtual

Indicates whether this matrix has a well-defined column map.

template<class MatrixType >
bool Ifpack2::SingletonFilter< MatrixType >::isLocallyIndexed ( ) const
virtual

If matrix indices are in the local range, this function returns true. Otherwise, this function returns false. */.

template<class MatrixType >
bool Ifpack2::SingletonFilter< MatrixType >::isGloballyIndexed ( ) const
virtual

If matrix indices are in the global range, this function returns true. Otherwise, this function returns false. */.

template<class MatrixType >
bool Ifpack2::SingletonFilter< MatrixType >::isFillComplete ( ) const
virtual

Returns true if fillComplete() has been called.

template<class MatrixType >
bool Ifpack2::SingletonFilter< MatrixType >::supportsRowViews ( ) const
virtual

Returns true if RowViews are supported.

template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::getGlobalRowCopy ( GlobalOrdinal  GlobalRow,
const Teuchos::ArrayView< GlobalOrdinal > &  Indices,
const Teuchos::ArrayView< Scalar > &  Values,
size_t &  NumEntries 
) const
virtual

Extract a list of entries in a specified global row of this matrix. Put into pre-allocated storage.

Parameters
LocalRow- (In) Global row number for which indices are desired.
Indices- (Out) Global column indices corresponding to values.
Values- (Out) Matrix values.
NumEntries- (Out) Number of indices.

Note: A std::runtime_error exception is thrown if either Indices or Values is not large enough to hold the data associated with row GlobalRow. If GlobalRow does not belong to this node, then Indices and Values are unchanged and NumIndices is returned as Teuchos::OrdinalTraits<size_t>::invalid().

template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::getLocalRowCopy ( LocalOrdinal  LocalRow,
const Teuchos::ArrayView< LocalOrdinal > &  Indices,
const Teuchos::ArrayView< Scalar > &  Values,
size_t &  NumEntries 
) const
virtual

Extract a list of entries in a specified local row of the graph. Put into storage allocated by calling routine.

Parameters
LocalRow- (In) Local row number for which indices are desired.
Indices- (Out) Local column indices corresponding to values.
Values- (Out) Matrix values.
NumIndices- (Out) Number of indices.

Note: A std::runtime_error exception is thrown if either Indices or Values is not large enough to hold the data associated with row LocalRow. If LocalRow is not valid for this node, then Indices and Values are unchanged and NumIndices is returned as Teuchos::OrdinalTraits<size_t>::invalid().

template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::getGlobalRowView ( GlobalOrdinal  GlobalRow,
Teuchos::ArrayView< const GlobalOrdinal > &  indices,
Teuchos::ArrayView< const Scalar > &  values 
) const
virtual

Extract a const, non-persisting view of global indices in a specified row of the matrix.

Parameters
GlobalRow- (In) Global row number for which indices are desired.
Indices- (Out) Global column indices corresponding to values.
Values- (Out) Row values
Precondition
isLocallyIndexed() == false
Postcondition
indices.size() == getNumEntriesInGlobalRow(GlobalRow)

Note: If GlobalRow does not belong to this node, then indices is set to null.

template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::getLocalRowView ( LocalOrdinal  LocalRow,
Teuchos::ArrayView< const LocalOrdinal > &  indices,
Teuchos::ArrayView< const Scalar > &  values 
) const
virtual

Extract a const, non-persisting view of local indices in a specified row of the matrix.

Parameters
LocalRow- (In) Local row number for which indices are desired.
Indices- (Out) Global column indices corresponding to values.
Values- (Out) Row values
Precondition
isGloballyIndexed() == false
Postcondition
indices.size() == getNumEntriesInLocalRow(LocalRow)

Note: If LocalRow does not belong to this node, then indices is set to null.

template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::getLocalDiagCopy ( Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  diag) const
virtual

Get a copy of the diagonal entries owned by this node, with local row indices.

Returns a distributed Vector object partitioned according to this matrix's row map, containing the the zero and non-zero diagonals owned by this node.

template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::leftScale ( const Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  x)
virtual

Scales the RowMatrix on the left with the Vector x.

This matrix will be scaled such that A(i,j) = x(i)*A(i,j) where i denoes the global row number of A and j denotes the global column number of A.

Parameters
xA vector to left scale this matrix.
template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::rightScale ( const Tpetra::Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  x)
virtual

Scales the RowMatrix on the right with the Vector x.

This matrix will be scaled such that A(i,j) = x(j)*A(i,j) where i denoes the global row number of A and j denotes the global column number of A.

Parameters
xA vector to right scale this matrix.
template<class MatrixType >
SingletonFilter< MatrixType >::mag_type Ifpack2::SingletonFilter< MatrixType >::getFrobeniusNorm ( ) const
virtual

Returns the Frobenius norm of the matrix.

Computes and returns the Frobenius norm of the matrix, defined as: \( \|A\|_F = \sqrt{\sum_{i,j} \|\a_{ij}\|^2} \)

template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::apply ( const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  X,
Tpetra::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.
template<class MatrixType >
bool Ifpack2::SingletonFilter< MatrixType >::hasTransposeApply ( ) const
virtual

Indicates whether this operator supports applying the adjoint operator.

template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::SolveSingletons ( const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  RHS,
Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  LHS 
)
virtual

Solve the singleton components of the linear system.

template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::CreateReducedRHS ( const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  LHS,
const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  RHS,
Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  ReducedRHS 
)
virtual

Creates a RHS for the reduced singleton-free system.

template<class MatrixType >
void Ifpack2::SingletonFilter< MatrixType >::UpdateLHS ( const Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  ReducedLHS,
Tpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &  LHS 
)
virtual

Updates a full LHS from a reduces LHS.


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