AbstractLinAlgPack: C++ Interfaces For Vectors, Matrices And Related Linear Algebra Objects Version of the Day
AbstractLinAlgPack::MultiVectorMutableCols Class Reference

Default subclass for MultiVectorMutable implemented using columns of separate abstract vectors. More...

#include <AbstractLinAlgPack_MultiVectorMutableCols.hpp>

Inheritance diagram for AbstractLinAlgPack::MultiVectorMutableCols:
Inheritance graph
[legend]

List of all members.

Constructors/Initializers

 MultiVectorMutableCols ()
 Construct to initialized.
 MultiVectorMutableCols (const Teuchos::RCP< const VectorSpace > &space_cols, const Teuchos::RCP< const VectorSpace > &space_rows, Teuchos::RCP< VectorMutable > col_vecs[]=NULL)
 Calls initalize().
void initialize (const Teuchos::RCP< const VectorSpace > &space_cols, const Teuchos::RCP< const VectorSpace > &space_rows, Teuchos::RCP< VectorMutable > col_vecs[]=NULL)
 Initialize given the spaces for the columns and rows and possibly the column vectors.
void set_uninitialized ()
 Set uninitalized.

Overridden from MatrixBase

size_type rows () const
 
size_type cols () const
 

Overridden from MatrixOp

const VectorSpacespace_cols () const
 
const VectorSpacespace_rows () const
 
void zero_out ()
 
void Mt_S (value_type alpha)
 
MatrixOpoperator= (const MatrixOp &mwo_rhs)
 
mat_mut_ptr_t clone ()
 
mat_ptr_t clone () const
 
void Vp_StMtV (VectorMutable *v_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta) const
 
void Vp_StMtV (VectorMutable *v_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2, value_type beta) const
 
bool syrk (BLAS_Cpp::Transp M_trans, value_type alpha, value_type beta, MatrixSymOp *sym_lhs) const
 

Overridden from MultiVector

access_by_t access_by () const
 Returns return & COL_ACCESS == true only.

Overridden from MultiVectorMutable

vec_mut_ptr_t col (index_type j)
 
vec_mut_ptr_t row (index_type i)
 Returns return.get() == NULL
vec_mut_ptr_t diag (int k)
 Returns return.get() == NULL
multi_vec_mut_ptr_t mv_sub_view (const Range1D &row_rng, const Range1D &col_rng)
 

Detailed Description

Default subclass for MultiVectorMutable implemented using columns of separate abstract vectors.

Only column access is permitted. This is a very bad implementation of a multi-vector but this will work in situations where you need a multi-vector but some underlying linear algebra library does not directly support them.

The only difficult issue is what to use for the vector space for the rows of the multi-vector space_row. This has to be carefully chosen so that all will work well.

ToDo: Finish documentation!

Definition at line 68 of file AbstractLinAlgPack_MultiVectorMutableCols.hpp.


Constructor & Destructor Documentation

AbstractLinAlgPack::MultiVectorMutableCols::MultiVectorMutableCols ( )

Construct to initialized.

Definition at line 53 of file AbstractLinAlgPack_MultiVectorMutableCols.cpp.

AbstractLinAlgPack::MultiVectorMutableCols::MultiVectorMutableCols ( const Teuchos::RCP< const VectorSpace > &  space_cols,
const Teuchos::RCP< const VectorSpace > &  space_rows,
Teuchos::RCP< VectorMutable col_vecs[] = NULL 
)

Calls initalize().

Definition at line 56 of file AbstractLinAlgPack_MultiVectorMutableCols.cpp.


Member Function Documentation

void AbstractLinAlgPack::MultiVectorMutableCols::initialize ( const Teuchos::RCP< const VectorSpace > &  space_cols,
const Teuchos::RCP< const VectorSpace > &  space_rows,
Teuchos::RCP< VectorMutable col_vecs[] = NULL 
)

Initialize given the spaces for the columns and rows and possibly the column vectors.

Parameters:
space_cols[in] The space that the columns must lie in. The underlying vector space must not be changed while this is in use.
space_rows[in] The space that the rows must lie in. The underlying vector space must not be changed while this is in use. What this argument really specifies is what vector type will be compatible with the vectors that the client may try to use to interact with the rows of this multivector.
col_vecs[in] Array (size space_rows->dim()) of column vectors to use for the columns of this. It is allowed for col_vecs==NULL in which case space_cols->create_member() will be used to create the colmns of this.

