Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | List of all members
Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node > Class Template Referenceabstract

An abstract interface for graphs accessed by rows. More...

#include <Tpetra_RowGraph_decl.hpp>

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

Public Types

Typedefs
typedef LocalOrdinal local_ordinal_type
 The type of local indices in the graph. More...
 
typedef GlobalOrdinal global_ordinal_type
 The type of global indices in the graph. More...
 
typedef Node node_type
 The Kokkos Node type. More...
 

Public Member Functions

virtual ~RowGraph ()
 Destructor (virtual for memory safety of derived classes). More...
 
Graph query methods
virtual Teuchos::RCP< const
Teuchos::Comm< int > > 
getComm () const =0
 The communicator over which this graph is distributed. More...
 
virtual Teuchos::RCP< const
Map< LocalOrdinal,
GlobalOrdinal, Node > > 
getRowMap () const =0
 The Map that describes this graph's distribution of rows over processes. More...
 
virtual Teuchos::RCP< const
Map< LocalOrdinal,
GlobalOrdinal, Node > > 
getColMap () const =0
 The Map that describes this graph's distribution of columns over processes. More...
 
virtual Teuchos::RCP< const
Map< LocalOrdinal,
GlobalOrdinal, Node > > 
getDomainMap () const =0
 The Map associated with the domain of this graph. More...
 
virtual Teuchos::RCP< const
Map< LocalOrdinal,
GlobalOrdinal, Node > > 
getRangeMap () const =0
 The Map associated with the range of this graph. More...
 
virtual Teuchos::RCP< const
Import< LocalOrdinal,
GlobalOrdinal, Node > > 
getImporter () const =0
 This graph's Import object. More...
 
virtual Teuchos::RCP< const
Export< LocalOrdinal,
GlobalOrdinal, Node > > 
getExporter () const =0
 This graph's Export object. More...
 
virtual global_size_t getGlobalNumRows () const =0
 Returns the number of global rows in the graph. More...
 
virtual global_size_t getGlobalNumCols () const =0
 Returns the number of global columns in the graph. More...
 
virtual size_t getLocalNumRows () const =0
 Returns the number of rows owned on the calling node. More...
 
virtual size_t getLocalNumCols () const =0
 Returns the number of columns connected to the locally owned rows of this graph. More...
 
virtual GlobalOrdinal getIndexBase () const =0
 Returns the index base for global indices for this graph. More...
 
virtual global_size_t getGlobalNumEntries () const =0
 Returns the global number of entries in the graph. More...
 
virtual size_t getLocalNumEntries () const =0
 Returns the local number of entries in the graph. More...
 
virtual size_t getNumEntriesInGlobalRow (GlobalOrdinal globalRow) const =0
 Returns the current number of entries on this node in the specified global row. More...
 
virtual size_t getNumEntriesInLocalRow (LocalOrdinal localRow) const =0
 Returns the current number of entries on this node in the specified local row. More...
 
virtual size_t getGlobalMaxNumRowEntries () const =0
 Returns the maximum number of entries across all rows/columns on all nodes. More...
 
virtual size_t getLocalMaxNumRowEntries () const =0
 Returns the maximum number of entries across all rows/columns on this node. More...
 
virtual bool hasColMap () const =0
 Whether the graph has a well-defined column Map. More...
 
virtual bool isLocallyIndexed () const =0
 If graph indices are in the local range, this function returns true. Otherwise, this function returns false. */. More...
 
virtual bool isGloballyIndexed () const =0
 If graph indices are in the global range, this function returns true. Otherwise, this function returns false. */. More...
 
virtual bool isFillComplete () const =0
 Whether fillComplete() has been called (without an intervening resumeFill()). More...
 
Access to entries in a row
virtual void getGlobalRowCopy (const GlobalOrdinal gblRow, nonconst_global_inds_host_view_type &gblColInds, size_t &numColInds) const =0
 Get a copy of the global column indices in a given row of the graph. More...
 
virtual void getLocalRowCopy (const LocalOrdinal lclRow, nonconst_local_inds_host_view_type &lclColInds, size_t &numColInds) const =0
 Get a copy of the local column indices in a given row of the graph. More...
 
