Tpetra parallel linear algebra Version of the Day
Loading...
Searching...
No Matches
Tpetra_BlockVector_def.hpp
1// @HEADER
2// *****************************************************************************
3// Tpetra: Templated Linear Algebra Services Package
4//
5// Copyright 2008 NTESS and the Tpetra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef TPETRA_BLOCKVECTOR_DEF_HPP
11#define TPETRA_BLOCKVECTOR_DEF_HPP
12
13namespace Tpetra {
14
15template <class Scalar, class LO, class GO, class Node>
19
20template <class Scalar, class LO, class GO, class Node>
25
26template <class Scalar, class LO, class GO, class Node>
30
31template <class Scalar, class LO, class GO, class Node>
37
38template <class Scalar, class LO, class GO, class Node>
41 const map_type& meshMap,
42 const LO blockSize)
45 X_mv.getNumVectors() != 1, std::invalid_argument,
46 "Tpetra::BlockVector: Input MultiVector has "
47 << X_mv.getNumVectors() << " != 1 columns.");
48}
49
50template <class Scalar, class LO, class GO, class Node>
56
57template <class Scalar, class LO, class GO, class Node>
64
65template <class Scalar, class LO, class GO, class Node>
71
72template <class Scalar, class LO, class GO, class Node>
75 Teuchos::RCP<vec_type> vPtr = this->mv_.getVectorNonConst(0);
76 return *vPtr; // shallow copy
77}
78
79template <class Scalar, class LO, class GO, class Node>
82 return ((base_type*)this)->replaceLocalValues(localRowIndex, 0, vals);
83}
84
85template <class Scalar, class LO, class GO, class Node>
88 return ((base_type*)this)->replaceGlobalValues(globalRowIndex, 0, vals);
89}
90
91template <class Scalar, class LO, class GO, class Node>
94 return ((base_type*)this)->sumIntoLocalValues(localRowIndex, 0, vals);
95}
96
97template <class Scalar, class LO, class GO, class Node>
100 return ((base_type*)this)->sumIntoLocalValues(globalRowIndex, 0, vals);
101}
102
103template <class Scalar, class LO, class GO, class Node>
104typename BlockVector<Scalar, LO, GO, Node>::const_little_host_vec_type
106 getLocalBlockHost(const LO localRowIndex, Access::ReadOnlyStruct) const {
107 return ((const base_type*)this)->getLocalBlockHost(localRowIndex, 0, Access::ReadOnly);
108}
109
110template <class Scalar, class LO, class GO, class Node>
111typename BlockVector<Scalar, LO, GO, Node>::little_host_vec_type
113 getLocalBlockHost(const LO localRowIndex, Access::ReadWriteStruct) {
114 return ((base_type*)this)->getLocalBlockHost(localRowIndex, 0, Access::ReadWrite);
115}
116
117template <class Scalar, class LO, class GO, class Node>
118typename BlockVector<Scalar, LO, GO, Node>::little_host_vec_type
120 getLocalBlockHost(const LO localRowIndex, Access::OverwriteAllStruct) {
121 return ((base_type*)this)->getLocalBlockHost(localRowIndex, 0, Access::OverwriteAll);
122}
123
124} // namespace Tpetra
125
126//
127// Explicit instantiation macro
128//
129// Must be expanded from within the Tpetra namespace!
130//
131#define TPETRA_BLOCKVECTOR_INSTANT(S, LO, GO, NODE) \
132 template class BlockVector<S, LO, GO, NODE>;
133
134#endif // TPETRA_BLOCKVECTOR_DEF_HPP
const_little_host_vec_type getLocalBlockHost(const LO localRowIndex, Access::ReadOnlyStruct) const
Get a view of the degrees of freedom at the given mesh point, using a local index.
bool sumIntoGlobalValues(const GO globalRowIndex, const Scalar vals[])
Sum into all values at the given mesh point, using a global index.
bool replaceGlobalValues(const GO globalRowIndex, const Scalar vals[])
Replace all values at the given mesh point, using a global index.
BlockVector()
Default constructor.
bool sumIntoLocalValues(const LO localRowIndex, const Scalar vals[])
Sum into all values at the given mesh point, using a local index.
vec_type getVectorView()
Get a Tpetra::Vector that views this BlockVector's data.
bool replaceLocalValues(const LO localRowIndex, const Scalar vals[])
Replace all values at the given mesh point, using a local index.
Struct that holds views of the contents of a CrsMatrix.
A distributed dense vector.
Namespace Tpetra contains the class and methods constituting the Tpetra library.