Anasazi Version of the Day
Anasazi::EpetraMultiVec Class Reference

Basic adapter class for Anasazi::MultiVec that uses Epetra_MultiVector. More...

#include <AnasaziEpetraAdapter.hpp>

Inheritance diagram for Anasazi::EpetraMultiVec:
Anasazi::MultiVec< double > Epetra_MultiVector Anasazi::EpetraMultiVecAccessor Epetra_DistObject Epetra_CompObject Epetra_BLAS Epetra_Object Epetra_SrcDistObject

List of all members.

Public Member Functions

Constructors/Destructors
 EpetraMultiVec (const Epetra_BlockMap &Map_in, const int numvecs)
 Basic EpetraMultiVec constructor.
 EpetraMultiVec (const Epetra_MultiVector &P_vec)
 Copy constructor.
 EpetraMultiVec (const Epetra_BlockMap &Map_in, double *array, const int numvecs, const int stride=0)
 Create multi-vector with values from two dimensional array.
 EpetraMultiVec (Epetra_DataAccess CV, const Epetra_MultiVector &P_vec, const std::vector< int > &index)
 Create multi-vector from list of vectors in an existing EpetraMultiVec.
virtual ~EpetraMultiVec ()
 Destructor.
Creation methods
MultiVec< double > * Clone (const int numvecs) const
 Creates a new empty EpetraMultiVec containing numvecs columns.
MultiVec< double > * CloneCopy () const
 Creates a new EpetraMultiVec and copies contents of *this into the new vector (deep copy).
MultiVec< double > * CloneCopy (const std::vector< int > &index) const
 Creates a new EpetraMultiVec and copies the selected contents of *this into the new vector (deep copy).
MultiVec< double > * CloneViewNonConst (const std::vector< int > &index)
 Creates a new EpetraMultiVec that shares the selected contents of *this.
const MultiVec< double > * CloneView (const std::vector< int > &index) const
 Creates a new EpetraMultiVec that shares the selected contents of *this.
Attribute methods

Obtain the vector length of *this.

int GetNumberVecs () const
 Obtain the number of vectors in *this.
int GetVecLength () const
 Obtain the number of vectors in *this.
Update methods
void MvTimesMatAddMv (double alpha, const MultiVec< double > &A, const Teuchos::SerialDenseMatrix< int, double > &B, double beta)
 Update *this with $\alpha AB + \beta (*this)$.
void MvAddMv (double alpha, const MultiVec< double > &A, double beta, const MultiVec< double > &B)
 Replace *this with $\alpha A + \beta B$.
void MvTransMv (double alpha, const MultiVec< double > &A, Teuchos::SerialDenseMatrix< int, double > &B) const
 Compute a dense matrix B through the matrix-matrix multiply $\alpha A^T(*this)$.
void MvDot (const MultiVec< double > &A, std::vector< double > &b) const
 Compute a vector b where the components are the individual dot-products, i.e. $ b[i] = A[i]^H(this[i])$ where A[i] is the i-th column of A.
void MvScale (double alpha)
 Scale each element of the vectors in *this with alpha.
void MvScale (const std::vector< double > &alpha)
 Scale each element of the i-th vector in *this with alpha[i].
Norm method
void MvNorm (std::vector< double > &normvec) const
 Compute the 2-norm of each individual vector of *this. Upon return, normvec[i] holds the 2-norm of the i-th vector of *this.
Initialization methods
void SetBlock (const MultiVec< double > &A, const std::vector< int > &index)
 Copy the vectors in A to a set of vectors in *this.
void MvRandom ()
 Fill the vectors in *this with random numbers.
void MvInit (double alpha)
 Replace each element of the vectors in *this with alpha.
Accessor methods (inherited from EpetraMultiVecAccessor)
Epetra_MultiVectorGetEpetraMultiVec ()
 Return the pointer to the Epetra_MultiVector object.
const Epetra_MultiVectorGetEpetraMultiVec () const
 Return the pointer to the Epetra_MultiVector object.
Print method
void MvPrint (std::ostream &os) const
 Print *this EpetraMultiVec.

Detailed Description

Basic adapter class for Anasazi::MultiVec that uses Epetra_MultiVector.

Note:
The Epetra package performs double-precision arithmetic, so the use of Epetra with Anasazi will only provide a double-precision eigensolver.
Examples:

BlockKrylovSchur/BlockKrylovSchurEpetraExSVD.cpp, and MVOPTester/MVOPTesterEx.cpp.

Definition at line 108 of file AnasaziEpetraAdapter.hpp.


