Xpetra Version of the Day
Loading...
Searching...
No Matches
Xpetra_MultiVectorFactory_def.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_MULTIVECTORFACTORY_DEF_HPP
11#define XPETRA_MULTIVECTORFACTORY_DEF_HPP
12
14
15#include "Xpetra_BlockedMultiVector.hpp"
16
17#include "Xpetra_BlockedMap.hpp"
18
19namespace Xpetra {
20
21template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
25 size_t NumVectors,
26 bool zeroOut) {
27 XPETRA_MONITOR("MultiVectorFactory::Build");
28
30 Teuchos::rcp_dynamic_cast<const BlockedMap<LocalOrdinal, GlobalOrdinal, Node>>(map);
31
32 if (!bmap.is_null()) {
33 return rcp(new Xpetra::BlockedMultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>(bmap, NumVectors, zeroOut));
34 }
35
36 if (map->lib() == UseTpetra) {
37 return rcp(new TpetraMultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>(map, NumVectors, zeroOut));
38 }
39
41 TEUCHOS_UNREACHABLE_RETURN(Teuchos::null);
42}
43
44template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
49 size_t NumVectors) {
50 XPETRA_MONITOR("MultiVectorFactory::Build");
51
52 if (map->lib() == UseTpetra) {
53 return rcp(new TpetraMultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>(map, ArrayOfPtrs, NumVectors));
54 }
55
57}
58
59template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
63 Teuchos::DataAccess copyOrView) {
64 XPETRA_MONITOR("MultiVectorFactory::Build");
65
66 if (source->getMap()->lib() == UseTpetra) {
67 return rcp(new TpetraMultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>(*source, copyOrView));
68 }
69
71}
72
73} // namespace Xpetra
74
75#endif
#define XPETRA_MONITOR(funcName)
#define XPETRA_FACTORY_END
bool is_null() const
static Teuchos::RCP< MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &map, size_t NumVectors, bool zeroOut=true)
Constructor specifying the number of non-zeros for all rows.
#define TEUCHOS_UNREACHABLE_RETURN(dummyReturnVal)