Anasazi Version of the Day
Loading...
Searching...
No Matches
Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > > Class Template Reference

Specialization of MultiVecTraits for MV = Tpetra::MultiVector. More...

#include <AnasaziTpetraAdapter.hpp>

Static Public Member Functions

static Teuchos::RCP< MV > Clone (const MV &X, const int numVecs)
 Create a new MultiVector with numVecs columns.
 
static Teuchos::RCP< MV > CloneCopy (const MV &X)
 Create and return a deep copy of X.
 
static Teuchos::RCP< MV > CloneCopy (const MV &mv, const std::vector< int > &index)
 Create and return a deep copy of the given columns of mv.
 
static Teuchos::RCP< MV > CloneCopy (const MV &mv, const Teuchos::Range1D &index)
 Create and return a deep copy of the given columns of mv.
 
static void MvAddMv (Scalar alpha, const MV &A, Scalar beta, const MV &B, MV &mv)
 mv := alpha*A + beta*B
 
static void MvDot (const MV &A, const MV &B, std::vector< Scalar > &dots)
 For all columns j of A, set dots[j] := A[j]^T * B[j].
 
static void MvNorm (const MV &mv, std::vector< typename Teuchos::ScalarTraits< Scalar >::magnitudeType > &normvec)
 For all columns j of mv, set normvec[j] = norm(mv[j]).
 
Creation methods
static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > Clone (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const int numvecs)
 Creates a new empty MV containing numvecs columns.
 
static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > CloneCopy (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv)
 Creates a new MV and copies contents of mv into the new vector (deep copy).
 
static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > CloneCopy (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const std::vector< int > &index)
 Creates a new MV and copies the selected contents of mv into the new vector (deep copy).
 
static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > CloneCopy (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const Teuchos::Range1D &index)
 Deep copy of specified columns of mv.
 
static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > CloneViewNonConst (Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const std::vector< int > &index)
 Creates a new MV that shares the selected contents of mv (shallow copy).
 
static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > CloneViewNonConst (Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const Teuchos::Range1D &index)
 Non-const view of specified columns of mv.
 
static Teuchos::RCP< const Tpetra::MultiVector< Scalar, LO, GO, Node > > CloneView (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const std::vector< int > &index)
 Creates a new const MV that shares the selected contents of mv (shallow copy).
 
static Teuchos::RCP< const Tpetra::MultiVector< Scalar, LO, GO, Node > > CloneView (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const Teuchos::Range1D &index)
 Const view of specified columns of mv.
 
Attribute methods
static ptrdiff_t GetGlobalLength (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv)
 Return the number of rows in the given multivector mv.
 
static int GetNumberVecs (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv)
 Obtain the number of vectors in mv.
 
Update methods
static void MvTimesMatAddMv (const Scalar alpha, const Tpetra::MultiVector< Scalar, LO, GO, Node > &A, const Teuchos::SerialDenseMatrix< int, Scalar > &B, const Scalar beta, Tpetra::MultiVector< Scalar, LO, GO, Node > &mv)
 Update mv with $ \alpha AB + \beta mv $.
 
static void MvAddMv (const Scalar alpha, const Tpetra::MultiVector< Scalar, LO, GO, Node > &A, const Scalar beta, const Tpetra::MultiVector< Scalar, LO, GO, Node > &B, Tpetra::MultiVector< Scalar, LO, GO, Node > &mv)
 Replace mv with $\alpha A + \beta B$.
 
static void MvScale (Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const Scalar alpha)
 Scale each element of the vectors in mv with alpha.
 
static void MvScale (Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const std::vector< Scalar > &alpha)
 Scale each element of the i-th vector in mv with alpha[i].
 
static void MvTransMv (const Scalar alpha, const Tpetra::MultiVector< Scalar, LO, GO, Node > &A, const Tpetra::MultiVector< Scalar, LO, GO, Node > &B, Teuchos::SerialDenseMatrix< int, Scalar > &C)
 Compute C := alpha * A^H B.
 
static void MvDot (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const Tpetra::MultiVector< Scalar, LO, GO, Node > &A, std::vector< Scalar > &b)
 Compute a vector b where the components are the individual dot-products of the i-th columns of A and mv, i.e. $b[i] = A[i]^Hmv[i]$.
 