virtual bool supportsRowViews () const
 Whether this class implements getLocalRowView() and getGlobalRowView(). More...
 
virtual void getLocalRowView (const LocalOrdinal lclRow, local_inds_host_view_type &lclColInds) const =0
 Get a constant, nonpersisting, locally indexed view of the given row of the graph. More...
 
virtual void getGlobalRowView (const GlobalOrdinal gblRow, global_inds_host_view_type &gblColInds) const =0
 Get a const, non-persisting view of the given global row's global column indices, as a Teuchos::ArrayView. More...
 
Implementation of Packable interface
virtual void pack (const Teuchos::ArrayView< const LocalOrdinal > &exportLIDs, Teuchos::Array< GlobalOrdinal > &exports, const Teuchos::ArrayView< size_t > &numPacketsPerLID, size_t &constantNumPackets) const
 Pack this object's data for Import or Export. More...
 

Detailed Description

template<class LocalOrdinal, class GlobalOrdinal, class Node>
class Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >

An abstract interface for graphs accessed by rows.

This class is to CrsGraph, what RowMatrix is to CrsMatrix. CrsGraph is an implementation of RowGraph.

Template Parameters
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.

Definition at line 37 of file Tpetra_RowGraph_decl.hpp.

Member Typedef Documentation

template<class LocalOrdinal, class GlobalOrdinal, class Node>
typedef LocalOrdinal Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::local_ordinal_type

The type of local indices in the graph.

Definition at line 44 of file Tpetra_RowGraph_decl.hpp.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
typedef GlobalOrdinal Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::global_ordinal_type

The type of global indices in the graph.

Definition at line 46 of file Tpetra_RowGraph_decl.hpp.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
typedef Node Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::node_type

The Kokkos Node type.

Definition at line 48 of file Tpetra_RowGraph_decl.hpp.

Constructor & Destructor Documentation

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::~RowGraph ( )
inlinevirtual

Destructor (virtual for memory safety of derived classes).

Definition at line 75 of file Tpetra_RowGraph_decl.hpp.

Member Function Documentation

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual Teuchos::RCP<const Teuchos::Comm<int> > Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getComm ( ) const
pure virtual

The communicator over which this graph is distributed.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getRowMap ( ) const
pure virtual

The Map that describes this graph's distribution of rows over processes.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getColMap ( ) const
pure virtual

The Map that describes this graph's distribution of columns over processes.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getDomainMap ( ) const
pure virtual

The Map associated with the domain of this graph.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> > Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getRangeMap ( ) const
pure virtual

The Map associated with the range of this graph.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual Teuchos::RCP<const Import<LocalOrdinal,GlobalOrdinal,Node> > Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getImporter ( ) const
pure virtual
template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual Teuchos::RCP<const Export<LocalOrdinal,GlobalOrdinal,Node> > Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getExporter ( ) const
pure virtual
template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual global_size_t Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getGlobalNumRows ( ) const
pure virtual

Returns the number of global rows in the graph.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual global_size_t Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getGlobalNumCols ( ) const
pure virtual

Returns the number of global columns in the graph.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual size_t Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getLocalNumRows ( ) const
pure virtual

Returns the number of rows owned on the calling node.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual size_t Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getLocalNumCols ( ) const
pure virtual

Returns the number of columns connected to the locally owned rows of this graph.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual GlobalOrdinal Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getIndexBase ( ) const
pure virtual

Returns the index base for global indices for this graph.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual global_size_t Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getGlobalNumEntries ( ) const
pure virtual

Returns the global number of entries in the graph.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual size_t Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getLocalNumEntries ( ) const
pure virtual

Returns the local number of entries in the graph.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual size_t Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getNumEntriesInGlobalRow ( GlobalOrdinal  globalRow) const
pure 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.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual size_t Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getNumEntriesInLocalRow ( LocalOrdinal  localRow) const
pure 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.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual size_t Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getGlobalMaxNumRowEntries ( ) const
pure virtual

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

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual size_t Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getLocalMaxNumRowEntries ( ) const
pure virtual

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

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual bool Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::hasColMap ( ) const
pure virtual

Whether the graph has a well-defined column Map.

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual bool Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::isLocallyIndexed ( ) const
pure virtual

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

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual bool Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::isGloballyIndexed ( ) const
pure virtual

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

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual bool Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::isFillComplete ( ) const
pure virtual

