//! Constructor specifying (possibly different) number of entries in each row. static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps> > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, const ArrayRCP< const size_t > &NumEntriesPerRowToAlloc, ProfileType pftype = Xpetra::DynamicProfile, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) { #ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp( new TpetraCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps>(rowMap, NumEntriesPerRowToAlloc, pftype, plist) ); #endif XPETRA_FACTORY_ERROR_IF_EPETRA(rowMap->lib()); XPETRA_FACTORY_END; }
//! Constructor specifying column Map and fixed number of entries for each row. static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps> > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rowMap, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &colMap, size_t maxNumEntriesPerRow, ProfileType pftype=DynamicProfile, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); #ifdef HAVE_XPETRA_TPETRA if (rowMap->lib() == UseTpetra) return rcp( new TpetraCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps>(rowMap, colMap, maxNumEntriesPerRow, pftype, plist) ); #endif XPETRA_FACTORY_ERROR_IF_EPETRA(rowMap->lib()); XPETRA_FACTORY_END; }
static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps> > Build(const Teuchos::RCP< const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps > > &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>& params = Teuchos::null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); #ifdef HAVE_XPETRA_TPETRA if (sourceMatrix->getRowMap()->lib() == UseTpetra) return rcp( new TpetraCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps>(sourceMatrix,exporter,domainMap,rangeMap,params)); #endif XPETRA_FACTORY_ERROR_IF_EPETRA(sourceMatrix->getRowMap()->lib()); XPETRA_FACTORY_END; }
//! Constructor specifying a previously constructed graph. static RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps> > Build(const Teuchos::RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node, LocalMatOps > > &graph, const Teuchos::RCP< Teuchos::ParameterList > &plist=Teuchos::null) { XPETRA_MONITOR("CrsMatrixFactory::Build"); #ifdef HAVE_XPETRA_TPETRA if (graph->getRowMap()->lib() == UseTpetra) return rcp( new TpetraCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node, LocalMatOps>(graph, plist) ); #endif XPETRA_FACTORY_ERROR_IF_EPETRA(graph->getRowMap()->lib()); XPETRA_FACTORY_END; }
//! Set multi-vector values from array of pointers using Teuchos memory management classes. (copy). static Teuchos::RCP<MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &map, const Teuchos::ArrayView< const Teuchos::ArrayView< const Scalar > > &ArrayOfPtrs, size_t NumVectors) { XPETRA_MONITOR("MultiVectorFactory::Build"); #ifdef HAVE_XPETRA_TPETRA if (map->lib() == UseTpetra) return rcp( new TpetraMultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> (map, ArrayOfPtrs, NumVectors) ); #endif XPETRA_FACTORY_ERROR_IF_EPETRA(map->lib()); XPETRA_FACTORY_END; }
//! Constructor specifying the number of non-zeros for all rows. static RCP<Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node> > Build(const Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node> > &map, bool zeroOut=true) { XPETRA_MONITOR("VectorFactory::Build"); #ifdef HAVE_XPETRA_TPETRA if (map->lib() == UseTpetra) return rcp( new TpetraVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> (map, zeroOut) ); #endif XPETRA_FACTORY_ERROR_IF_EPETRA(map->lib()); XPETRA_FACTORY_END; }
//! Constructor specifying the number of non-zeros for all rows. static RCP<Export<LocalOrdinal, GlobalOrdinal, Node> > Build(const RCP<const Map<LocalOrdinal, GlobalOrdinal, Node> > &source, const RCP<const Map<LocalOrdinal, GlobalOrdinal, Node> > &target) { XPETRA_MONITOR("ExportFactory::Build"); TEUCHOS_TEST_FOR_EXCEPTION(source->lib() != target->lib(), Xpetra::Exceptions::RuntimeError, ""); #ifdef HAVE_XPETRA_TPETRA if (source->lib() == UseTpetra) return rcp( new TpetraExport<LocalOrdinal, GlobalOrdinal, Node>(source, target)); #endif XPETRA_FACTORY_ERROR_IF_EPETRA(source->lib()); XPETRA_FACTORY_END; }
//! Constructor specifying the maps (and indirectly the used LINALG library (Tpetra vs Epetra)) static Teuchos::RCP<MapExtractorClass> Build(const Teuchos::RCP<const MapClass>& fullmap, const std::vector<Teuchos::RCP<const MapClass> >& maps) { #ifdef HAVE_XPETRA_TPETRA const Teuchos::RCP<const TpetraMapClass> &tMap = Teuchos::rcp_dynamic_cast<const TpetraMapClass>(fullmap); if (tMap != null) { Teuchos::RCP<TpetraMapExtractorClass> tMapExtractor = Teuchos::rcp(new TpetraMapExtractorClass(tMap,maps)); return Teuchos::rcp_dynamic_cast<MapExtractorClass>(tMapExtractor); } #endif XPETRA_FACTORY_ERROR_IF_EPETRA(fullmap->lib()); XPETRA_FACTORY_END; }