46 #ifndef XPETRA_CRSMATRIXFACTORY_HPP
47 #define XPETRA_CRSMATRIXFACTORY_HPP
53 #ifdef HAVE_XPETRA_TPETRA
54 #include "Xpetra_TpetraCrsMatrix.hpp"
55 #include "Xpetra_TpetraBlockCrsMatrix.hpp"
58 #ifdef HAVE_XPETRA_EPETRA
66 template <
class Scalar,
69 class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
77 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
79 TEUCHOS_TEST_FOR_EXCEPTION(rowMap->lib() ==
UseEpetra, std::logic_error,
80 "Can't create Xpetra::EpetraCrsMatrix with these scalar/LO/GO types");
81 #ifdef HAVE_XPETRA_TPETRA
90 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
92 size_t maxNumEntriesPerRow,
93 const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
96 #ifdef HAVE_XPETRA_TPETRA
106 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
108 const ArrayRCP<const size_t>& NumEntriesPerRowToAlloc,
109 const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
110 #ifdef HAVE_XPETRA_TPETRA
120 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
123 size_t maxNumEntriesPerRow,
124 const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
127 #ifdef HAVE_XPETRA_TPETRA
137 static RCP<CrsMatrix<Scalar, 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) {
140 #ifdef HAVE_XPETRA_TPETRA
153 #ifdef HAVE_XPETRA_TPETRA
154 if (graph->getRowMap()->lib() ==
UseTpetra)
163 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
const Teuchos::RCP<
const CrsGraph<LocalOrdinal, GlobalOrdinal, Node>>& graph,
typename Xpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>::local_matrix_type::values_type& values,
const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
166 #ifdef HAVE_XPETRA_TPETRA
167 if (graph->getRowMap()->lib() ==
UseTpetra)
175 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
180 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null) {
183 #ifdef HAVE_XPETRA_TPETRA
184 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
192 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
197 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null) {
200 #ifdef HAVE_XPETRA_TPETRA
201 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
209 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
215 const Teuchos::RCP<Teuchos::ParameterList>& params) {
218 #ifdef HAVE_XPETRA_TPETRA
219 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
227 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
233 const Teuchos::RCP<Teuchos::ParameterList>& params) {
236 #ifdef HAVE_XPETRA_TPETRA
237 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
245 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
249 const Teuchos::RCP<Teuchos::ParameterList>& params = null) {
252 #ifdef HAVE_XPETRA_TPETRA
261 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
267 const Teuchos::RCP<Teuchos::ParameterList>& params = null) {
270 #ifdef HAVE_XPETRA_TPETRA
279 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
287 const Teuchos::RCP<Teuchos::ParameterList>& params = null) {
290 #ifdef HAVE_XPETRA_TPETRA
292 return rcp(
new TpetraCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>(lclMatrix, rowMap, colMap, domainMap, rangeMap, importer, exporter, params));
295 TEUCHOS_TEST_FOR_EXCEPTION(rowMap->lib() ==
UseEpetra, std::logic_error,
"Epetra doesn't support this matrix constructor");
301 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
BuildBlock(
305 LocalOrdinal blockSize) {
308 #ifdef HAVE_XPETRA_TPETRA
313 TEUCHOS_TEST_FOR_EXCEPTION(domainMap->lib() ==
UseEpetra, std::logic_error,
"Epetra doesn't support this matrix constructor");
320 #if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES))
337 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
340 #ifdef HAVE_XPETRA_TPETRA
350 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
const RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node>>& rowMap,
size_t maxNumEntriesPerRow,
const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
353 #ifdef HAVE_XPETRA_TPETRA
364 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node>>& rowMap,
const ArrayRCP<const size_t>& NumEntriesPerRowToAlloc,
const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
367 #ifdef HAVE_XPETRA_TPETRA
379 static RCP<CrsMatrix<Scalar, 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) {
382 #ifdef HAVE_XPETRA_TPETRA
394 static RCP<CrsMatrix<Scalar, 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) {
397 #ifdef HAVE_XPETRA_TPETRA
412 #ifdef HAVE_XPETRA_TPETRA
413 if (graph->getRowMap()->lib() ==
UseTpetra)
417 if (graph->getRowMap()->lib() ==
UseEpetra)
424 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
const Teuchos::RCP<
const CrsGraph<LocalOrdinal, GlobalOrdinal, Node>>& graph,
typename Xpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>::local_matrix_type::values_type& values,
const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
427 #ifdef HAVE_XPETRA_TPETRA
428 if (graph->getRowMap()->lib() ==
UseTpetra)
437 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
442 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null) {
445 #ifdef HAVE_XPETRA_TPETRA
446 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
450 if (sourceMatrix->getRowMap()->lib() ==
UseEpetra)
457 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
462 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null) {
465 #ifdef HAVE_XPETRA_TPETRA
466 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
470 if (sourceMatrix->getRowMap()->lib() ==
UseEpetra)
477 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
483 const Teuchos::RCP<Teuchos::ParameterList>& params) {
486 #ifdef HAVE_XPETRA_TPETRA
487 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
491 if (sourceMatrix->getRowMap()->lib() ==
UseEpetra)
498 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
504 const Teuchos::RCP<Teuchos::ParameterList>& params) {
507 #ifdef HAVE_XPETRA_TPETRA
508 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
512 if (sourceMatrix->getRowMap()->lib() ==
UseEpetra)
518 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
522 const Teuchos::RCP<Teuchos::ParameterList>& params = null) {
525 #ifdef HAVE_XPETRA_TPETRA
536 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
542 const Teuchos::RCP<Teuchos::ParameterList>& params = null) {
545 #ifdef HAVE_XPETRA_TPETRA
556 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
564 const Teuchos::RCP<Teuchos::ParameterList>& params = null) {
567 #ifdef HAVE_XPETRA_TPETRA
569 return rcp(
new TpetraCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>(lclMatrix, rowMap, colMap, domainMap, rangeMap, importer, exporter, params));
572 TEUCHOS_TEST_FOR_EXCEPTION(rowMap->lib() ==
UseEpetra, std::logic_error,
"Epetra doesn't support this matrix constructor");
578 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
BuildBlock(
584 #ifdef HAVE_XPETRA_TPETRA
588 TEUCHOS_TEST_FOR_EXCEPTION(domainMap->lib() ==
UseEpetra, std::logic_error,
"Epetra doesn't support this matrix constructor");
596 #if (defined(HAVE_XPETRA_EPETRA) && !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES))
611 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
614 #ifdef HAVE_XPETRA_TPETRA
618 #ifdef HAVE_XPETRA_EPETRA
625 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
const RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node>>& rowMap,
size_t maxNumEntriesPerRow,
const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
628 #ifdef HAVE_XPETRA_TPETRA
639 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node>>& rowMap,
const ArrayRCP<const size_t>& NumEntriesPerRowToAlloc,
const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
642 #ifdef HAVE_XPETRA_TPETRA
654 static RCP<CrsMatrix<Scalar, 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) {
657 #ifdef HAVE_XPETRA_TPETRA
669 static RCP<CrsMatrix<Scalar, 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) {
672 #ifdef HAVE_XPETRA_TPETRA
687 #ifdef HAVE_XPETRA_TPETRA
688 if (graph->getRowMap()->lib() ==
UseTpetra)
692 if (graph->getRowMap()->lib() ==
UseEpetra)
699 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
const Teuchos::RCP<
const CrsGraph<LocalOrdinal, GlobalOrdinal, Node>>& graph,
typename Xpetra::CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>::local_matrix_type::values_type& values,
const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null) {
702 #ifdef HAVE_XPETRA_TPETRA
703 if (graph->getRowMap()->lib() ==
UseTpetra) {
713 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
718 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null) {
721 #ifdef HAVE_XPETRA_TPETRA
722 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
726 if (sourceMatrix->getRowMap()->lib() ==
UseEpetra)
733 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
738 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null) {
741 #ifdef HAVE_XPETRA_TPETRA
742 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
746 if (sourceMatrix->getRowMap()->lib() ==
UseEpetra)
753 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
759 const Teuchos::RCP<Teuchos::ParameterList>& params) {
762 #ifdef HAVE_XPETRA_TPETRA
763 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
767 if (sourceMatrix->getRowMap()->lib() ==
UseEpetra)
774 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
780 const Teuchos::RCP<Teuchos::ParameterList>& params) {
783 #ifdef HAVE_XPETRA_TPETRA
784 if (sourceMatrix->getRowMap()->lib() ==
UseTpetra)
788 if (sourceMatrix->getRowMap()->lib() ==
UseEpetra)
794 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
798 const Teuchos::RCP<Teuchos::ParameterList>& params = null) {
801 #ifdef HAVE_XPETRA_TPETRA
811 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
Build(
817 const Teuchos::RCP<Teuchos::ParameterList>& params = null) {
820 #ifdef HAVE_XPETRA_TPETRA
832 static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
BuildBlock(
839 #ifdef HAVE_XPETRA_TPETRA
844 TEUCHOS_TEST_FOR_EXCEPTION(domainMap->lib() ==
UseEpetra, std::logic_error,
"Epetra doesn't support this matrix constructor");
853 #define XPETRA_CRSMATRIXFACTORY_SHORT
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, const Export< LocalOrdinal, GlobalOrdinal, Node > &exporter, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &domainMap=Teuchos::null, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap=Teuchos::null, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
Constructor using FusedExport.
static RCP< CrsMatrix< Scalar, 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.
static RCP< CrsMatrix< Scalar, 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::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type &lclMatrix, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=null)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const typename Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type &lclMatrix, 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, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap, const Teuchos::RCP< const Import< LocalOrdinal, GlobalOrdinal, Node >> &importer, const Teuchos::RCP< const Export< LocalOrdinal, GlobalOrdinal, Node >> &exporter, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=null)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, const Export< LocalOrdinal, GlobalOrdinal, Node > &RowExporter, const RCP< const Export< LocalOrdinal, GlobalOrdinal, Node >> DomainExporter, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &domainMap, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap, const Teuchos::RCP< Teuchos::ParameterList > ¶ms)
Constructor using FusedExport.
static RCP< CrsMatrix< Scalar, 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::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type &lclMatrix, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=null)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, const Import< LocalOrdinal, GlobalOrdinal, Node > &RowImporter, const RCP< const Import< LocalOrdinal, GlobalOrdinal, Node >> DomainImporter, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &domainMap, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap, const Teuchos::RCP< Teuchos::ParameterList > ¶ms)
static RCP< CrsMatrix< Scalar, 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.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node >> &graph, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying a previously constructed graph.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node >> &graph, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying a previously constructed graph.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rowMap)
Constructor for empty matrix (intended use is an import/export target - can't insert entries directly...
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, 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 Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
Constructor using FusedImport.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const typename Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type &lclMatrix, 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 > ¶ms=null)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > BuildBlock(const Teuchos::RCP< const Xpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >> &blockGraph, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &domainMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap, LocalOrdinal blockSize)
Build a BlockCrsMatrix.
#define XPETRA_FACTORY_ERROR_IF_EPETRA(lib)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rowMap, const ArrayRCP< const size_t > &NumEntriesPerRowToAlloc, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
static RCP< CrsMatrix< Scalar, 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.
static RCP< CrsMatrix< Scalar, 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 fixed number of entries for each row.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, const Import< LocalOrdinal, GlobalOrdinal, Node > &RowImporter, const RCP< const Import< LocalOrdinal, GlobalOrdinal, Node >> DomainImporter, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &domainMap, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap, const Teuchos::RCP< Teuchos::ParameterList > ¶ms)
Constructor using FusedImport.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node >> &graph, typename Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type::values_type &values, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying a previously constructed graph and values array.
CrsMatrixFactory()
Private constructor. This is a static class.
CrsMatrixFactory()
Private constructor. This is a static class.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node >> &graph, typename Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type::values_type &values, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying a previously constructed graph and values array.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
static RCP< CrsMatrix< Scalar, 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 fixed number of entries for each row.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > BuildBlock(const Teuchos::RCP< const Xpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >> &blockGraph, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &domainMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap, LocalOrdinal blockSize)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const typename Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type &lclMatrix, 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 > ¶ms=null)
CrsMatrixFactory()
Private constructor. This is a static class.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, const Export< LocalOrdinal, GlobalOrdinal, Node > &RowExporter, const RCP< const Export< LocalOrdinal, GlobalOrdinal, Node >> DomainExporter, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &domainMap, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap, const Teuchos::RCP< Teuchos::ParameterList > ¶ms)
Constructor using FusedExport.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, 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 Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
Constructor using FusedImport.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const typename Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type &lclMatrix, 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, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap, const Teuchos::RCP< const Import< LocalOrdinal, GlobalOrdinal, Node >> &importer, const Teuchos::RCP< const Export< LocalOrdinal, GlobalOrdinal, Node >> &exporter, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=null)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, 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 Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rowMap)
Constructor for empty matrix (intended use is an import/export target - can't insert entries directly...
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, const Export< LocalOrdinal, GlobalOrdinal, Node > &exporter, const RCP< Map< LocalOrdinal, GlobalOrdinal, Scalar >> &domainMap=Teuchos::null, const RCP< Map< LocalOrdinal, GlobalOrdinal, Scalar >> &rangeMap=Teuchos::null, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, const Export< LocalOrdinal, GlobalOrdinal, Node > &RowExporter, const RCP< const Export< LocalOrdinal, GlobalOrdinal, Node >> DomainExporter, const RCP< Map< LocalOrdinal, GlobalOrdinal, Scalar >> &domainMap, const RCP< Map< LocalOrdinal, GlobalOrdinal, Scalar >> &rangeMap, const Teuchos::RCP< Teuchos::ParameterList > ¶ms)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rowMap)
Constructor for empty matrix (intended use is an import/export target - can't insert entries directly...
#define XPETRA_FACTORY_END
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, const Export< LocalOrdinal, GlobalOrdinal, Node > &exporter, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &domainMap=Teuchos::null, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap=Teuchos::null, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
Constructor using FusedExport.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node >> &graph, typename Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type::values_type &values, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying a previously constructed graph and values array.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rowMap, const ArrayRCP< const size_t > &NumEntriesPerRowToAlloc, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying (possibly different) number of entries in each row.
Tpetra::KokkosCompat::KokkosSerialWrapperNode EpetraNode
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rowMap, size_t maxNumEntriesPerRow, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying fixed number of entries for each row.
static RCP< CrsMatrix< Scalar, 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::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type &lclMatrix, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=null)
#define XPETRA_MONITOR(funcName)
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rowMap, const ArrayRCP< const size_t > &NumEntriesPerRowToAlloc, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
static RCP< CrsMatrix< Scalar, 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 fixed number of entries for each row.
KokkosSparse::CrsMatrix< impl_scalar_type, LocalOrdinal, execution_space, void, typename local_graph_type::size_type > local_matrix_type
The specialization of Kokkos::CrsMatrix that represents the part of the sparse matrix on each MPI pro...
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >> &sourceMatrix, const Import< LocalOrdinal, GlobalOrdinal, Node > &RowImporter, const RCP< const Import< LocalOrdinal, GlobalOrdinal, Node >> DomainImporter, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &domainMap, const RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap, const Teuchos::RCP< Teuchos::ParameterList > ¶ms)
Constructor using FusedImport.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node >> &graph, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null)
Constructor specifying a previously constructed graph.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > BuildBlock(const Teuchos::RCP< const Xpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node >> &blockGraph, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &domainMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node >> &rangeMap, LocalOrdinal blockSize)
Build a BlockCrsMatrix.
static RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const typename Xpetra::CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node >::local_matrix_type &lclMatrix, 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 > ¶ms=null)