Preconditions:

  • space_cols.get() != NULL (throw std::invalid_argument)
  • space_rows.get() != NULL (throw std::invalid_argument)
  • space_cols->dim() > 0 (throw std::invalid_argument)
  • space_rows->dim() > 0 (throw std::invalid_argument)
  • [col_vecs != NULL] col_vecs[j-1].get() != NULL && col_vecs[j-1]->space().is_compatible(*space_cols) == true, for j=1..space_rows->dim()

Postconditions:

&this->space_cols() == space_cols.get() &this->space_rows() == space_rows.get() [col_vecs != NULL] this->col(j).get() == col_vecs[j-1].get(), for j=1..space_rows->dim()

Definition at line 65 of file AbstractLinAlgPack_MultiVectorMutableCols.cpp.

void AbstractLinAlgPack::MultiVectorMutableCols::set_uninitialized ( )

Set uninitalized.

Definition at line 85 of file AbstractLinAlgPack_MultiVectorMutableCols.cpp.

size_type AbstractLinAlgPack::MultiVectorMutableCols::rows ( ) const [virtual]

Reimplemented from AbstractLinAlgPack::MatrixBase.

Definition at line 94 of file AbstractLinAlgPack_MultiVectorMutableCols.cpp.

size_type AbstractLinAlgPack::MultiVectorMutableCols::cols ( ) const [virtual]

Reimplemented from AbstractLinAlgPack::MatrixBase.

Definition at line 99 of file AbstractLinAlgPack_MultiVectorMutableCols.cpp.

const VectorSpace& AbstractLinAlgPack::MultiVectorMutableCols::space_cols ( ) const [virtual]
const VectorSpace& AbstractLinAlgPack::MultiVectorMutableCols::space_rows ( ) const [virtual]
void AbstractLinAlgPack::MultiVectorMutableCols::zero_out ( ) [virtual]
void AbstractLinAlgPack::MultiVectorMutableCols::Mt_S ( value_type  alpha) [virtual]
MatrixOp & AbstractLinAlgPack::MultiVectorMutableCols::operator= ( const MatrixOp mwo_rhs) [virtual]
MatrixOp::mat_mut_ptr_t AbstractLinAlgPack::MultiVectorMutableCols::clone ( ) [virtual]
MatrixOp::mat_ptr_t AbstractLinAlgPack::MultiVectorMutableCols::clone ( ) const [virtual]
void AbstractLinAlgPack::MultiVectorMutableCols::Vp_StMtV ( VectorMutable v_lhs,
value_type  alpha,
BLAS_Cpp::Transp  trans_rhs1,
const Vector v_rhs2,
value_type  beta 
) const [virtual]
void AbstractLinAlgPack::MultiVectorMutableCols::Vp_StMtV ( VectorMutable v_lhs,
value_type  alpha,
BLAS_Cpp::Transp  trans_rhs1,
const SpVectorSlice sv_rhs2,
value_type  beta 
) const
bool AbstractLinAlgPack::MultiVectorMutableCols::syrk ( BLAS_Cpp::Transp  M_trans,
value_type  alpha,
value_type  beta,
MatrixSymOp sym_lhs 
) const [virtual]

Reimplemented from AbstractLinAlgPack::MatrixOp.

Definition at line 235 of file AbstractLinAlgPack_MultiVectorMutableCols.cpp.

MultiVector::access_by_t AbstractLinAlgPack::MultiVectorMutableCols::access_by ( ) const [virtual]

Returns return & COL_ACCESS == true only.

Implements AbstractLinAlgPack::MultiVector.

Definition at line 271 of file AbstractLinAlgPack_MultiVectorMutableCols.cpp.

MultiVectorMutable::vec_mut_ptr_t AbstractLinAlgPack::MultiVectorMutableCols::col ( index_type  j) [virtual]
MultiVectorMutable::vec_mut_ptr_t AbstractLinAlgPack::MultiVectorMutableCols::row ( index_type  i) [virtual]

Returns return.get() == NULL

Implements AbstractLinAlgPack::MultiVectorMutable.

Definition at line 286 of file AbstractLinAlgPack_MultiVectorMutableCols.cpp.

MultiVectorMutable::vec_mut_ptr_t AbstractLinAlgPack::MultiVectorMutableCols::diag ( int  k) [virtual]

Returns return.get() == NULL

Implements AbstractLinAlgPack::MultiVectorMutable.

Definition at line 292 of file AbstractLinAlgPack_MultiVectorMutableCols.cpp.

MultiVectorMutable::multi_vec_mut_ptr_t AbstractLinAlgPack::MultiVectorMutableCols::mv_sub_view ( const Range1D &  row_rng,
const Range1D &  col_rng 
) [virtual]

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