Anasazi
Version of the Day
|
Traits class which defines basic operations on multivectors. More...
#include <AnasaziMultiVecTraits.hpp>
Static Public Member Functions | |
Creation methods | |
static Teuchos::RCP< MV > | Clone (const MV &mv, const int numvecs) |
Creates a new empty MV containing numvecs columns. More... | |
static Teuchos::RCP< MV > | CloneCopy (const MV &mv) |
Creates a new MV and copies contents of mv into the new vector (deep copy). More... | |
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). More... | |
static Teuchos::RCP< MV > | CloneCopy (const MV &mv, const Teuchos::Range1D &index) |
Deep copy of specified columns of mv. More... | |
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). More... | |
static Teuchos::RCP< MV > | CloneViewNonConst (MV &mv, const Teuchos::Range1D &index) |
Non-const view of specified columns of mv. More... | |
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). More... | |
static Teuchos::RCP< const MV > | CloneView (const MV &mv, const Teuchos::Range1D &index) |
Const view of specified columns of mv. More... | |
Attribute methods | |
static ptrdiff_t | GetGlobalLength (const MV &mv) |
Return the number of rows in the given multivector mv . More... | |
static int | GetNumberVecs (const MV &mv) |
Obtain the number of vectors in mv . More... | |
Update methods | |
static void | MvTimesMatAddMv (const ScalarType alpha, const MV &A, const Teuchos::SerialDenseMatrix< int, ScalarType > &B, const ScalarType beta, MV &mv) |
Update mv with . More... | |
static void | MvAddMv (const ScalarType alpha, const MV &A, const ScalarType beta, const MV &B, MV &mv) |
Replace mv with . More... | |
static void | MvScale (MV &mv, const ScalarType alpha) |
Scale each element of the vectors in mv with alpha . More... | |
static void | MvScale (MV &mv, const std::vector< ScalarType > &alpha) |
Scale each element of the i-th vector in mv with alpha [i]. More... | |
static void | MvTransMv (const ScalarType alpha, const MV &A, const MV &B, Teuchos::SerialDenseMatrix< int, ScalarType > &C) |
Compute C := alpha * A^H B . More... | |
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 mv , i.e. . More... | |
Norm method | |
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 , the i-th column of mv . More... | |
Initialization methods | |
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 . More... | |
static void | SetBlock (const MV &A, const Teuchos::Range1D &index, MV &mv) |
Deep copy of A into specified columns of mv. More... | |
static void | Assign (const MV &A, MV &mv) |
mv := A More... | |
static void | MvRandom (MV &mv) |
Replace the vectors in mv with random vectors. More... | |
static void | MvInit (MV &mv, const ScalarType alpha=Teuchos::ScalarTraits< ScalarType >::zero()) |
Replace each element of the vectors in mv with alpha . More... | |
Print method | |
static void | MvPrint (const MV &mv, std::ostream &os) |
Print the mv multi-vector to the os output stream. More... | |
Traits class which defines basic operations on multivectors.
ScalarType | The type of the entries in the multivectors. |
MV | The type of the multivectors themselves. |
This traits class tells Anasazi's solvers how to perform multivector operations for the multivector type MV. These operations include creating copies or views, finding the number of rows or columns (i.e., vectors) in a given multivector, and computing inner products, norms, and vector sums. (Anasazi's solvers use the OperatorTraits traits class to apply operators to multivectors.)
Anasazi gives users two different ways to tell its solvers how to compute with multivectors of a given type MV. The first and preferred way is for users to specialize MultiVecTraits, this traits class, for their given MV type. Anasazi provides specializations for MV = Epetra_MultiVector, Tpetra::MultiVector, and Thyra::MultiVectorBase. The second way is for users to make their multivector type (or a wrapper thereof) inherit from MultiVec. This works because Anasazi provides a specialization of MultiVecTraits for MultiVec. Specializing MultiVecTraits is more flexible because it does not require a multivector type to inherit from MultiVec; this is possible even if you do not have control over the interface of a class.
If you have a different multivector type MV that you would like to use with Anasazi, and if that type does not inherit from MultiVec, then you must implement a specialization of MultiVecTraits for MV. Otherwise, this traits class will report a compile-time error (relating to UndefinedMultiVecTraits). Specializing MultiVecTraits for your MV type is not hard. Just look at the examples for Epetra_MultiVector (in anasazi/epetra/src/AnasaziEpetraAdapter.hpp) and Tpetra::MultiVector (in anasazi/tpetra/src/AnasaziTpetraAdapter.hpp).
Definition at line 95 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Creates a new empty MV
containing numvecs
columns.
MV
. Definition at line 104 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Creates a new MV
and copies contents of mv
into the new vector (deep copy).
MV
. Definition at line 111 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Creates a new MV
and copies the selected contents of mv
into the new vector (deep copy).
The copied vectors from mv
are indicated by the index.size()
indices in index
.
MV
. Definition at line 119 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Deep copy of specified columns of mv.
Create a new MV, and copy (deep copy) the columns of mv specified by the given inclusive index range into the new multivector.
mv | [in] Multivector to copy |
index | [in] Inclusive index range of columns of mv |
MV
. Definition at line 131 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Creates a new MV
that shares the selected contents of mv
(shallow copy).
The index of the numvecs
vectors shallow copied from mv
are indicated by the indices given in index
.
MV
. Definition at line 139 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Non-const view of specified columns of mv.
Return a non-const view of the columns of mv specified by the given inclusive index range.
mv | [in] Multivector to view (shallow non-const copy) |
index | [in] Inclusive index range of columns of mv |
Definition at line 150 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Creates a new const MV
that shares the selected contents of mv
(shallow copy).
The index of the numvecs
vectors shallow copied from mv
are indicated by the indices given in index
.
MV
. Definition at line 158 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Const view of specified columns of mv.
Return a const view of the columns of mv specified by the given inclusive index range.
mv | [in] Multivector to view (shallow const copy) |
index | [in] Inclusive index range of columns of mv |
Definition at line 169 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Return the number of rows in the given multivector mv
.
Definition at line 178 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Obtain the number of vectors in mv
.
Definition at line 182 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Update mv
with .
Definition at line 192 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Replace mv
with .
Definition at line 199 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Scale each element of the vectors in mv
with alpha
.
Definition at line 204 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Scale each element of the i-th
vector in mv
with alpha
[i].
Definition at line 209 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Compute C := alpha * A^H B
.
The result C is a dense, globally replicated matrix.
Definition at line 216 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Compute a vector b
where the components are the individual dot-products of the i-th
columns of A
and mv
, i.e. .
Definition at line 222 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Compute the 2-norm of each individual vector of mv
. Upon return, normvec
[i] holds the value of , the i-th
column of mv
.
Definition at line 232 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Copy the vectors in A
to a set of vectors in mv
indicated by the indices given in index
.
The numvecs
vectors in A
are copied to a subset of vectors in mv
indicated by the indices given in index
, i.e. mv[index[i]] = A[i]
.
Definition at line 244 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Deep copy of A into specified columns of mv.
(Deeply) copy the first index.size()
columns of A
into the columns of mv
specified by the given index range.
Postcondition: mv[i] = A[i - index.lbound()]
for all i
in [index.lbound(), index.ubound()]
A | [in] Source multivector |
index | [in] Inclusive index range of columns of mv; index set of the target |
mv | [out] Target multivector |
Definition at line 259 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
|
inlinestatic |
Replace the vectors in mv
with random vectors.
Definition at line 270 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Replace each element of the vectors in mv
with alpha
.
Definition at line 275 of file AnasaziMultiVecTraits.hpp.
|
inlinestatic |
Print the mv
multi-vector to the os
output stream.
Definition at line 285 of file AnasaziMultiVecTraits.hpp.