Tpetra parallel linear algebra  Version of the Day
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 <Teuchos_Describable.hpp>
46 #include <Kokkos_DefaultNode.hpp>
47 
48 #include "Tpetra_ConfigDefs.hpp"
49 #include "Tpetra_Map.hpp"
50 #include "Tpetra_Import.hpp"
51 #include "Tpetra_Export.hpp"
52 #include "Tpetra_Packable.hpp"
53 
54 
55 namespace Tpetra {
56 
69  template <class LocalOrdinal = ::Tpetra::Details::DefaultTypes::local_ordinal_type,
70  class GlobalOrdinal = ::Tpetra::Details::DefaultTypes::global_ordinal_type,
72  class RowGraph :
73  virtual public Teuchos::Describable,
74  public Packable<GlobalOrdinal, LocalOrdinal> {
75  public:
77 
78  typedef LocalOrdinal local_ordinal_type;
81  typedef GlobalOrdinal global_ordinal_type;
83  typedef Node node_type;
85 
87  virtual ~RowGraph() {};
88 
90 
91 
93  virtual Teuchos::RCP<const Teuchos::Comm<int> >
94  getComm () const = 0;
95 
97  virtual Teuchos::RCP<Node> getNode () const = 0;
98 
100  virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
101  getRowMap () const = 0;
102 
104  virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
105  getColMap () const = 0;
106 
108  virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
109  getDomainMap () const = 0;
110 
112  virtual Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
113  getRangeMap () const = 0;
114 
116  virtual Teuchos::RCP<const Import<LocalOrdinal,GlobalOrdinal,Node> >
117  getImporter () const = 0;
118 
120  virtual Teuchos::RCP<const Export<LocalOrdinal,GlobalOrdinal,Node> >
121  getExporter () const = 0;
122 
124  virtual global_size_t getGlobalNumRows() const = 0;
125 
127  virtual global_size_t getGlobalNumCols() const = 0;
128 
130  virtual size_t getNodeNumRows() const = 0;
131 
133  virtual size_t getNodeNumCols() const = 0;
134 
136  virtual GlobalOrdinal getIndexBase() const = 0;
137 
139  virtual global_size_t getGlobalNumEntries() const = 0;
140 
142  virtual size_t getNodeNumEntries() const = 0;
143 
145 
146  virtual size_t getNumEntriesInGlobalRow(GlobalOrdinal globalRow) const = 0;
147 
149 
150  virtual size_t getNumEntriesInLocalRow(LocalOrdinal localRow) const = 0;
151 
153  virtual global_size_t getGlobalNumDiags() const = 0;
154 
156  virtual size_t getNodeNumDiags() const = 0;
157 
159  virtual size_t getGlobalMaxNumRowEntries() const = 0;
160 
162  virtual size_t getNodeMaxNumRowEntries() const = 0;
163 
165  virtual bool hasColMap() const = 0;
166 
168  virtual bool isLowerTriangular() const = 0;
169 
171  virtual bool isUpperTriangular() const = 0;
172 
174  virtual bool isLocallyIndexed() const = 0;
175 
177  virtual bool isGloballyIndexed() const = 0;
178 
180  virtual bool isFillComplete() const = 0;
181 
183 
185 
187 
196  virtual void
197  getGlobalRowCopy (GlobalOrdinal GlobalRow,
198  const Teuchos::ArrayView<GlobalOrdinal> &Indices,
199  size_t &NumIndices) const = 0;
200 
202 
211  virtual void
212  getLocalRowCopy (LocalOrdinal LocalRow,
213  const Teuchos::ArrayView<LocalOrdinal> &Indices,
214  size_t &NumIndices) const = 0;
215 
217 
219 
221  virtual void
222  pack (const Teuchos::ArrayView<const LocalOrdinal>& exportLIDs,
223  Teuchos::Array<GlobalOrdinal>& exports,
224  const Teuchos::ArrayView<size_t>& numPacketsPerLID,
225  size_t& constantNumPackets,
226  Distributor& distor) const;
228  }; // class RowGraph
229 } // namespace Tpetra
230 
231 #endif // TPETRA_ROWGRAPH_DECL_HPP
virtual bool hasColMap() const =0
Indicates whether the graph has a well-defined column map.
virtual ~RowGraph()
Destructor (virtual for memory safety of derived classes).
Namespace Tpetra contains the class and methods constituting the Tpetra library.
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 GlobalOrdinal getIndexBase() const =0
Returns the index base for global indices for this graph.
KokkosClassic::DefaultNode::DefaultNodeType node_type
Default value of Node template parameter.
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 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.
int local_ordinal_type
Default value of LocalOrdinal template parameter.
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 isFillComplete() const =0
Whether fillComplete() has been called (without an intervening resumeFill()).
virtual bool isLowerTriangular() const =0
Indicates whether the graph is lower triangular.
size_t global_size_t
Global size_t object.
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.
virtual Teuchos::RCP< Node > getNode() const =0
The Kokkos Node instance with which this object was created.
virtual bool isUpperTriangular() const =0
Indicates whether the graph is upper triangular.
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 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 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...
virtual void getGlobalRowCopy(GlobalOrdinal GlobalRow, const Teuchos::ArrayView< GlobalOrdinal > &Indices, size_t &NumIndices) const =0
Extract a list of entries in a specified global row of the graph. Put into pre-allocated storage...
Abstract base class for sources of an Import or Export, that also know how to pack themselves...
virtual global_size_t getGlobalNumDiags() const =0
Returns the number of global diagonal entries, based on global row/column index comparisons.
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.
virtual size_t getNodeNumDiags() const =0
Returns the number of local diagonal entries, based on global row/column index comparisons.
virtual void getLocalRowCopy(LocalOrdinal LocalRow, const Teuchos::ArrayView< LocalOrdinal > &Indices, size_t &NumIndices) const =0
Extract a list of entries in a specified local row of the graph. Put into storage allocated by callin...