ROL
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
ROL::MultiVectorDefault< Real > Class Template Reference

Default implementation of the ROL::MultiVector container class. More...

#include <ROL_MultiVectorDefault.hpp>

+ Inheritance diagram for ROL::MultiVectorDefault< Real >:

Public Member Functions

 MultiVectorDefault (APV mvec)
 
 MultiVectorDefault (PV vec)
 
 ~MultiVectorDefault ()
 
PMV clone () const
 Make a new MultiVector of the same dimensions. More...
 
PMV clone (const int numvecs) const
 Make a new MultiVector of specified "width". More...
 
PMV deepCopy () const
 Make a deep copy of this MultiVector. More...
 
PMV deepCopy (const std::vector< int > &index) const
 Make a deep copy of this MultiVector. More...
 
PMV shallowCopy (const std::vector< int > &index)
 Make a shallow copy of this MultiVector. More...
 
const PMV shallowCopyConst (const std::vector< int > &index) const
 Make a shallow copy of this MultiVector. More...
 
ptrdiff_t getLength () const
 Get the number of elements of a vector in the MultiVector. More...
 
int getNumberOfVectors () const
 Get the number of vectors in the MultiVector. More...
 
void axpy (const Real alpha, const MV &x)
 Perform the axpy operation columnwise on the MultiVector \( y_i\leftarrow y_i+\alpha x_i\) where \(y\) is this MultiVector. More...
 
void gemm (const Real alpha, const MV &A, const Teuchos::SerialDenseMatrix< int, Real > &B, const Real beta)
 Generic BLAS level 3 matrix multiplication \(\text{this}\leftarrow \alpha A B+\beta\text{*this}\)
More...
 
void scale (const Real alpha)
 Scale the MultiVector by a single scalar alpha \(\text{this}\leftarrow\alpha\text{this}\). More...
 
void scale (const std::vector< Real > &alpha)
 Scale each vector in the MultiVector by a different alpha \(\text{this}[i]\leftarrow\alpha[i]\text{*this}[i]\). More...
 
void set (const MV &A)
 Set the MultiVector equal to another MultiVector. More...
 
void set (const MV &A, const std::vector< int > &index)
 Set some of the vectors in this MultiVector equal to corresponding vectors in another MultiVector. More...
 
void innerProducts (const Real alpha, const MV &A, Teuchos::SerialDenseMatrix< int, Real > &B) const
 Compute \(\alpha A^\top \text{*this}\). More...
 
void dots (const MV &A, std::vector< Real > &b) const
 Compute dot products of pairs of vectors. More...
 
void norms (std::vector< Real > &normvec) const
 Compute the norm of each vector in the MultiVector. More...
 
void zero ()
 Zero each of the vectors in the MultiVector. More...
 
PV getVector (int i) const
 Return a pointer to the ith vector. More...
 
- Public Member Functions inherited from ROL::MultiVector< Real >
virtual ~MultiVector ()
 

Private Types

typedef Vector< Real > V
 
typedef Teuchos::RCP< VPV
 
typedef Teuchos::ArrayRCP< PVAPV
 
typedef MultiVector< Real > MV
 
typedef Teuchos::RCP< MVPMV
 

Private Member Functions

virtual bool dimensionMismatch (const MV &A) const
 

Private Attributes

APV mvec_
 
int numVectors_
 
int length_
 

Detailed Description

template<class Real>
class ROL::MultiVectorDefault< Real >

Default implementation of the ROL::MultiVector container class.

Definition at line 58 of file ROL_MultiVectorDefault.hpp.

Member Typedef Documentation

◆ V

template<class Real >
typedef Vector<Real> ROL::MultiVectorDefault< Real >::V
private

Definition at line 60 of file ROL_MultiVectorDefault.hpp.

◆ PV

template<class Real >
typedef Teuchos::RCP<V> ROL::MultiVectorDefault< Real >::PV
private

Definition at line 61 of file ROL_MultiVectorDefault.hpp.

◆ APV

template<class Real >
typedef Teuchos::ArrayRCP<PV> ROL::MultiVectorDefault< Real >::APV
private

Definition at line 62 of file ROL_MultiVectorDefault.hpp.

◆ MV

template<class Real >
typedef MultiVector<Real> ROL::MultiVectorDefault< Real >::MV
private

Definition at line 63 of file ROL_MultiVectorDefault.hpp.

◆ PMV

