Anasazi  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
List of all members
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

Public Member Functions

Constructors/Destructors
 EpetraOpMultiVec (const Teuchos::RCP< Epetra_Operator > &Op, const Epetra_BlockMap &Map_in, const int numvecs)
 Basic EpetraOpMultiVec constructor. More...
 
 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. More...
 
 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. More...
 
 EpetraOpMultiVec (const EpetraOpMultiVec &P_vec)
 Copy constructor. More...
 
virtual ~EpetraOpMultiVec ()
 Destructor. More...
 
Creation methods
MultiVec< double > * Clone (const int numvecs) const
 Creates a new empty EpetraOpMultiVec containing numvecs columns. More...
 
MultiVec< double > * CloneCopy () const
 Creates a new EpetraOpMultiVec and copies contents of *this into the new vector (deep copy). More...
 
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). More...
 
MultiVec< double > * CloneViewNonConst (const std::vector< int > &index)
 Creates a new EpetraOpMultiVec that shares the selected contents of *this. More...
 
const MultiVec< double > * CloneView (const std::vector< int > &index) const
 Creates a new EpetraOpMultiVec that shares the selected contents of *this. More...
 
Accessor methods
Teuchos::RCP< Epetra_MultiVectorGetEpetraMultiVector ()
 
Attribute methods
ptrdiff_t GetGlobalLength () const
 The number of rows in the multivector. More...
 
int GetNumberVecs () const
 Obtain the vector length of *this. More...
 
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)$. More...
 
void MvAddMv (double alpha, const MultiVec< double > &A, double beta, const MultiVec< double > &B)
 Replace *this with $\alpha A + \beta B$. More...
 
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)$. More...
 
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. More...
 
void MvScale (double alpha)
 Scale each element of the vectors in *this with alpha. More...
 
void MvScale (const std::vector< double > &alpha)
 Scale each element of the i-th vector in *this with alpha[i]. More...
 
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. More...
 
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. More...
 
void MvRandom ()
 Fill the vectors in *this with random numbers. More...
 
void MvInit (double alpha)
 Replace each element of the vectors in *this with alpha. More...
 
Accessor methods (inherited from EpetraMultiVecAccessor)
Epetra_MultiVectorGetEpetraMultiVec ()
 Return the pointer to the Epetra_MultiVector object. More...
 
const Epetra_MultiVectorGetEpetraMultiVec () const
 Return the pointer to the Epetra_MultiVector object. More...
 
Print method
void MvPrint (std::ostream &os) const
 Print *this EpetraOpMultiVec. More...
 
- Public Member Functions inherited from Anasazi::MultiVec< double >
 MultiVec ()
 Default constructor. More...
 
virtual ~MultiVec ()
 Destructor (virtual for memory safety of derived classes). More...
 
virtual void MvNorm (std::vector< typename Teuchos::ScalarTraits< double >::magnitudeType > &normvec) const =0
 Compute the 2-norm of each vector in *this. More...
 
- Public Member Functions inherited from Anasazi::EpetraMultiVecAccessor
virtual ~EpetraMultiVecAccessor ()
 Destructor. More...
 

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 66 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 27 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 34 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 42 of file AnasaziSpecializedEpetraAdapter.cpp.

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

Copy constructor.

Definition at line 50 of file AnasaziSpecializedEpetraAdapter.cpp.

virtual Anasazi::EpetraOpMultiVec::~EpetraOpMultiVec ( )
inlinevirtual

Destructor.

Definition at line 105 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 66 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 77 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 84 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 91 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 97 of file AnasaziSpecializedEpetraAdapter.cpp.

ptrdiff_t Anasazi::EpetraOpMultiVec::GetGlobalLength ( ) const
inlinevirtual

The number of rows in the multivector.

Implements Anasazi::MultiVec< double >.

Definition at line 161 of file AnasaziSpecializedEpetraAdapter.hpp.

int Anasazi::EpetraOpMultiVec::GetNumberVecs ( ) const
inlinevirtual

Obtain the vector length of *this.

Implements Anasazi::MultiVec< double >.

Definition at line 170 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 130 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 150 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 169 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 198 of file AnasaziSpecializedEpetraAdapter.cpp.

void Anasazi::EpetraOpMultiVec::MvScale ( double  alpha)
inlinevirtual

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

Implements Anasazi::MultiVec< double >.

Definition at line 205 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 245 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 224 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 104 of file AnasaziSpecializedEpetraAdapter.cpp.

void Anasazi::EpetraOpMultiVec::MvRandom ( )
inlinevirtual

Fill the vectors in *this with random numbers.

Implements Anasazi::MultiVec< double >.

Definition at line 236 of file AnasaziSpecializedEpetraAdapter.hpp.

void Anasazi::EpetraOpMultiVec::MvInit ( double  alpha)
inlinevirtual

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

Implements Anasazi::MultiVec< double >.

Definition at line 243 of file AnasaziSpecializedEpetraAdapter.hpp.

Epetra_MultiVector* Anasazi::EpetraOpMultiVec::GetEpetraMultiVec ( )
inlinevirtual

Return the pointer to the Epetra_MultiVector object.

Reimplemented from Anasazi::EpetraMultiVecAccessor.

Definition at line 252 of file AnasaziSpecializedEpetraAdapter.hpp.

const Epetra_MultiVector* Anasazi::EpetraOpMultiVec::GetEpetraMultiVec ( ) const
inlinevirtual

Return the pointer to the Epetra_MultiVector object.

Reimplemented from Anasazi::EpetraMultiVecAccessor.

Definition at line 255 of file AnasaziSpecializedEpetraAdapter.hpp.

void Anasazi::EpetraOpMultiVec::MvPrint ( std::ostream &  os) const
inlinevirtual

Print *this EpetraOpMultiVec.

Implements Anasazi::MultiVec< double >.

Definition at line 264 of file AnasaziSpecializedEpetraAdapter.hpp.


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