Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Tpetra_RowGraph_decl.hpp
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Tpetra: Templated Linear Algebra Services Package
5 // Copyright (2008) Sandia Corporation
6 //
7 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8 // the U.S. Government retains certain rights in this software.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38 //
39 // ************************************************************************
40 // @HEADER
41 
42 #ifndef TPETRA_ROWGRAPH_DECL_HPP
43 #define TPETRA_ROWGRAPH_DECL_HPP
44 
45 #include "Tpetra_RowGraph_fwd.hpp"
46 #include "Tpetra_Map.hpp"
47 #include "Tpetra_Import.hpp"
48 #include "Tpetra_Export.hpp"
49 #include "Tpetra_Packable.hpp"
50 #include "Teuchos_Describable.hpp"
51 
52 namespace Tpetra {
53 
66  template <class LocalOrdinal,
67  class GlobalOrdinal,
68  class Node>
69  class RowGraph :
70  virtual public Teuchos::Describable,
71  public Packable<GlobalOrdinal, LocalOrdinal> {
72  public:
74 
75  typedef LocalOrdinal local_ordinal_type;
78  typedef GlobalOrdinal global_ordinal_type;
80  typedef Node node_type;
82 
84  virtual ~RowGraph() {};
85 
87 
88 
90  virtual Teuchos::RCP<const Teuchos::Comm<int> >
91  getComm () const = 0;
92 
93 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
94  virtual TPETRA_DEPRECATED Teuchos::RCP<Node> getNode () const = 0;
96 #endif // TPETRA_ENABLE_DEPRECATED_CODE
97 
99  virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
100  getRowMap () const = 0;
101 
103  virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
104  getColMap () const = 0;
105 
107  virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
108  getDomainMap () const = 0;
109 
111  virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
112  getRangeMap () const = 0;
113 
115  virtual Teuchos::RCP<const Import<LocalOrdinal,GlobalOrdinal,Node> >
116  getImporter () const = 0;
117 
119  virtual Teuchos::RCP<const Export<LocalOrdinal,GlobalOrdinal,Node> >
120  getExporter () const = 0;
121 
123  virtual global_size_t getGlobalNumRows() const = 0;
124 
126  virtual global_size_t getGlobalNumCols() const = 0;
127 
129  virtual size_t getNodeNumRows() const = 0;
130 
132  virtual size_t getNodeNumCols() const = 0;
133 
135  virtual GlobalOrdinal getIndexBase() const = 0;
136 
138  virtual global_size_t getGlobalNumEntries() const = 0;
139 
141  virtual size_t getNodeNumEntries() const = 0;
142 
144 
145  virtual size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const = 0;
146 
148 
149  virtual size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const = 0;
150 
152  virtual size_t getGlobalMaxNumRowEntries() const = 0;
153 
155  virtual size_t getNodeMaxNumRowEntries() const = 0;
156 
158  virtual bool hasColMap() const = 0;
159 
161  virtual bool isLocallyIndexed() const = 0;
162 
164  virtual bool isGloballyIndexed() const = 0;
165 
167  virtual bool isFillComplete() const = 0;
168 
169 #ifdef TPETRA_ENABLE_DEPRECATED_CODE
170  virtual global_size_t TPETRA_DEPRECATED getGlobalNumDiags () const = 0;
176 
181  virtual size_t TPETRA_DEPRECATED getNodeNumDiags () const = 0;
182 
193  virtual bool TPETRA_DEPRECATED isLowerTriangular () const = 0;
194 
205  virtual bool TPETRA_DEPRECATED isUpperTriangular () const = 0;
206 #endif // TPETRA_ENABLE_DEPRECATED_CODE
207 
209 
211 
227  virtual void
228  getGlobalRowCopy (GlobalOrdinal gblRow,
229  const Teuchos::ArrayView<GlobalOrdinal>& gblColInds,
230  size_t& numColInds) const = 0;
231 
248  virtual void
249  getLocalRowCopy (LocalOrdinal lclRow,
250  const Teuchos::ArrayView<LocalOrdinal>& lclColInds,
251  size_t& numColInds) const = 0;
252 
259  virtual bool supportsRowViews () const {
260  return false;
261  }
262 
290  virtual void
291  getLocalRowView (const LocalOrdinal lclRow,
292  Teuchos::ArrayView<const LocalOrdinal>& lclColInds) const;
293 
309  virtual void
310  getGlobalRowView (const GlobalOrdinal gblRow,
311  Teuchos::ArrayView<const GlobalOrdinal>& gblColInds) const;
312 
314 
316 
318  virtual void
319  pack (const Teuchos::ArrayView<const LocalOrdinal>& exportLIDs,
320  Teuchos::Array<GlobalOrdinal>& exports,
321  const Teuchos::ArrayView<size_t>& numPacketsPerLID,
322  size_t& constantNumPackets,
323  Distributor& distor) const;
325  }; // class RowGraph
326 } // namespace Tpetra
327 
328 #endif // TPETRA_ROWGRAPH_DECL_HPP
virtual bool hasColMap() const =0
Whether the graph has a well-defined column Map.
virtual ~RowGraph()
Destructor (virtual for memory safety of derived classes).
virtual size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const =0
Returns the current number of entries on this node in the specified local row.
An abstract interface for graphs accessed by rows.
virtual void getGlobalRowView(const GlobalOrdinal gblRow, Teuchos::ArrayView< const GlobalOrdinal > &gblColInds) const
Get a const, non-persisting view of the given global row&#39;s global column indices, as a Teuchos::Array...
virtual GlobalOrdinal getIndexBase() const =0
Returns the index base for global indices for this graph.
virtual void getGlobalRowCopy(GlobalOrdinal gblRow, const Teuchos::ArrayView< GlobalOrdinal > &gblColInds, size_t &numColInds) const =0
Get a copy of the global column indices in a given row of the graph.
virtual size_t getNodeNumCols() const =0
Returns the number of columns connected to the locally owned rows of this graph.
GlobalOrdinal global_ordinal_type
The type of global indices in the graph.
virtual size_t getNodeNumEntries() const =0
Returns the local number of entries in the graph.
virtual void getLocalRowCopy(LocalOrdinal lclRow, const Teuchos::ArrayView< LocalOrdinal > &lclColInds, size_t &numColInds) const =0
Get a copy of the local column indices in a given row of the graph.
virtual Teuchos::RCP< const Import< LocalOrdinal, GlobalOrdinal, Node > > getImporter() const =0
This graph&#39;s Import object.
virtual size_t getNodeNumRows() const =0
Returns the number of rows owned on the calling node.
virtual size_t getNodeMaxNumRowEntries() const =0
Returns the maximum number of entries across all rows/columns on this node.
virtual Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getColMap() const =0
The Map that describes this graph&#39;s distribution of columns over processes.
virtual Teuchos::RCP< const Export< LocalOrdinal, GlobalOrdinal, Node > > getExporter() const =0
This graph&#39;s Export object.
virtual bool supportsRowViews() const
Whether this class implements getLocalRowView() and getGlobalRowView().
Forward declaration of Tpetra::RowGraph.
virtual bool isFillComplete() const =0
Whether fillComplete() has been called (without an intervening resumeFill()).
size_t global_size_t
Global size_t object.
virtual void pack(const Teuchos::ArrayView< const LocalOrdinal > &exportLIDs, Teuchos::Array< GlobalOrdinal > &exports, const Teuchos::ArrayView< size_t > &numPacketsPerLID, size_t &constantNumPackets, Distributor &distor) const
Pack this object&#39;s data for Import or Export.
virtual Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap() const =0
The Map associated with the range of this graph.
virtual global_size_t getGlobalNumRows() const =0
Returns the number of global rows in the graph.
virtual size_t getGlobalMaxNumRowEntries() const =0
Returns the maximum number of entries across all rows/columns on all nodes.
virtual global_size_t getGlobalNumCols() const =0
Returns the number of global columns in the graph.
virtual Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getRowMap() const =0
The Map that describes this graph&#39;s distribution of rows over processes.
Sets up and executes a communication plan for a Tpetra DistObject.
CrsGraphType::global_ordinal_type getGlobalNumDiags(const CrsGraphType &G)
Number of populated diagonal entries in the given sparse graph, over all processes in the graph&#39;s (MP...
virtual size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const =0
Returns the current number of entries on this node in the specified global row.
virtual bool isGloballyIndexed() const =0
If graph indices are in the global range, this function returns true. Otherwise, this function return...
LocalOrdinal local_ordinal_type
The type of local indices in the graph.
virtual void getLocalRowView(const LocalOrdinal lclRow, Teuchos::ArrayView< const LocalOrdinal > &lclColInds) const
Get a constant, nonpersisting, locally indexed view of the given row of the graph.
virtual Teuchos::RCP< const Teuchos::Comm< int > > getComm() const =0
The communicator over which this graph is distributed.
Node node_type
The Kokkos Node type.
virtual bool isLocallyIndexed() const =0
If graph indices are in the local range, this function returns true. Otherwise, this function returns...
Declaration of Tpetra::Packable.
Abstract base class for objects that can be the source of an Import or Export operation, and that also know how to pack their data to send to the target object.
virtual global_size_t getGlobalNumEntries() const =0
Returns the global number of entries in the graph.
virtual Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap() const =0
The Map associated with the domain of this graph.