Norm method
static void MvNorm (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, std::vector< typename Teuchos::ScalarTraits< Scalar >::magnitudeType > &normvec)
 Compute the 2-norm of each individual vector of mv. Upon return, normvec[i] holds the value of $||mv_i||_2$, the i-th column of mv.
 
Initialization methods
static void SetBlock (const Tpetra::MultiVector< Scalar, LO, GO, Node > &A, const std::vector< int > &index, Tpetra::MultiVector< Scalar, LO, GO, Node > &mv)
 Copy the vectors in A to a set of vectors in mv indicated by the indices given in index.
 
static void SetBlock (const Tpetra::MultiVector< Scalar, LO, GO, Node > &A, const Teuchos::Range1D &index, Tpetra::MultiVector< Scalar, LO, GO, Node > &mv)
 Deep copy of A into specified columns of mv.
 
static void Assign (const Tpetra::MultiVector< Scalar, LO, GO, Node > &A, Tpetra::MultiVector< Scalar, LO, GO, Node > &mv)
 mv := A
 
static void MvRandom (Tpetra::MultiVector< Scalar, LO, GO, Node > &mv)
 Replace the vectors in mv with random vectors.
 
static void MvInit (Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, const Scalar alpha=Teuchos::ScalarTraits< Scalar >::zero())
 Replace each element of the vectors in mv with alpha.
 
Print method
static void MvPrint (const Tpetra::MultiVector< Scalar, LO, GO, Node > &mv, std::ostream &os)
 Print the mv multi-vector to the os output stream.
 

Detailed Description

template<class Scalar, class LO, class GO, class Node>
class Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >

Specialization of MultiVecTraits for MV = Tpetra::MultiVector.

This interface lets Anasazi' solvers work directly with Tpetra::MultiVector objects as the MultiVector type. That type corresponds to the MV template parameter, which is the second template parameter (after Scalar) of most Anasazi classes.

The four template parameters of this partial specialization correspond exactly to the four template parameters of Tpetra::MultiVector. See the Tpetra::MultiVector documentation for more information.

Definition at line 117 of file AnasaziTpetraAdapter.hpp.

Member Function Documentation

◆ Clone() [1/2]

template<class Scalar, class LO, class GO, class Node>
static Teuchos::RCP< MV > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::Clone ( const MV & X,
const int numVecs )
inlinestatic

Create a new MultiVector with numVecs columns.

The returned Tpetra::MultiVector has the same Tpetra::Map (distribution over one or more parallel processes) as X. Its entries are not initialized and have undefined values.

Definition at line 125 of file AnasaziTpetraAdapter.hpp.

◆ CloneCopy() [1/6]

template<class Scalar, class LO, class GO, class Node>
static Teuchos::RCP< MV > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::CloneCopy ( const MV & X)
inlinestatic

Create and return a deep copy of X.

Definition at line 132 of file AnasaziTpetraAdapter.hpp.

◆ CloneCopy() [2/6]

template<class Scalar, class LO, class GO, class Node>
static Teuchos::RCP< MV > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::CloneCopy ( const MV & mv,
const std::vector< int > & index )
inlinestatic

Create and return a deep copy of the given columns of mv.

Precondition
mv.getNumVectors() != 0 || index.size() == 0
For all k such that 0 <= k < index.size(),
0 <= index[k] < mv.getNumVectors();
Postcondition
If this method returns Y:
Y->isConstantStride() && Y->getNumVectors() == index.size();

Definition at line 160 of file AnasaziTpetraAdapter.hpp.

◆ CloneCopy() [3/6]

template<class Scalar, class LO, class GO, class Node>
static Teuchos::RCP< MV > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::CloneCopy ( const MV & mv,
const Teuchos::Range1D & index )
inlinestatic

Create and return a deep copy of the given columns of mv.

Postcondition
If this method returns Y:
Y->isConstantStride() && Y->getNumVectors() == index.size();

Definition at line 196 of file AnasaziTpetraAdapter.hpp.

◆ MvAddMv() [1/2]

template<class Scalar, class LO, class GO, class Node>
static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvAddMv ( Scalar alpha,
const MV & A,
Scalar beta,
const MV & B,
MV & mv )
inlinestatic

mv := alpha*A + beta*B

