Anasazi Version of the Day
Loading...
Searching...
No Matches
AnasaziMultiVecTraits.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Anasazi: Block Eigensolvers Package
4//
5// Copyright 2004 NTESS and the Anasazi contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9//
10#ifndef ANASAZI_MULTI_VEC_TRAITS_HPP
11#define ANASAZI_MULTI_VEC_TRAITS_HPP
12
23
24#include "AnasaziTypes.hpp"
26#include "Teuchos_Range1D.hpp"
27#include "Teuchos_RCP.hpp"
28#include "Teuchos_SerialDenseMatrix.hpp"
29
30namespace Anasazi {
31
38 template< class ScalarType, class MV >
40 {
47 static inline ScalarType notDefined() { return MV::this_type_is_missing_a_specialization(); };
48 };
49
50
94 template<class ScalarType, class MV>
96 public:
98
99
104 static Teuchos::RCP<MV> Clone( const MV& mv, const int numvecs )
105 { UndefinedMultiVecTraits<ScalarType, MV>::notDefined(); return Teuchos::null; }
106
111 static Teuchos::RCP<MV> CloneCopy( const MV& mv )
112 { UndefinedMultiVecTraits<ScalarType, MV>::notDefined(); return Teuchos::null; }
113
119 static Teuchos::RCP<MV> CloneCopy( const MV& mv, const std::vector<int>& index )
120 { UndefinedMultiVecTraits<ScalarType, MV>::notDefined(); return Teuchos::null; }
121
131 static Teuchos::RCP<MV> CloneCopy( const MV& mv, const Teuchos::Range1D& index )
132 { UndefinedMultiVecTraits<ScalarType, MV>::notDefined(); return Teuchos::null; }
133
139 static Teuchos::RCP<MV> CloneViewNonConst( MV& mv, const std::vector<int>& index )
140 { UndefinedMultiVecTraits<ScalarType, MV>::notDefined(); return Teuchos::null; }
141
150 static Teuchos::RCP<MV> CloneViewNonConst( MV& mv, const Teuchos::Range1D& index )
151 { UndefinedMultiVecTraits<ScalarType, MV>::notDefined(); return Teuchos::null; }
152
158 static Teuchos::RCP<const MV> CloneView( const MV& mv, const std::vector<int>& index )
159 { UndefinedMultiVecTraits<ScalarType, MV>::notDefined(); return Teuchos::null; }
160
169 static Teuchos::RCP<const MV> CloneView( const MV& mv, const Teuchos::Range1D& index )
170 { UndefinedMultiVecTraits<ScalarType, MV>::notDefined(); return Teuchos::null; }
171
173
175
176
178 static ptrdiff_t GetGlobalLength( const MV& mv )
180
182 static int GetNumberVecs( const MV& mv )
184
186
188
189
192 static void MvTimesMatAddMv( const ScalarType alpha, const MV& A,
193 const Teuchos::SerialDenseMatrix<int,ScalarType>& B,
194 const ScalarType beta, MV& mv )
196
199 static void MvAddMv( const ScalarType alpha, const MV& A, const ScalarType beta, const MV& B, MV& mv )
201
204 static void MvScale ( MV& mv, const ScalarType alpha )
206
209 static void MvScale ( MV& mv, const std::vector<ScalarType>& alpha )
211
215 static void
216 MvTransMv (const ScalarType alpha, const MV& A, const MV& B,
217 Teuchos::SerialDenseMatrix<int,ScalarType>& C)
219
222 static void MvDot ( const MV& mv, const MV& A, std::vector<ScalarType> &b)
224
226
228
232 static void MvNorm( const MV& mv, std::vector<typename Teuchos::ScalarTraits<ScalarType>::magnitudeType> &normvec )
234
236
238
239
244 static void SetBlock( const MV& A, const std::vector<int>& index, MV& mv )
246
259 static void SetBlock( const MV& A, const Teuchos::Range1D& index, MV& mv )
261
265 static void Assign( const MV& A, MV& mv )
267
272
275 static void MvInit( MV& mv, const ScalarType alpha = Teuchos::ScalarTraits<ScalarType>::zero() )
277
279
281
282
285 static void MvPrint( const MV& mv, std::ostream& os )
287
289
290#ifdef HAVE_ANASAZI_TSQR
303 typedef Anasazi::details::StubTsqrAdapter<MV> tsqr_adaptor_type;
304#endif // HAVE_ANASAZI_TSQR
305 };
306
307} // namespace Anasazi
308
309#endif // ANASAZI_MULTI_VEC_TRAITS_HPP
"Stub" TSQR adapter for unsupported multivector types.
Types and exceptions used within Anasazi solvers and interfaces.
Traits class which defines basic operations on multivectors.
static int GetNumberVecs(const MV &mv)
Obtain the number of vectors in mv.
static void MvAddMv(const ScalarType alpha, const MV &A, const ScalarType beta, const MV &B, MV &mv)
Replace mv with .
static Teuchos::RCP< MV > CloneCopy(const MV &mv)
Creates a new MV and copies contents of mv into the new vector (deep copy).
static void MvPrint(const MV &mv, std::ostream &os)
Print the mv multi-vector to the os output stream.
static void MvDot(const MV &mv, const MV &A, std::vector< ScalarType > &b)
Compute a vector b where the components are the individual dot-products of the i-th columns of A and ...
static Teuchos::RCP< MV > Clone(const MV &mv, const int numvecs)
Creates a new empty MV containing numvecs columns.
static Teuchos::RCP< MV > CloneCopy(const MV &mv, const std::vector< int > &index)
Creates a new MV and copies the selected contents of mv into the new vector (deep copy).
static void MvScale(MV &mv, const std::vector< ScalarType > &alpha)
Scale each element of the i-th vector in mv with alpha[i].
static void MvInit(MV &mv, const ScalarType alpha=Teuchos::ScalarTraits< ScalarType >::zero())
Replace each element of the vectors in mv with alpha.
static void MvScale(MV &mv, const ScalarType alpha)
Scale each element of the vectors in mv with alpha.
static Teuchos::RCP< const MV > CloneView(const MV &mv, const std::vector< int > &index)
Creates a new const MV that shares the selected contents of mv (shallow copy).
static void SetBlock(const MV &A, const Teuchos::Range1D &index, MV &mv)
Deep copy of A into specified columns of mv.
static Teuchos::RCP< MV > CloneCopy(const MV &mv, const Teuchos::Range1D &index)
Deep copy of specified columns of mv.
static void Assign(const MV &A, MV &mv)
mv := A
static ptrdiff_t GetGlobalLength(const MV &mv)
Return the number of rows in the given multivector mv.
static void MvTransMv(const ScalarType alpha, const MV &A, const MV &B, Teuchos::SerialDenseMatrix< int, ScalarType > &C)
Compute C := alpha * A^H B.
static Teuchos::RCP< const MV > CloneView(const MV &mv, const Teuchos::Range1D &index)
Const view of specified columns of mv.
static void MvRandom(MV &mv)
Replace the vectors in mv with random vectors.
static Teuchos::RCP< MV > CloneViewNonConst(MV &mv, const Teuchos::Range1D &index)
Non-const view of specified columns of mv.
static void MvTimesMatAddMv(const ScalarType alpha, const MV &A, const Teuchos::SerialDenseMatrix< int, ScalarType > &B, const ScalarType beta, MV &mv)
Update mv with .
static void MvNorm(const MV &mv, std::vector< typename Teuchos::ScalarTraits< ScalarType >::magnitudeType > &normvec)
Compute the 2-norm of each individual vector of mv. Upon return, normvec[i] holds the value of ,...
static Teuchos::RCP< MV > CloneViewNonConst(MV &mv, const std::vector< int > &index)
Creates a new MV that shares the selected contents of mv (shallow copy).
static void SetBlock(const MV &A, const std::vector< int > &index, MV &mv)
Copy the vectors in A to a set of vectors in mv indicated by the indices given in index.
"Stub" TSQR adaptor for unsupported multivector types.
Namespace Anasazi contains the classes, structs, enums and utilities used by the Anasazi package.
Used by MultiVecTraits to report lack of a specialization.
static ScalarType notDefined()
Any attempt to compile this method will result in a compile-time error.