Whether fillComplete() has been called (without an intervening resumeFill()).

Implemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual void Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getGlobalRowCopy ( const GlobalOrdinal  gblRow,
nonconst_global_inds_host_view_type &  gblColInds,
size_t &  numColInds 
) const
pure virtual

Get a copy of the global column indices in a given row of the graph.

Given the global index of a row of the graph, get a copy of all the global column indices in that row that the calling process stores.

Parameters
gblRow[in] Global index of the row.
gblColInds[in/out] On output: All the global column indices in that row on the calling process.
numColInds[out] Number of indices in the row on the calling process.
Precondition
getRowMap()->isNodeGlobalElement(gblRow) is true.
gblColInds.size() >= getNumEntriesInGlobalRow(gblRow) is true.
template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual void Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getLocalRowCopy ( const LocalOrdinal  lclRow,
nonconst_local_inds_host_view_type &  lclColInds,
size_t &  numColInds 
) const
pure virtual

Get a copy of the local column indices in a given row of the graph.

Given the local index of a row of the graph, get a copy of all the local column indices in that row that the calling process stores.

Parameters
lclRow[in] Local index of the row.
lclColInds[in/out] On output: All the local column indices in that row on the calling process.
numColInds[out] Number of indices in the row on the calling process.
Precondition
hasColMap() is true.
getRowMap()->isNodeLocalElement(lclRow) is true.
lclColInds.size() >= getNumEntriesInLocalRow(lclRow) is true.
template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual bool Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::supportsRowViews ( ) const
inlinevirtual

Whether this class implements getLocalRowView() and getGlobalRowView().

If subclasses override the default (trivial) implementation of getLocalRowView() and getGlobalRowView(), then they need to override this method as well.

Reimplemented in Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >, and Tpetra::CrsGraph< LO, GO, node_type >.

Definition at line 209 of file Tpetra_RowGraph_decl.hpp.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual void Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getLocalRowView ( const LocalOrdinal  lclRow,
local_inds_host_view_type &  lclColInds 
) const
pure virtual

Get a constant, nonpersisting, locally indexed view of the given row of the graph.

The returned views of the column indices are not guaranteed to persist beyond the lifetime of this. Furthermore, some RowGraph implementations allow changing the values, or the indices and values. Any such changes invalidate the returned views.

This method only gets the entries in the given row that are stored on the calling process. Note that if the graph has an overlapping row Map, it is possible that the calling process does not store all the entries in that row.

Precondition
isLocallyIndexed () && supportsRowViews ()
Postcondition
indices.size () == getNumEntriesInGlobalRow (LocalRow)
Parameters
lclRow[in] Local index of the row.
lclColInds[out] Local indices of the columns in the row. If the given row is not a valid row index on the calling process, then the result has no entries (its size is zero).

Subclasses are expected to implement this method. We would have made this method pure virtual, but that would have broken backwards compatibility, since we added the method at least one major release after introducing this class.

template<class LocalOrdinal, class GlobalOrdinal, class Node>
virtual void Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::getGlobalRowView ( const GlobalOrdinal  gblRow,
global_inds_host_view_type &  gblColInds 
) const
pure virtual

Get a const, non-persisting view of the given global row's global column indices, as a Teuchos::ArrayView.

Parameters
gblRow[in] Global index of the row.
gblColInds[out] Global column indices in the row. If the given row is not a valid row index on the calling process, then the result has no entries (its size is zero).
Precondition
! isLocallyIndexed()
Postcondition
gblColInds.size() == getNumEntriesInGlobalRow(gblRow)

Subclasses are expected to implement this method. We would have made this method pure virtual, but that would have broken backwards compatibility, since we added the method at least one major release after introducing this class.

template<class LocalOrdinal, class GlobalOrdinal, class Node >
void Tpetra::RowGraph< LocalOrdinal, GlobalOrdinal, Node >::pack ( const Teuchos::ArrayView< const LocalOrdinal > &  exportLIDs,
Teuchos::Array< GlobalOrdinal > &  exports,
const Teuchos::ArrayView< size_t > &  numPacketsPerLID,
size_t &  constantNumPackets 
) const
virtual

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