The Tpetra specialization of this method ignores and completely overwrites any NaN or Inf entries in A. Thus, it does not mean the same thing as mv := 0*mv + alpha*A + beta*B in IEEE 754 floating-point arithmetic. (Remember that NaN*0 = NaN.)

Definition at line 412 of file AnasaziTpetraAdapter.hpp.

◆ MvDot() [1/2]

template<class Scalar, class LO, class GO, class Node>
static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvDot ( const MV & A,
const MV & B,
std::vector< Scalar > & dots )
inlinestatic

For all columns j of A, set dots[j] := A[j]^T * B[j].

Definition at line 508 of file AnasaziTpetraAdapter.hpp.

◆ MvNorm() [1/2]

template<class Scalar, class LO, class GO, class Node>
static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvNorm ( const MV & mv,
std::vector< typename Teuchos::ScalarTraits< Scalar >::magnitudeType > & normvec )
inlinestatic

For all columns j of mv, set normvec[j] = norm(mv[j]).

Definition at line 532 of file AnasaziTpetraAdapter.hpp.

◆ Clone() [2/2]

static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::Clone ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const int numvecs )
inlinestatic

Creates a new empty MV containing numvecs columns.

Returns
Reference-counted pointer to the new multivector of type MV.

Definition at line 136 of file AnasaziMultiVecTraits.hpp.

◆ CloneCopy() [4/6]

static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::CloneCopy ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv)
inlinestatic

Creates a new MV and copies contents of mv into the new vector (deep copy).

Returns
Reference-counted pointer to the new multivector of type MV.

Definition at line 143 of file AnasaziMultiVecTraits.hpp.

◆ CloneCopy() [5/6]

static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::CloneCopy ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const std::vector< int > & index )
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.

Returns
Reference-counted pointer to the new multivector of type MV.

Definition at line 151 of file AnasaziMultiVecTraits.hpp.

◆ CloneCopy() [6/6]

static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::CloneCopy ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const Teuchos::Range1D & index )
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.

Parameters
mv[in] Multivector to copy
index[in] Inclusive index range of columns of mv
Returns
Reference-counted pointer to the new multivector of type MV.

Definition at line 163 of file AnasaziMultiVecTraits.hpp.

◆ CloneViewNonConst() [1/2]

static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::CloneViewNonConst ( Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const std::vector< int > & index )
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.

Returns
Reference-counted pointer to the new multivector of type MV.

Definition at line 171 of file AnasaziMultiVecTraits.hpp.

◆ CloneViewNonConst() [2/2]

static Teuchos::RCP< Tpetra::MultiVector< Scalar, LO, GO, Node > > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::CloneViewNonConst ( Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const Teuchos::Range1D & index )
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.

Parameters
mv[in] Multivector to view (shallow non-const copy)
index[in] Inclusive index range of columns of mv
Returns
Reference-counted pointer to the non-const view of specified columns of mv

Definition at line 182 of file AnasaziMultiVecTraits.hpp.

◆ CloneView() [1/2]

static Teuchos::RCP< const Tpetra::MultiVector< Scalar, LO, GO, Node > > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::CloneView ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const std::vector< int > & index )
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.

Returns
Reference-counted pointer to the new const multivector of type MV.

Definition at line 190 of file AnasaziMultiVecTraits.hpp.

◆ CloneView() [2/2]

static Teuchos::RCP< const Tpetra::MultiVector< Scalar, LO, GO, Node > > Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::CloneView ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const Teuchos::Range1D & index )
inlinestatic

Const view of specified columns of mv.

Return a const view of the columns of mv specified by the given inclusive index range.

Parameters
mv[in] Multivector to view (shallow const copy)
index[in] Inclusive index range of columns of mv
Returns
Reference-counted pointer to the const view of specified columns of mv

Definition at line 201 of file AnasaziMultiVecTraits.hpp.

◆ GetGlobalLength()

static ptrdiff_t Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::GetGlobalLength ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv)
inlinestatic

Return the number of rows in the given multivector mv.

Definition at line 210 of file AnasaziMultiVecTraits.hpp.

◆ GetNumberVecs()

static int Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::GetNumberVecs ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv)
inlinestatic

Obtain the number of vectors in mv.

Definition at line 214 of file AnasaziMultiVecTraits.hpp.