template<class Real >
typedef Teuchos::RCP<MV> ROL::MultiVectorDefault< Real >::PMV
private

Definition at line 64 of file ROL_MultiVectorDefault.hpp.

Constructor & Destructor Documentation

◆ MultiVectorDefault() [1/2]

template<class Real >
ROL::MultiVectorDefault< Real >::MultiVectorDefault ( APV  mvec)
inline

Definition at line 81 of file ROL_MultiVectorDefault.hpp.

◆ MultiVectorDefault() [2/2]

template<class Real >
ROL::MultiVectorDefault< Real >::MultiVectorDefault ( PV  vec)
inline

Definition at line 86 of file ROL_MultiVectorDefault.hpp.

◆ ~MultiVectorDefault()

template<class Real >
ROL::MultiVectorDefault< Real >::~MultiVectorDefault ( )
inline

Definition at line 92 of file ROL_MultiVectorDefault.hpp.

Member Function Documentation

◆ dimensionMismatch()

template<class Real >
virtual bool ROL::MultiVectorDefault< Real >::dimensionMismatch ( const MV A) const
inlineprivatevirtual

◆ clone() [1/2]

template<class Real >
PMV ROL::MultiVectorDefault< Real >::clone ( ) const
inlinevirtual

Make a new MultiVector of the same dimensions.

Returns
A reference-counted pointer to the cloned MultiVector

Implements ROL::MultiVector< Real >.

Definition at line 95 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::numVectors_.

◆ clone() [2/2]

template<class Real >
PMV ROL::MultiVectorDefault< Real >::clone ( const int  numvecs) const
inlinevirtual

Make a new MultiVector of specified "width".

Returns
A reference-counted pointer to the cloned MultiVector

Implements ROL::MultiVector< Real >.

Definition at line 104 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_.

◆ deepCopy() [1/2]

template<class Real >
PMV ROL::MultiVectorDefault< Real >::deepCopy ( ) const
inlinevirtual

Make a deep copy of this MultiVector.

Returns
A reference-counted pointer to a new MultiVector containing deep copied values

Implements ROL::MultiVector< Real >.

Definition at line 117 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::numVectors_.

◆ deepCopy() [2/2]

template<class Real >
PMV ROL::MultiVectorDefault< Real >::deepCopy ( const std::vector< int > &  index) const
inlinevirtual

Make a deep copy of this MultiVector.

Parameters
[in]Arrayof indices of the vectors to copy
Returns
A reference-counted pointer to a new MultiVector containing deep copied values

Implements ROL::MultiVector< Real >.

Definition at line 127 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_.

◆ shallowCopy()

template<class Real >
PMV ROL::MultiVectorDefault< Real >::shallowCopy ( const std::vector< int > &  index)
inlinevirtual

Make a shallow copy of this MultiVector.

Parameters
[in]Arrayof indices of the vectors to copy
Returns
A reference-counted pointer to a new MultiVector where the elements point to the data in *this

Implements ROL::MultiVector< Real >.

Definition at line 139 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_.

◆ shallowCopyConst()

template<class Real >
const PMV ROL::MultiVectorDefault< Real >::shallowCopyConst ( const std::vector< int > &  index) const
inlinevirtual

Make a shallow copy of this MultiVector.

Parameters
[in]Arrayof indices of the vectors to copy
Returns
A reference-counted pointer to a new MultiVector where the elements point to the data in *this

Implements ROL::MultiVector< Real >.

Definition at line 150 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_.

◆ getLength()

template<class Real >
ptrdiff_t ROL::MultiVectorDefault< Real >::getLength ( ) const
inlinevirtual

Get the number of elements of a vector in the MultiVector.

Returns
Number of elements in a vector

Implements ROL::MultiVector< Real >.

Definition at line 161 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::length_.

◆ getNumberOfVectors()

template<class Real >
int ROL::MultiVectorDefault< Real >::getNumberOfVectors ( ) const
inlinevirtual

Get the number of vectors in the MultiVector.

Returns
Number of vectors in the MultiVector

Implements ROL::MultiVector< Real >.

Definition at line 166 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::numVectors_.

◆ axpy()

template<class Real >
void ROL::MultiVectorDefault< Real >::axpy ( const Real  alpha,
const MV x 
)
inlinevirtual

Perform the axpy operation columnwise on the MultiVector \( y_i\leftarrow y_i+\alpha x_i\) where \(y\) is this MultiVector.

