Anasazi Version of the Day
Anasazi::EpetraOpMultiVec Class Reference

Specialized adapter class for Anasazi::MultiVec that uses Epetra_MultiVector and Epetra_Operator to define the inner-product. More...

#include <AnasaziSpecializedEpetraAdapter.hpp>

Inheritance diagram for Anasazi::EpetraOpMultiVec:
Anasazi::MultiVec< double > Anasazi::EpetraMultiVecAccessor

List of all members.

Public Member Functions

Constructors/Destructors
 EpetraOpMultiVec (const Teuchos::RCP< Epetra_Operator > &Op, const Epetra_BlockMap &Map_in, const int numvecs)
 Basic EpetraOpMultiVec constructor.
 EpetraOpMultiVec (const Teuchos::RCP< Epetra_Operator > &Op, const Epetra_BlockMap &Map_in, double *array, const int numvecs, const int stride=0)
 Create multi-vector with values from two dimensional array.
 EpetraOpMultiVec (const Teuchos::RCP< Epetra_Operator > &Op, Epetra_DataAccess CV, const Epetra_MultiVector &P_vec, const std::vector< int > &index)
 Create multi-vector from list of vectors in an existing EpetraOpMultiVec.
 EpetraOpMultiVec (const EpetraOpMultiVec &P_vec)
 Copy constructor.
virtual ~EpetraOpMultiVec ()
 Destructor.
Creation methods
MultiVec< double > * Clone (const int numvecs) const
 Creates a new empty EpetraOpMultiVec containing numvecs columns.
MultiVec< double > * CloneCopy () const
 Creates a new EpetraOpMultiVec and copies contents of *this into the new vector (deep copy).
MultiVec< double > * CloneCopy (const std::vector< int > &index) const
 Creates a new EpetraOpMultiVec and copies the selected contents of *this into the new vector (deep copy).
MultiVec< double > * CloneViewNonConst (const std::vector< int > &index)
 Creates a new EpetraOpMultiVec that shares the selected contents of *this.
const MultiVec< double > * CloneView (const std::vector< int > &index) const
 Creates a new EpetraOpMultiVec that shares the selected contents of *this.
Accessor methods
Teuchos::RCP< Epetra_MultiVectorGetEpetraMultiVector ()
Attribute methods
int GetVecLength () const
 Obtain the number of vectors in *this.
ptrdiff_t GetGlobalLength () const
int GetNumberVecs () const
 Obtain the vector length of *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 EpetraOpMultiVec.

Detailed Description

Specialized adapter class for Anasazi::MultiVec that uses Epetra_MultiVector and Epetra_Operator to define the inner-product.

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

Definition at line 85 of file AnasaziSpecializedEpetraAdapter.hpp.


Constructor & Destructor Documentation

Anasazi::EpetraOpMultiVec::EpetraOpMultiVec ( const Teuchos::RCP< Epetra_Operator > &  Op,
const Epetra_BlockMap Map_in,
const int  numvecs 
)

Basic EpetraOpMultiVec constructor.

Parameters:
Op[in] A reference-counted pointer to an existing fully constructed Epetra_Operator.
Map[in] An Epetra_LocalMap, Epetra_Map or Epetra_BlockMap.
numvecs[in] Number of vectors in multi-vector.
Returns:
Pointer to an EpetraOpMultiVec

Definition at line 46 of file AnasaziSpecializedEpetraAdapter.cpp.

Anasazi::EpetraOpMultiVec::EpetraOpMultiVec ( const Teuchos::RCP< Epetra_Operator > &  Op,
const Epetra_BlockMap Map_in,
double *  array,
const int  numvecs,
const int  stride = 0 
)

Create multi-vector with values from two dimensional array.

Parameters:
Op[in] A reference-counted pointer to an existing fully constructed Epetra_Operator.
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 EpetraOpMultiVec

Definition at line 53 of file AnasaziSpecializedEpetraAdapter.cpp.

Anasazi::EpetraOpMultiVec::EpetraOpMultiVec ( const Teuchos::RCP< Epetra_Operator > &  Op,
Epetra_DataAccess  CV,
const Epetra_MultiVector P_vec,
const std::vector< int > &  index 
)

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

Parameters:
Op[in] A reference-counted pointer to an existing fully constructed Epetra_Operator.
P_vec[in] A reference-counted pointer to 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 EpetraOpMultiVec

