Xpetra
Version of the Day
Toggle main menu visibility
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
13
#include "
Xpetra_MultiVectorFactory_decl.hpp
"
14
15
#include "Xpetra_BlockedMultiVector.hpp"
16
17
#include "Xpetra_BlockedMap.hpp"
18
19
namespace
Xpetra
{
20
21
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
22
Teuchos::RCP<MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>>
23
MultiVectorFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::
24
Build
(
const
Teuchos::RCP
<
const
Map<LocalOrdinal, GlobalOrdinal, Node>
>& map,
25
size_t
NumVectors,
26
bool
zeroOut) {
27
XPETRA_MONITOR
(
"MultiVectorFactory::Build"
);
28
29
RCP<const BlockedMap<LocalOrdinal, GlobalOrdinal, Node>
> bmap =
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
40
XPETRA_FACTORY_END
;
41
TEUCHOS_UNREACHABLE_RETURN
(Teuchos::null);
42
}
43
44
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
45
Teuchos::RCP<MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
>
46
MultiVectorFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::
47
Build
(
const
Teuchos::RCP
<
const
Map<LocalOrdinal, GlobalOrdinal, Node>
>& map,
48
const
Teuchos::ArrayView
<
const
Teuchos::ArrayView<const Scalar>
>& ArrayOfPtrs,
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
56
XPETRA_FACTORY_END
;
57
}
58
59
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
60
Teuchos::RCP<MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
>
61
MultiVectorFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::
62
Build
(
const
Teuchos::RCP
<
const
MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
>& source,
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
70
XPETRA_FACTORY_END
;
71
}
72
73
}
// namespace Xpetra
74
75
#endif
XPETRA_MONITOR
#define XPETRA_MONITOR(funcName)
XPETRA_FACTORY_END
#define XPETRA_FACTORY_END
Definition
Xpetra_Exceptions.hpp:33
Xpetra_MultiVectorFactory_decl.hpp
Teuchos::ArrayView
Teuchos::RCP
Teuchos::RCP::is_null
bool is_null() const
Xpetra::Map
Definition
Xpetra_Map_decl.hpp:35
Xpetra::MultiVectorFactory::Build
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.
Definition
Xpetra_MultiVectorFactory_def.hpp:24
Xpetra::MultiVector
Definition
Xpetra_MultiVector_decl.hpp:45
Xpetra::TpetraMultiVector
Definition
Xpetra_TpetraMultiVector_decl.hpp:50
TEUCHOS_UNREACHABLE_RETURN
#define TEUCHOS_UNREACHABLE_RETURN(dummyReturnVal)
Teuchos::DataAccess
DataAccess
Xpetra
Xpetra namespace
Definition
Xpetra_BlockedCrsMatrix_decl.hpp:52
Xpetra::rcp
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Xpetra::UseTpetra
@ UseTpetra
Definition
Xpetra_Map_decl.hpp:27
src
MultiVector
Xpetra_MultiVectorFactory_def.hpp
Generated by
1.17.0