Xpetra Version of the Day
Loading...
Searching...
No Matches
Xpetra_CrsGraphFactory.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Xpetra: A linear algebra interface package
4//
5// Copyright 2012 NTESS and the Xpetra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef XPETRA_CRSGRAPHFACTORY_HPP
11#define XPETRA_CRSGRAPHFACTORY_HPP
12
13#include "Xpetra_ConfigDefs.hpp"
14
15#include "Xpetra_CrsGraph.hpp"
16
17#include "Xpetra_TpetraCrsGraph.hpp"
18
19#include "Xpetra_Exceptions.hpp"
20
21namespace Xpetra {
22
23template <class LocalOrdinal,
24 class GlobalOrdinal,
25 class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
27 private:
30
31 public:
35 if (rowMap->lib() == UseTpetra)
37
39 }
40
43 Build(const Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>& map, size_t maxNumEntriesPerRow) {
44 XPETRA_MONITOR("CrsGraphFactory::Build");
45
46 if (map->lib() == UseTpetra)
47 return rcp(new TpetraCrsGraph<LocalOrdinal, GlobalOrdinal, Node>(map, maxNumEntriesPerRow));
48
51 }
52
57 size_t maxNumEntriesPerRow,
58 const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
59 XPETRA_MONITOR("CrsGraphFactory::Build");
60
61 if (rowMap->lib() == UseTpetra)
62 return rcp(new TpetraCrsGraph<LocalOrdinal, GlobalOrdinal, Node>(rowMap, colMap, maxNumEntriesPerRow, plist));
63
66 }
67
72 const ArrayRCP<const size_t>& NumEntriesPerRowToAlloc,
73 const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
74 XPETRA_MONITOR("CrsGraphFactory::Build");
75
76 if (rowMap->lib() == UseTpetra)
77 return rcp(new TpetraCrsGraph<LocalOrdinal, GlobalOrdinal, Node>(rowMap, colMap, NumEntriesPerRowToAlloc, plist));
78
81 }
82
87 const RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>& domainMap = Teuchos::null,
88 const RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>& rangeMap = Teuchos::null,
89 const RCP<Teuchos::ParameterList>& params = Teuchos::null) {
90 if (sourceGraph->getRowMap()->lib() == UseTpetra)
91 return rcp(new TpetraCrsGraph<LocalOrdinal, GlobalOrdinal, Node>(sourceGraph, importer, domainMap, rangeMap, params));
92
95 }
96
121 const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
122 XPETRA_MONITOR("CrsMatrixFactory::Build");
123
124 if (rowMap->lib() == UseTpetra)
126 colMap,
127 rowPointers,
128 columnIndices,
129 plist));
130
132 }
133
157 XPETRA_MONITOR("CrsMatrixFactory::Build");
158
159 if (rowMap->lib() == UseTpetra)
161 colMap,
162 lclGraph,
163 params));
164
166 }
167
196 const Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>& domainMap = Teuchos::null,
197 const Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node>>& rangeMap = Teuchos::null,
198 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null) {
199 XPETRA_MONITOR("CrsMatrixFactory::Build");
200
201 if (rowMap->lib() == UseTpetra)
203 rowMap,
204 colMap,
205 domainMap,
206 rangeMap,
207 params));
208
210 }
211
234 const Teuchos::ArrayRCP<size_t>& rowPointers,
235 const Teuchos::ArrayRCP<LocalOrdinal>& columnIndices,
236 const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
237 XPETRA_MONITOR("CrsMatrixFactory::Build");
238
239 if (rowMap->lib() == UseTpetra)
241 colMap,
242 rowPointers,
243 columnIndices,
244 plist));
245
247 }
248};
249
250} // namespace Xpetra
251
252#define XPETRA_CRSGRAPHFACTORY_SHORT
253#endif
#define XPETRA_MONITOR(funcName)
#define XPETRA_FACTORY_END
static Teuchos::RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &colMap, const typename Xpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >::local_graph_type &lclGraph, const Teuchos::RCP< Teuchos::ParameterList > &params)
Constructor specifying column Map and a local (sorted) graph, which the resulting CrsGraph views.
CrsGraphFactory()
Private constructor. This is a static class.
static Teuchos::RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &map, size_t maxNumEntriesPerRow)
Constructor specifying the number of non-zeros for all rows.
static Teuchos::RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &colMap, size_t maxNumEntriesPerRow, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying column Map and number of entries per row.
static Teuchos::RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &colMap, const Teuchos::ArrayRCP< size_t > &rowPointers, const Teuchos::ArrayRCP< LocalOrdinal > &columnIndices, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying column Map and arrays containing the graph in sorted, local ids.
static Teuchos::RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &colMap, const typename Xpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >::local_graph_type::row_map_type &rowPointers, const typename Xpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >::local_graph_type::entries_type::non_const_type &columnIndices, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying column Map and arrays containing the graph in sorted, local ids.
static Teuchos::RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const typename Xpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >::local_graph_type &lclGraph, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &colMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &domainMap=Teuchos::null, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rangeMap=Teuchos::null, const Teuchos::RCP< Teuchos::ParameterList > &params=Teuchos::null)
Constructor specifying column, domain and range maps, and a local (sorted) graph, which the resulting...
static Teuchos::RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > &sourceGraph, const Import< LocalOrdinal, GlobalOrdinal, Node > &importer, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &domainMap=Teuchos::null, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rangeMap=Teuchos::null, const RCP< Teuchos::ParameterList > &params=Teuchos::null)
Constructor using fused import.
static Teuchos::RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap)
Constructor for empty graph (intended use is an import/export target - can't insert entries directly)
static Teuchos::RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &colMap, const ArrayRCP< const size_t > &NumEntriesPerRowToAlloc, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying column Map and number of entries in each row.
KokkosSparse::StaticCrsGraph< LocalOrdinal, Kokkos::LayoutLeft, device_type, void, size_t > local_graph_type
#define TEUCHOS_UNREACHABLE_RETURN(dummyReturnVal)