Constructor & Destructor Documentation

Anasazi::EpetraMultiVec::EpetraMultiVec ( const Epetra_BlockMap Map_in,
const int  numvecs 
)

Basic EpetraMultiVec constructor.

Parameters:
Map[in] An Epetra_LocalMap, Epetra_Map or Epetra_BlockMap.
numvecs[in] Number of vectors in multi-vector.
Returns:
Pointer to an EpetraMultiVec

Definition at line 52 of file AnasaziEpetraAdapter.cpp.

Anasazi::EpetraMultiVec::EpetraMultiVec ( const Epetra_MultiVector P_vec)

Copy constructor.

Definition at line 66 of file AnasaziEpetraAdapter.cpp.

Anasazi::EpetraMultiVec::EpetraMultiVec ( const Epetra_BlockMap Map_in,
double *  array,
const int  numvecs,
const int  stride = 0 
)

Create multi-vector with values from two dimensional array.

Parameters:
Map[in] An Epetra_LocalMap, Epetra_Map or Epetra_BlockMap
array[in] Pointer to an array of double precision numbers. The first vector starts at array, the second at array+stride, and so on. This array is copied.
numvecs[in] Number of vectors in the multi-vector.
stride[in] The stride between vectors in memory of array.
Returns:
Pointer to an EpetraMultiVec

Definition at line 45 of file AnasaziEpetraAdapter.cpp.

Anasazi::EpetraMultiVec::EpetraMultiVec ( Epetra_DataAccess  CV,
const Epetra_MultiVector P_vec,
const std::vector< int > &  index 
)

Create multi-vector from list of vectors in an existing EpetraMultiVec.

Parameters:
CV[in] Enumerated type set to Copy or View.
P_vec[in] An existing fully constructed Epetra_MultiVector.
index[in] A integer vector containing the indices of the vectors to copy out of P_vec.
Returns:
Pointer to an EpetraMultiVec

Definition at line 58 of file AnasaziEpetraAdapter.cpp.

virtual Anasazi::EpetraMultiVec::~EpetraMultiVec ( ) [inline, virtual]

Destructor.

Definition at line 145 of file AnasaziEpetraAdapter.hpp.


Member Function Documentation

MultiVec< double > * Anasazi::EpetraMultiVec::Clone ( const int  numvecs) const [virtual]

Creates a new empty EpetraMultiVec containing numvecs columns.

Returns:
Pointer to an EpetraMultiVec

Implements Anasazi::MultiVec< double >.

Definition at line 81 of file AnasaziEpetraAdapter.cpp.

MultiVec< double > * Anasazi::EpetraMultiVec::CloneCopy ( ) const [virtual]

Creates a new EpetraMultiVec and copies contents of *this into the new vector (deep copy).

Returns:
Pointer to an EpetraMultiVec

Implements Anasazi::MultiVec< double >.

Definition at line 92 of file AnasaziEpetraAdapter.cpp.

MultiVec< double > * Anasazi::EpetraMultiVec::CloneCopy ( const std::vector< int > &  index) const [virtual]

Creates a new EpetraMultiVec and copies the selected contents of *this into the new vector (deep copy).

The copied vectors from *this are indicated by the index.size() indices in index.

Returns:
Pointer to an EpetraMultiVec

Implements Anasazi::MultiVec< double >.

Definition at line 99 of file AnasaziEpetraAdapter.cpp.

MultiVec< double > * Anasazi::EpetraMultiVec::CloneViewNonConst ( const std::vector< int > &  index) [virtual]

Creates a new EpetraMultiVec that shares the selected contents of *this.

The index of the numvecs vectors shallow copied from *this are indicated by the indices given in index.

Returns:
Pointer to an EpetraMultiVec

Implements Anasazi::MultiVec< double >.

Definition at line 106 of file AnasaziEpetraAdapter.cpp.

const MultiVec< double > * Anasazi::EpetraMultiVec::CloneView ( const std::vector< int > &  index) const [virtual]

Creates a new EpetraMultiVec that shares the selected contents of *this.

The index of the numvecs vectors shallow copied from *this are indicated by the indices given in index.

Returns:
Pointer to an EpetraMultiVec

Implements Anasazi::MultiVec< double >.

Definition at line 112 of file AnasaziEpetraAdapter.cpp.

int Anasazi::EpetraMultiVec::GetNumberVecs ( ) const [inline, virtual]

Obtain the number of vectors in *this.

Implements Anasazi::MultiVec< double >.

Definition at line 196 of file AnasaziEpetraAdapter.hpp.

