Xpetra Version of the Day
Loading...
Searching...
No Matches
Xpetra_BlockedVector_decl.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_BLOCKEDVECTOR_DECL_HPP
11#define XPETRA_BLOCKEDVECTOR_DECL_HPP
12
13/* this file is automatically generated - do not edit (see script/interfaces.py) */
14
15#include "Xpetra_ConfigDefs.hpp"
16
19#include "Xpetra_Map_decl.hpp"
20#include "Xpetra_Vector.hpp"
21
22namespace Xpetra {
23
24template <class Scalar,
25 class LocalOrdinal,
26 class GlobalOrdinal,
27 class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
29 : public virtual Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
30 public virtual Xpetra::BlockedMultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> {
31 public:
32 using scalar_type = Scalar;
33 using local_ordinal_type = LocalOrdinal;
34 using global_ordinal_type = GlobalOrdinal;
35 using node_type = Node;
36
37 using Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>::dot; // overloading, not hiding
38 using Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>::norm1; // overloading, not hiding
39 using Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>::norm2; // overloading, not hiding
40 using Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>::normInf; // overloading, not hiding
41 using Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>::meanValue; // overloading, not hiding
42 using Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>::replaceGlobalValue; // overloading, not hiding
43 using Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>::sumIntoGlobalValue; // overloading, not hiding
44 using Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>::replaceLocalValue; // overloading, not hiding
45 using Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>::sumIntoLocalValue; // overloading, not hiding
46
47 private:
48#undef XPETRA_BLOCKEDVECTOR_SHORT
50
51 public:
53
54
56
59 * of a blocked map
60 *
61 * \param map BlockedMap defining the block structure of the vector
62 * \param zeroOut If true initialize vector with zeros
63 */
64 BlockedVector(const Teuchos::RCP<const BlockedMap>& map, bool zeroOut = true);
65
66
79
91 BlockedVector(Teuchos::RCP<const Xpetra::MapExtractor<Scalar, LocalOrdinal, GlobalOrdinal, Node>> mapExtractor,
93
95 virtual ~BlockedVector();
96
104 BlockedVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>&
106
108
110
112 virtual void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar& value);
113
115 virtual void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar& value);
116
118 virtual void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar& value);
119
121 virtual void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar& value);
122
124 virtual void replaceGlobalValue(GlobalOrdinal globalRow, const Scalar& value);
125
127 virtual void sumIntoGlobalValue(GlobalOrdinal globalRow, const Scalar& value);
128
130 virtual void replaceLocalValue(LocalOrdinal myRow, const Scalar& value);
131
133 virtual void sumIntoLocalValue(LocalOrdinal myRow, const Scalar& value);
134
136 virtual void putScalar(const Scalar& value);
137
141
146
152 virtual Teuchos::ArrayRCP<const Scalar> getData(size_t j) const;
153
154 //! View of the local values in a particular vector of this vector.
155 virtual Teuchos::ArrayRCP<Scalar> getDataNonConst(size_t j);
158
160
161
164 const Teuchos::ArrayView<Scalar>& dots) const;
165
166 virtual Scalar dot(const Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A) const;
167
170
173
175 virtual void scale(const Scalar& alpha);
176
177 //! Scale the current values of a vector, this[j] = alpha[j]*this[j].
178 virtual void scale(Teuchos::ArrayView<const Scalar> alpha);
180 virtual void update(const Scalar& alpha,
182 const Scalar& beta);
183
185 virtual void update(const Scalar& alpha,
187 const Scalar& beta,
189 const Scalar& gamma);
190
192 virtual typename Teuchos::ScalarTraits<Scalar>::magnitudeType norm1() const;
193
195 virtual typename Teuchos::ScalarTraits<Scalar>::magnitudeType norm2() const;
196
198 virtual typename Teuchos::ScalarTraits<Scalar>::magnitudeType normInf() const;
199
201 virtual void norm1(const Teuchos::ArrayView<typename Teuchos::ScalarTraits<Scalar>::magnitudeType>& norms) const;
202
204 virtual void norm2(const Teuchos::ArrayView<typename Teuchos::ScalarTraits<Scalar>::magnitudeType>& norms) const;
205
207 virtual void normInf(const Teuchos::ArrayView<typename Teuchos::ScalarTraits<Scalar>::magnitudeType>& norms) const;
208
210 //! scalar types (e.g., int).
211 virtual void meanValue(const Teuchos::ArrayView<Scalar>& /* means */) const;
213 virtual Scalar meanValue() const;
216 virtual void multiply(Teuchos::ETransp /* transA */,
217 Teuchos::ETransp /* transB */,
218 const Scalar& /* alpha */,
221 const Scalar& /* beta */);
223 virtual void multiply(Teuchos::ETransp /* transA */,
224 Teuchos::ETransp /* transB */,
225 const Scalar& /* alpha */,
228 const Scalar& /* beta */);
229
230 virtual void elementWiseMultiply(Scalar /* scalarAB */,
233 Scalar /* scalarThis */);
234
236 virtual void elementWiseMultiply(Scalar /* scalarAB */,
239 Scalar /* scalarThis */);
240
242
244
245
247 virtual size_t getNumVectors() const;
248
250 virtual size_t getLocalLength() const;
251
253 virtual global_size_t getGlobalLength() const;
254
256 virtual bool isSameSize(const Xpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>& /* vec */) const;
257
259
261
262
264 virtual std::string description() const;
265
267 virtual void describe(Teuchos::FancyOStream& out,
269
270 virtual void replaceMap(const RCP<const Map>& map);
271
273 virtual void doImport(const DistObject<Scalar, LocalOrdinal, GlobalOrdinal, Node>& /* source */,
274 const Import& /* importer */,
275 CombineMode /* CM */);
276
278 virtual void doExport(const DistObject<Scalar, LocalOrdinal, GlobalOrdinal, Node>& /* dest */,
279 const Import& /* importer */,
280 CombineMode /* CM */);
281
283 virtual void doImport(const DistObject<Scalar, LocalOrdinal, GlobalOrdinal, Node>& /* source */,
284 const Export& /* exporter */,
285 CombineMode /* CM */);
286
288 virtual void doExport(const DistObject<Scalar, LocalOrdinal, GlobalOrdinal, Node>& /* dest */,
289 const Export& /* exporter */,
290 CombineMode /* CM */);
291
293
295
296
298 virtual void setSeed(unsigned int seed);
299
300 virtual void randomize(bool bUseXpetraImplementation = false);
301
302 virtual void randomize(const Scalar& minVal, const Scalar& maxVal, bool bUseXpetraImplementation = false);
303
305 virtual void Xpetra_randomize();
306
308 virtual void Xpetra_randomize(const Scalar& minVal, const Scalar& maxVal);
309
311
313 Teuchos::RCP<const Map> getMap() const;
314
317 getMultiVector(size_t r) const;
318
321 getMultiVector(size_t r, bool bThyraMode) const;
322
324 void
325 setMultiVector(size_t r,
327 bool bThyraMode);
328
331 Merge() const;
332
333 protected:
341
342 // virtual void assign (const MultiVector& rhs);
343
344 // private:
345 // Teuchos::RCP<const BlockedMap> map_; ///< blocked map containing the sub block maps (either thyra or xpetra mode)
346 // std::vector<Teuchos::RCP<Vector> > vv_; ///< array containing RCPs of the partial vectors
347
348}; // BlockedVector class
349
350} // namespace Xpetra
351
352#define XPETRA_BLOCKEDVECTOR_SHORT
353#endif // XPETRA_BLOCKEDVECTOR_DECL_HPP
static const EVerbosityLevel verbLevel_default
virtual void dot(const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, const Teuchos::ArrayView< Scalar > &dots) const
Compute dot product of each corresponding pair of vectors, dots[i] = this[i].dot(A[i]).
virtual Teuchos::ScalarTraits< Scalar >::magnitudeType norm2() const
Compute 2-norm of vector.
virtual void sumIntoLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value)
Add value to existing value, using local (row) index.
BlockedVector(const Teuchos::RCP< const BlockedMap > &map, bool zeroOut=true)
Constructor.
virtual Teuchos::ScalarTraits< Scalar >::magnitudeType norm1() const
Compute 1-norm of vector.
virtual void replaceLocalValue(LocalOrdinal myRow, size_t vectorIndex, const Scalar &value)
Replace value, using local (row) index.
virtual void sumIntoGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value)
Add value to existing value, using global (row) index.
virtual void replaceGlobalValue(GlobalOrdinal globalRow, size_t vectorIndex, const Scalar &value)
Replace value, using global (row) index.
virtual void meanValue(const Teuchos::ArrayView< Scalar > &) const
virtual Teuchos::ScalarTraits< Scalar >::magnitudeType normInf() const
Compute Inf-norm in vector.
basic_FancyOStream< char > FancyOStream
size_t global_size_t
Global size_t object.
CombineMode
Xpetra::Combine Mode enumerable type.