Definition at line 61 of file AnasaziSpecializedEpetraAdapter.cpp.

Anasazi::EpetraOpMultiVec::EpetraOpMultiVec ( const EpetraOpMultiVec P_vec)

Copy constructor.

Definition at line 69 of file AnasaziSpecializedEpetraAdapter.cpp.

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

Destructor.

Definition at line 124 of file AnasaziSpecializedEpetraAdapter.hpp.


Member Function Documentation

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

Creates a new empty EpetraOpMultiVec containing numvecs columns.

Returns:
Pointer to an EpetraOpMultiVec

Implements Anasazi::MultiVec< double >.

Definition at line 85 of file AnasaziSpecializedEpetraAdapter.cpp.

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

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

Returns:
Pointer to an EpetraOpMultiVec

Implements Anasazi::MultiVec< double >.

Definition at line 96 of file AnasaziSpecializedEpetraAdapter.cpp.

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

Creates a new EpetraOpMultiVec 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 EpetraOpMultiVec

Implements Anasazi::MultiVec< double >.

Definition at line 103 of file AnasaziSpecializedEpetraAdapter.cpp.

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

Creates a new EpetraOpMultiVec 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 EpetraOpMultiVec

Implements Anasazi::MultiVec< double >.

Definition at line 110 of file AnasaziSpecializedEpetraAdapter.cpp.

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

Creates a new EpetraOpMultiVec 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 EpetraOpMultiVec

Implements Anasazi::MultiVec< double >.

Definition at line 116 of file AnasaziSpecializedEpetraAdapter.cpp.

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

Obtain the number of vectors in *this.

Implements Anasazi::MultiVec< double >.

Definition at line 180 of file AnasaziSpecializedEpetraAdapter.hpp.

ptrdiff_t Anasazi::EpetraOpMultiVec::GetGlobalLength ( ) const [inline, virtual]

The number of rows in the multivector.

Note:
This method supersedes GetVecLength, which will be deprecated.

Reimplemented from Anasazi::MultiVec< double >.

Definition at line 184 of file AnasaziSpecializedEpetraAdapter.hpp.

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

Obtain the vector length of *this.

Implements Anasazi::MultiVec< double >.

Definition at line 193 of file AnasaziSpecializedEpetraAdapter.hpp.

void Anasazi::EpetraOpMultiVec::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 >.

Definition at line 149 of file AnasaziSpecializedEpetraAdapter.cpp.

void Anasazi::EpetraOpMultiVec::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 169 of file AnasaziSpecializedEpetraAdapter.cpp.

void Anasazi::EpetraOpMultiVec::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 188 of file AnasaziSpecializedEpetraAdapter.cpp.

void Anasazi::EpetraOpMultiVec::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 217 of file AnasaziSpecializedEpetraAdapter.cpp.

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

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

Implements Anasazi::MultiVec< double >.

Definition at line 228 of file AnasaziSpecializedEpetraAdapter.hpp.

void Anasazi::EpetraOpMultiVec::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 264 of file AnasaziSpecializedEpetraAdapter.cpp.

void Anasazi::EpetraOpMultiVec::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.

Definition at line 243 of file AnasaziSpecializedEpetraAdapter.cpp.

void Anasazi::EpetraOpMultiVec::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 123 of file AnasaziSpecializedEpetraAdapter.cpp.

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

Fill the vectors in *this with random numbers.

Implements Anasazi::MultiVec< double >.

Definition at line 259 of file AnasaziSpecializedEpetraAdapter.hpp.

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

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

Implements Anasazi::MultiVec< double >.

Definition at line 266 of file AnasaziSpecializedEpetraAdapter.hpp.

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

Return the pointer to the Epetra_MultiVector object.

Reimplemented from Anasazi::EpetraMultiVecAccessor.

Definition at line 275 of file AnasaziSpecializedEpetraAdapter.hpp.

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

Return the pointer to the Epetra_MultiVector object.

Reimplemented from Anasazi::EpetraMultiVecAccessor.

Definition at line 278 of file AnasaziSpecializedEpetraAdapter.hpp.

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

Print *this EpetraOpMultiVec.

Implements Anasazi::MultiVec< double >.

Definition at line 287 of file AnasaziSpecializedEpetraAdapter.hpp.


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