int Anasazi::EpetraMultiVec::GetVecLength ( ) const [inline, virtual]

Obtain the number of vectors in *this.

Implements Anasazi::MultiVec< double >.

Definition at line 199 of file AnasaziEpetraAdapter.hpp.

void Anasazi::EpetraMultiVec::MvTimesMatAddMv ( double  alpha,
const MultiVec< double > &  A,
const Teuchos::SerialDenseMatrix< int, double > &  B,
double  beta 
) [virtual]

Update *this with $\alpha AB + \beta (*this)$.

Implements Anasazi::MultiVec< double >.

Examples:
BlockKrylovSchur/BlockKrylovSchurEpetraExSVD.cpp.

Definition at line 145 of file AnasaziEpetraAdapter.cpp.

void Anasazi::EpetraMultiVec::MvAddMv ( double  alpha,
const MultiVec< double > &  A,
double  beta,
const MultiVec< double > &  B 
) [virtual]

Replace *this with $\alpha A + \beta B$.

Implements Anasazi::MultiVec< double >.

Definition at line 165 of file AnasaziEpetraAdapter.cpp.

void Anasazi::EpetraMultiVec::MvTransMv ( double  alpha,
const MultiVec< double > &  A,
Teuchos::SerialDenseMatrix< int, double > &  B 
) const [virtual]

Compute a dense matrix B through the matrix-matrix multiply $\alpha A^T(*this)$.

Implements Anasazi::MultiVec< double >.

Definition at line 184 of file AnasaziEpetraAdapter.cpp.

void Anasazi::EpetraMultiVec::MvDot ( const MultiVec< double > &  A,
std::vector< double > &  b 
) const [virtual]

Compute a vector b where the components are the individual dot-products, i.e. $ b[i] = A[i]^H(this[i])$ where A[i] is the i-th column of A.

Implements Anasazi::MultiVec< double >.

Definition at line 209 of file AnasaziEpetraAdapter.cpp.

void Anasazi::EpetraMultiVec::MvScale ( double  alpha) [inline, virtual]

Scale each element of the vectors in *this with alpha.

Implements Anasazi::MultiVec< double >.

Definition at line 234 of file AnasaziEpetraAdapter.hpp.

void Anasazi::EpetraMultiVec::MvScale ( const std::vector< double > &  alpha) [virtual]

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

Implements Anasazi::MultiVec< double >.

Definition at line 230 of file AnasaziEpetraAdapter.cpp.

void Anasazi::EpetraMultiVec::MvNorm ( std::vector< double > &  normvec) const [inline]

Compute the 2-norm of each individual vector of *this. Upon return, normvec[i] holds the 2-norm of the i-th vector of *this.

Definition at line 250 of file AnasaziEpetraAdapter.hpp.

void Anasazi::EpetraMultiVec::SetBlock ( const MultiVec< double > &  A,
const std::vector< int > &  index 
) [virtual]

Copy the vectors in A to a set of vectors in *this.

The numvecs vectors in A are copied to a subset of vectors in *this indicated by the indices given in index.

Implements Anasazi::MultiVec< double >.

Definition at line 119 of file AnasaziEpetraAdapter.cpp.

void Anasazi::EpetraMultiVec::MvRandom ( ) [inline, virtual]

Fill the vectors in *this with random numbers.

Implements Anasazi::MultiVec< double >.

Definition at line 269 of file AnasaziEpetraAdapter.hpp.

void Anasazi::EpetraMultiVec::MvInit ( double  alpha) [inline, virtual]

Replace each element of the vectors in *this with alpha.

Implements Anasazi::MultiVec< double >.

Definition at line 276 of file AnasaziEpetraAdapter.hpp.

Epetra_MultiVector* Anasazi::EpetraMultiVec::GetEpetraMultiVec ( ) [inline, virtual]

Return the pointer to the Epetra_MultiVector object.

Reimplemented from Anasazi::EpetraMultiVecAccessor.

Definition at line 285 of file AnasaziEpetraAdapter.hpp.

const Epetra_MultiVector* Anasazi::EpetraMultiVec::GetEpetraMultiVec ( ) const [inline, virtual]

Return the pointer to the Epetra_MultiVector object.

Reimplemented from Anasazi::EpetraMultiVecAccessor.

Definition at line 288 of file AnasaziEpetraAdapter.hpp.

void Anasazi::EpetraMultiVec::MvPrint ( std::ostream &  os) const [inline, virtual]

Print *this EpetraMultiVec.

Implements Anasazi::MultiVec< double >.

Definition at line 297 of file AnasaziEpetraAdapter.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends