46 #ifndef XPETRA_CRSGRAPHFACTORY_HPP 47 #define XPETRA_CRSGRAPHFACTORY_HPP 53 #ifdef HAVE_XPETRA_TPETRA 54 #include "Xpetra_TpetraCrsGraph.hpp" 57 #ifdef HAVE_XPETRA_EPETRA 65 template <
class LocalOrdinal,
75 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
78 TEUCHOS_TEST_FOR_EXCEPTION(rowMap->lib() ==
UseEpetra, std::logic_error,
79 "Can't create Xpetra::EpetraCrsMatrix with these scalar/LO/GO types");
80 #ifdef HAVE_XPETRA_TPETRA 89 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
93 #ifdef HAVE_XPETRA_TPETRA 100 TEUCHOS_UNREACHABLE_RETURN(null);
104 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
107 size_t maxNumEntriesPerRow,
108 const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) {
111 #ifdef HAVE_XPETRA_TPETRA 118 TEUCHOS_UNREACHABLE_RETURN(null);
123 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
126 const ArrayRCP< const size_t > &NumEntriesPerRowToAlloc,
127 const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) {
130 #ifdef HAVE_XPETRA_TPETRA 137 TEUCHOS_UNREACHABLE_RETURN(null);
142 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
147 const RCP<Teuchos::ParameterList>& params = Teuchos::null) {
148 #ifdef HAVE_XPETRA_TPETRA 149 if (sourceGraph->getRowMap()->lib() ==
UseTpetra)
155 TEUCHOS_UNREACHABLE_RETURN(null);
160 #ifdef HAVE_XPETRA_KOKKOS_REFACTOR 161 #ifdef HAVE_XPETRA_TPETRA 162 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
186 const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) {
217 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
218 Build(
const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rowMap,
219 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& colMap,
221 const Teuchos::RCP<Teuchos::ParameterList>& params) {
225 return rcp(
new TpetraCrsGraph<LocalOrdinal, GlobalOrdinal, Node>(rowMap,
257 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
259 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rowMap,
260 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& colMap,
261 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& domainMap = Teuchos::null,
262 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rangeMap = Teuchos::null,
263 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null) {
267 return rcp(
new TpetraCrsGraph<LocalOrdinal, GlobalOrdinal, Node>(lclGraph,
298 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
301 const Teuchos::ArrayRCP<size_t>& rowPointers,
302 const Teuchos::ArrayRCP<LocalOrdinal>& columnIndices,
303 const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) {
319 #if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES)) 334 static RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
338 #ifdef HAVE_XPETRA_TPETRA 342 #ifdef HAVE_XPETRA_EPETRA 349 static RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
353 #ifdef HAVE_XPETRA_TPETRA 362 TEUCHOS_UNREACHABLE_RETURN(null);
365 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
369 #ifdef HAVE_XPETRA_TPETRA 378 TEUCHOS_UNREACHABLE_RETURN(null);
382 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
385 size_t maxNumEntriesPerRow,
386 const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) {
389 #ifdef HAVE_XPETRA_TPETRA 397 TEUCHOS_UNREACHABLE_RETURN(null);
402 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
407 const RCP<Teuchos::ParameterList>& params = Teuchos::null) {
408 #ifdef HAVE_XPETRA_TPETRA 409 if (sourceGraph->getRowMap()->lib() ==
UseTpetra)
412 if (sourceGraph->getRowMap()->lib() ==
UseEpetra)
416 TEUCHOS_UNREACHABLE_RETURN(null);
419 #ifdef HAVE_XPETRA_KOKKOS_REFACTOR 420 #ifdef HAVE_XPETRA_TPETRA 421 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
445 const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) {
476 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
477 Build(
const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rowMap,
478 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& colMap,
480 const Teuchos::RCP<Teuchos::ParameterList>& params) {
484 return rcp(
new TpetraCrsGraph<LocalOrdinal, GlobalOrdinal, Node>(rowMap,
516 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
518 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rowMap,
519 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& colMap,
520 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& domainMap = Teuchos::null,
521 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rangeMap = Teuchos::null,
522 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null) {
526 return rcp(
new TpetraCrsGraph<LocalOrdinal, GlobalOrdinal, Node>(lclGraph,
557 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
560 const Teuchos::ArrayRCP<size_t>& rowPointers,
561 const Teuchos::ArrayRCP<LocalOrdinal>& columnIndices,
562 const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) {
579 #if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES)) 594 static RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
598 #ifdef HAVE_XPETRA_TPETRA 602 #ifdef HAVE_XPETRA_EPETRA 609 static RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
613 #ifdef HAVE_XPETRA_TPETRA 622 TEUCHOS_UNREACHABLE_RETURN(null);
625 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
629 #ifdef HAVE_XPETRA_TPETRA 638 TEUCHOS_UNREACHABLE_RETURN(null);
642 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
645 size_t maxNumEntriesPerRow,
646 const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) {
649 #ifdef HAVE_XPETRA_TPETRA 657 TEUCHOS_UNREACHABLE_RETURN(null);
661 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
666 const RCP<Teuchos::ParameterList>& params = Teuchos::null) {
667 #ifdef HAVE_XPETRA_TPETRA 668 if (sourceGraph->getRowMap()->lib() ==
UseTpetra)
671 if (sourceGraph->getRowMap()->lib() ==
UseTpetra)
675 TEUCHOS_UNREACHABLE_RETURN(null);
679 #ifdef HAVE_XPETRA_KOKKOS_REFACTOR 680 #ifdef HAVE_XPETRA_TPETRA 681 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
705 const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) {
736 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
737 Build(
const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rowMap,
738 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& colMap,
740 const Teuchos::RCP<Teuchos::ParameterList>& params) {
744 return rcp(
new TpetraCrsGraph<LocalOrdinal, GlobalOrdinal, Node>(rowMap,
776 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
778 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rowMap,
779 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& colMap,
780 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& domainMap = Teuchos::null,
781 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rangeMap = Teuchos::null,
782 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null) {
786 return rcp(
new TpetraCrsGraph<LocalOrdinal, GlobalOrdinal, Node>(lclGraph,
817 static Teuchos::RCP<CrsGraph<LocalOrdinal, GlobalOrdinal, Node> >
820 const Teuchos::ArrayRCP<size_t>& rowPointers,
821 const Teuchos::ArrayRCP<LocalOrdinal>& columnIndices,
822 const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) {
839 #define XPETRA_CRSGRAPHFACTORY_SHORT 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 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 > ¶ms=Teuchos::null)
Constructor using fused import.
static RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &map, size_t maxNumEntriesPerRow)
#define XPETRA_FACTORY_ERROR_IF_EPETRA(lib)
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)
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 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 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 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 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 > ¶ms=Teuchos::null)
Constructor using fused import.
static 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 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 ArrayRCP< const size_t > &NumEntriesPerRowToAlloc, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
#define XPETRA_FACTORY_END
static RCP< CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &map, size_t maxNumEntriesPerRow)
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 > ¶ms=Teuchos::null)
Constructor using fused import.
CrsGraphFactory()
Private constructor. This is a static class.
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.
#define XPETRA_MONITOR(funcName)
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 > > &map, size_t maxNumEntriesPerRow)
Constructor specifying the number of non-zeros for all rows.
CrsGraphFactory()
Private constructor. This is a static class.
CrsGraphFactory()
Private constructor. This is a static class.
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.