Parameters
[in]alphais the scaling factor
[in]mvis the

Implements ROL::MultiVector< Real >.

Definition at line 170 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVector< Real >::getVector(), ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::numVectors_.

◆ gemm()

template<class Real >
void ROL::MultiVectorDefault< Real >::gemm ( const Real  alpha,
const MV A,
const Teuchos::SerialDenseMatrix< int, Real > &  B,
const Real  beta 
)
inlinevirtual

Generic BLAS level 3 matrix multiplication \(\text{this}\leftarrow \alpha A B+\beta\text{*this}\)

Parameters
[in]alphais a multiplicative factor of A
[in]

Implements ROL::MultiVector< Real >.

Definition at line 178 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVector< Real >::getVector(), ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::scale().

◆ scale() [1/2]

template<class Real >
void ROL::MultiVectorDefault< Real >::scale ( const Real  alpha)
inlinevirtual

Scale the MultiVector by a single scalar alpha \(\text{this}\leftarrow\alpha\text{this}\).

Parameters
[in]alphais a scalar multiplicative factor

Implements ROL::MultiVector< Real >.

Definition at line 195 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::numVectors_.

Referenced by ROL::MultiVectorDefault< Real >::gemm().

◆ scale() [2/2]

template<class Real >
void ROL::MultiVectorDefault< Real >::scale ( const std::vector< Real > &  alpha)
inlinevirtual

Scale each vector in the MultiVector by a different alpha \(\text{this}[i]\leftarrow\alpha[i]\text{*this}[i]\).

Parameters
[in]alphais a vector of multiplicative factors

Implements ROL::MultiVector< Real >.

Definition at line 203 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::numVectors_.

◆ set() [1/2]

template<class Real >
void ROL::MultiVectorDefault< Real >::set ( const MV A)
inlinevirtual

Set the MultiVector equal to another MultiVector.

Parameters
[in]

Implements ROL::MultiVector< Real >.

Definition at line 215 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::numVectors_.

◆ set() [2/2]

template<class Real >
void ROL::MultiVectorDefault< Real >::set ( const MV A,
const std::vector< int > &  index 
)
inlinevirtual

Set some of the vectors in this MultiVector equal to corresponding vectors in another MultiVector.

Parameters
[in]

Implements ROL::MultiVector< Real >.

Definition at line 229 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::numVectors_.

◆ innerProducts()

template<class Real >
void ROL::MultiVectorDefault< Real >::innerProducts ( const Real  alpha,
const MV A,
Teuchos::SerialDenseMatrix< int, Real > &  B 
) const
inlinevirtual

Compute \(\alpha A^\top \text{*this}\).

Parameters
[in]alphais a multiplicative factor
[in]

Implements ROL::MultiVector< Real >.

Definition at line 247 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVector< Real >::getNumberOfVectors(), ROL::MultiVector< Real >::getVector(), ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::numVectors_.

◆ dots()

template<class Real >
void ROL::MultiVectorDefault< Real >::dots ( const MV A,
std::vector< Real > &  b 
) const
inlinevirtual

◆ norms()

template<class Real >
void ROL::MultiVectorDefault< Real >::norms ( std::vector< Real > &  normvec) const
inlinevirtual

Compute the norm of each vector in the MultiVector.

Parameters
[out]&bb is a vector containing the norms of the vectors contained in this MultiVector

Implements ROL::MultiVector< Real >.

Definition at line 276 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::numVectors_.

◆ zero()

template<class Real >
void ROL::MultiVectorDefault< Real >::zero ( )
inlinevirtual

◆ getVector()

template<class Real >
PV ROL::MultiVectorDefault< Real >::getVector ( int  i) const
inlinevirtual

Return a pointer to the ith vector.

Parameters
[in]iis the index of the desired vector
Returns
A reference-counted pointer to the desired vector

Implements ROL::MultiVector< Real >.

Definition at line 293 of file ROL_MultiVectorDefault.hpp.

References ROL::MultiVectorDefault< Real >::mvec_, and ROL::MultiVectorDefault< Real >::numVectors_.

Member Data Documentation

◆ mvec_

template<class Real >
APV ROL::MultiVectorDefault< Real >::mvec_
private

◆ numVectors_

template<class Real >
int ROL::MultiVectorDefault< Real >::numVectors_
private

◆ length_

template<class Real >
int ROL::MultiVectorDefault< Real >::length_
private

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