◆ MvTimesMatAddMv()

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvTimesMatAddMv ( const Scalar alpha,
const Tpetra::MultiVector< Scalar, LO, GO, Node > & A,
const Teuchos::SerialDenseMatrix< int, Scalar > & B,
const Scalar beta,
Tpetra::MultiVector< Scalar, LO, GO, Node > & mv )
inlinestatic

Update mv with $ \alpha AB + \beta mv $.

Definition at line 224 of file AnasaziMultiVecTraits.hpp.

◆ MvAddMv() [2/2]

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvAddMv ( const Scalar alpha,
const Tpetra::MultiVector< Scalar, LO, GO, Node > & A,
const Scalar beta,
const Tpetra::MultiVector< Scalar, LO, GO, Node > & B,
Tpetra::MultiVector< Scalar, LO, GO, Node > & mv )
inlinestatic

Replace mv with $\alpha A + \beta B$.

Definition at line 231 of file AnasaziMultiVecTraits.hpp.

◆ MvScale() [1/2]

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvScale ( Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const Scalar alpha )
inlinestatic

Scale each element of the vectors in mv with alpha.

Definition at line 236 of file AnasaziMultiVecTraits.hpp.

◆ MvScale() [2/2]

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvScale ( Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const std::vector< Scalar > & alpha )
inlinestatic

Scale each element of the i-th vector in mv with alpha[i].

Definition at line 241 of file AnasaziMultiVecTraits.hpp.

◆ MvTransMv()

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvTransMv ( const Scalar alpha,
const Tpetra::MultiVector< Scalar, LO, GO, Node > & A,
const Tpetra::MultiVector< Scalar, LO, GO, Node > & B,
Teuchos::SerialDenseMatrix< int, Scalar > & C )
inlinestatic

Compute C := alpha * A^H B.

The result C is a dense, globally replicated matrix.

Definition at line 248 of file AnasaziMultiVecTraits.hpp.

◆ MvDot() [2/2]

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvDot ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const Tpetra::MultiVector< Scalar, LO, GO, Node > & A,
std::vector< Scalar > & b )
inlinestatic

Compute a vector b where the components are the individual dot-products of the i-th columns of A and mv, i.e. $b[i] = A[i]^Hmv[i]$.

Definition at line 254 of file AnasaziMultiVecTraits.hpp.

◆ MvNorm() [2/2]

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvNorm ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
std::vector< typename Teuchos::ScalarTraits< Scalar >::magnitudeType > & normvec )
inlinestatic

Compute the 2-norm of each individual vector of mv. Upon return, normvec[i] holds the value of $||mv_i||_2$, the i-th column of mv.

Definition at line 264 of file AnasaziMultiVecTraits.hpp.

◆ SetBlock() [1/2]

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::SetBlock ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & A,
const std::vector< int > & index,
Tpetra::MultiVector< Scalar, LO, GO, Node > & mv )
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 276 of file AnasaziMultiVecTraits.hpp.

◆ SetBlock() [2/2]

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::SetBlock ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & A,
const Teuchos::Range1D & index,
Tpetra::MultiVector< Scalar, LO, GO, Node > & mv )
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()]

Parameters
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 291 of file AnasaziMultiVecTraits.hpp.

◆ Assign()

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::Assign ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & A,
Tpetra::MultiVector< Scalar, LO, GO, Node > & mv )
inlinestatic

mv := A

Assign (deep copy) A into mv.

Definition at line 297 of file AnasaziMultiVecTraits.hpp.

◆ MvRandom()

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvRandom ( Tpetra::MultiVector< Scalar, LO, GO, Node > & mv)
inlinestatic

Replace the vectors in mv with random vectors.

Definition at line 302 of file AnasaziMultiVecTraits.hpp.

◆ MvInit()

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvInit ( Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
const Scalar alpha = Teuchos::ScalarTraits<ScalarType>::zero() )
inlinestatic

Replace each element of the vectors in mv with alpha.

Definition at line 307 of file AnasaziMultiVecTraits.hpp.

◆ MvPrint()

static void Anasazi::MultiVecTraits< Scalar, Tpetra::MultiVector< Scalar, LO, GO, Node > >::MvPrint ( const Tpetra::MultiVector< Scalar, LO, GO, Node > & mv,
std::ostream & os )
inlinestatic

Print the mv multi-vector to the os output stream.

Definition at line 317 of file AnasaziMultiVecTraits.hpp.


The documentation for this class was generated from the following file: