MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Private Member Functions | Private Attributes | List of all members
ConstrainedOptPack::MatrixDecompRangeOrthog Class Reference

Matrix subclass for variable reduction orthogonal matrix R = Gc(:,con_decomp)'*Y. More...

#include <ConstrainedOptPack_MatrixDecompRangeOrthog.hpp>

Inheritance diagram for ConstrainedOptPack::MatrixDecompRangeOrthog:
Inheritance graph
[legend]

Private Member Functions

void assert_initialized (const char func_name[]) const
 
 MatrixDecompRangeOrthog (const MatrixDecompRangeOrthog &)
 
MatrixDecompRangeOrthogoperator= (const MatrixDecompRangeOrthog &)
 

Private Attributes

AbstractLinAlgPack::MatrixOpNonsingC
 
AbstractLinAlgPack::MatrixOpD
 
AbstractLinAlgPack::MatrixSymOpNonsingS
 

Constructors/initializers

 MatrixDecompRangeOrthog ()
 Constructs uninitialized. More...
 
 MatrixDecompRangeOrthog (const C_ptr_t &C_ptr, const D_ptr_t &D_ptr, const S_ptr_t &S_ptr)
 Calls this->initialize(). More...
 
void initialize (const C_ptr_t &C_ptr, const D_ptr_t &D_ptr, const S_ptr_t &S_ptr)
 Initialize the matrix object. More...
 
void set_uninitialized ()
 Make uninitialized. More...
 

Access

const C_ptr_t & C_ptr () const
 
const D_ptr_t & D_ptr () const
 
const S_ptr_t & S_ptr () const
 

Overridden from MatrixOp

size_type rows () const
 
size_type cols () const
 
const VectorSpace & space_cols () const
 
const VectorSpace & space_rows () const
 
std::ostream & output (std::ostream &out) const
 
void Vp_StMtV (VectorMutable *v_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta) const
 

Overridden from MatrixOpNonsing

void V_InvMtV (VectorMutable *v_lhs, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2) const
 

Additional Inherited Members

- Public Types inherited from AbstractLinAlgPack::MatrixOp
enum  EMatNormType { MAT_NORM_INF, MAT_NORM_2, MAT_NORM_1, MAT_NORM_FORB }
 Type of matrix norm. More...
 
- Public Member Functions inherited from AbstractLinAlgPack::MatrixOpNonsing
MatrixOpNonsingoperator= (const MatrixOpNonsing &M)
 Calls operator=(MatrixOp&) More...
 
virtual mat_mwons_mut_ptr_t clone_mwons ()
 Clone the non-const matrix object (if supported). More...
 
virtual mat_mwons_ptr_t clone_mwons () const
 Clone the const matrix object (if supported). More...
 
const MatNorm calc_cond_num (EMatNormType requested_norm_type=MAT_NORM_1, bool allow_replacement=false) const
 Compute an estimate of the condition number of this matrix. More...
 
mat_mut_ptr_t clone ()
 Returns this->clone_mwons(). More...
 
mat_ptr_t clone () const
 Returns this->clone_mwons(). More...
 
mat_mns_mut_ptr_t clone_mns ()
 Returns this->clone_mwons(). More...
 
mat_mns_ptr_t clone_mns () const
 Returns this->clone_mwons(). More...
 
- Public Member Functions inherited from AbstractLinAlgPack::MatrixOp
virtual void zero_out ()
 M_lhs = 0 : Zero out the matrix. More...
 
virtual void Mt_S (value_type alpha)
 M_lhs *= alpha : Multiply a matrix by a scalar. More...
 
virtual MatrixOpoperator= (const MatrixOp &mwo_rhs)
 M_lhs = mwo_rhs : Virtual assignment operator. More...
 
const MatNorm calc_norm (EMatNormType requested_norm_type=MAT_NORM_1, bool allow_replacement=false) const
 Compute a norm of this matrix. More...
 
virtual mat_ptr_t sub_view (const Range1D &row_rng, const Range1D &col_rng) const
 Create a transient constant sub-matrix view of this matrix (if supported). More...
 
mat_ptr_t sub_view (const index_type &rl, const index_type &ru, const index_type &cl, const index_type &cu) const
 Inlined implementation calls this->sub_view(Range1D(rl,ru),Range1D(cl,cu)). More...
 
virtual mat_ptr_t perm_view (const Permutation *P_row, const index_type row_part[], int num_row_part, const Permutation *P_col, const index_type col_part[], int num_col_part) const
 Create a permuted view: M_perm = P_row' * M * P_col. More...
 
virtual mat_ptr_t perm_view_update (const Permutation *P_row, const index_type row_part[], int num_row_part, const Permutation *P_col, const index_type col_part[], int num_col_part, const mat_ptr_t &perm_view) const
 Reinitialize a permuted view: M_perm = P_row' * M * P_col. More...
 
- Public Member Functions inherited from AbstractLinAlgPack::MatrixBase
virtual ~MatrixBase ()
 Virtual destructor. More...
 
virtual size_type nz () const
 Return the number of nonzero elements in the matrix. More...
 
- Public Member Functions inherited from AbstractLinAlgPack::MatrixNonsing
virtual void V_InvMtV (VectorMutable *v_lhs, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2) const =0
 v_lhs = inv(op(M_rhs1)) * vs_rhs2 More...
 
virtual void V_InvMtV (VectorMutable *v_lhs, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2) const
 v_lhs = inv(op(M_rhs1)) * sv_rhs2 More...
 
virtual value_type transVtInvMtV (const Vector &v_rhs1, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3) const
 result = vs_rhs1' * inv(op(M_rhs2)) * vs_rhs3 More...
 
virtual value_type transVtInvMtV (const SpVectorSlice &sv_rhs1, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3) const
 result = sv_rhs1' * inv(op(M_rhs2)) * sv_rhs3 More...
 
virtual void M_StInvMtM (MatrixOp *m_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2) const
 m_lhs = alpha * inv(op(M_rhs1)) * op(mwo_rhs2) (right). More...
 
virtual void M_StMtInvM (MatrixOp *m_lhs, value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, BLAS_Cpp::Transp trans_rhs2) const
 m_lhs = alpha * op(mwo_rhs1) * inv(op(M_rhs2)) (left). More...
 
- Protected Member Functions inherited from AbstractLinAlgPack::MatrixOp
virtual bool Mp_StM (MatrixOp *mwo_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs) const
 mwo_lhs += alpha * op(M_rhs) (BLAS xAXPY). More...
 
virtual bool Mp_StM (value_type alpha, const MatrixOp &M_rhs, BLAS_Cpp::Transp trans_rhs)
 M_lhs += alpha * op(mwo_rhs) (BLAS xAXPY). More...
 
virtual bool Mp_StMtP (MatrixOp *mwo_lhs, value_type alpha, BLAS_Cpp::Transp M_trans, const GenPermMatrixSlice &P_rhs, BLAS_Cpp::Transp P_rhs_trans) const
 mwo_lhs += alpha * op(M_rhs) * op(P_rhs). More...
 
virtual bool Mp_StMtP (value_type alpha, const MatrixOp &mwo_rhs, BLAS_Cpp::Transp M_trans, const GenPermMatrixSlice &P_rhs, BLAS_Cpp::Transp P_rhs_trans)
 M_lhs += alpha * op(mwo_rhs) * op(P_rhs). More...
 
virtual bool Mp_StPtM (MatrixOp *mwo_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs, BLAS_Cpp::Transp P_rhs_trans, BLAS_Cpp::Transp M_trans) const
 mwo_lhs += alpha * op(P_rhs) * op(M_rhs). More...
 
virtual bool Mp_StPtM (value_type alpha, const GenPermMatrixSlice &P_rhs, BLAS_Cpp::Transp P_rhs_trans, const MatrixOp &mwo_rhs, BLAS_Cpp::Transp M_trans)
 M_lhs += alpha * op(P_rhs) * op(mwo_rhs). More...
 
virtual bool Mp_StPtMtP (MatrixOp *mwo_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_trans, const GenPermMatrixSlice &P_rhs2, BLAS_Cpp::Transp P_rhs2_trans) const
 mwo_lhs += alpha * op(P_rhs1) * op(M_rhs) * op(P_rhs2). More...
 
virtual bool Mp_StPtMtP (value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, const MatrixOp &mwo_rhs, BLAS_Cpp::Transp M_trans, const GenPermMatrixSlice &P_rhs2, BLAS_Cpp::Transp P_rhs2_trans)
 M_lhs += alpha * op(P_rhs1) * op(mwo_rhs) * op(P_rhs2). More...
 
virtual void Vp_StMtV (VectorMutable *v_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta) const =0
 v_lhs = alpha * op(M_rhs1) * v_rhs2 + beta * v_lhs (BLAS xGEMV) More...
 
virtual void Vp_StMtV (VectorMutable *v_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2, value_type beta) const
 v_lhs = alpha * op(M_rhs1) * sv_rhs2 + beta * v_lhs (BLAS xGEMV) More...
 
virtual void Vp_StPtMtV (VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_rhs2_trans, const Vector &v_rhs3, value_type beta) const
 v_lhs = alpha * op(P_rhs1) * op(M_rhs2) * v_rhs3 + beta * v_rhs More...
 
virtual void Vp_StPtMtV (VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_rhs2_trans, const SpVectorSlice &sv_rhs3, value_type beta) const
 v_lhs = alpha * op(P_rhs1) * op(M_rhs2) * sv_rhs3 + beta * v_rhs More...
 
virtual value_type transVtMtV (const Vector &v_rhs1, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3) const
 result = v_rhs1' * op(M_rhs2) * v_rhs3 More...
 
virtual value_type transVtMtV (const SpVectorSlice &sv_rhs1, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3) const
 result = sv_rhs1' * op(M_rhs2) * sv_rhs3 More...
 
virtual void syr2k (BLAS_Cpp::Transp M_trans, value_type alpha, const GenPermMatrixSlice &P1, BLAS_Cpp::Transp P1_trans, const GenPermMatrixSlice &P2, BLAS_Cpp::Transp P2_trans, value_type beta, MatrixSymOp *symwo_lhs) const
 Perform a specialized rank-2k update of a dense symmetric matrix of the form: More...
 
virtual bool Mp_StMtM (MatrixOp *mwo_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta) const
 mwo_lhs = alpha * op(M_rhs1) * op(mwo_rhs2) + beta * mwo_lhs (left) (xGEMM). More...
 
virtual bool Mp_StMtM (MatrixOp *mwo_lhs, value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, BLAS_Cpp::Transp trans_rhs2, value_type beta) const
 mwo_lhs = alpha * op(mwo_rhs1) * op(M_rhs2) + beta * mwo_lhs (right) (xGEMM) More...
 
virtual bool Mp_StMtM (value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta)
 M_lhs = alpha * op(mwo_rhs1) * op(mwo_rhs2) + beta * mwo_lhs (left) (xGEMM) More...
 
virtual bool syrk (BLAS_Cpp::Transp M_trans, value_type alpha, value_type beta, MatrixSymOp *sym_lhs) const
 Perform a rank-k update of a symmetric matrix of the form: More...
 
virtual bool syrk (const MatrixOp &mwo_rhs, BLAS_Cpp::Transp M_trans, value_type alpha, value_type beta)
 Perform a rank-k update of a symmetric matrix of the form: More...
 

Detailed Description

Matrix subclass for variable reduction orthogonal matrix R = Gc(:,con_decomp)'*Y.

This matrix class is used to represent the matrix:

R = C*(I + D*D')

inv(R) =  inv(I + D*D') * inv(C)

       = (I - D * inv(I + D'*D) * D') * inv(C)
                      \______/
                         S

Above, the expresion for inv(R) is derived using the Sherman-Morrison-Woodbury formula. The nonsingular matrix S = I + D'*D is setup by the client, along with the basis matrix C and the direct sensitivity matrix D.

Definition at line 67 of file ConstrainedOptPack_MatrixDecompRangeOrthog.hpp.

Constructor & Destructor Documentation

ConstrainedOptPack::MatrixDecompRangeOrthog::MatrixDecompRangeOrthog ( )

Constructs uninitialized.

Postconditions:

Definition at line 56 of file ConstrainedOptPack_MatrixDecompRangeOrthog.cpp.

ConstrainedOptPack::MatrixDecompRangeOrthog::MatrixDecompRangeOrthog ( const C_ptr_t &  C_ptr,
const D_ptr_t &  D_ptr,
const S_ptr_t &  S_ptr 
)

Calls this->initialize().

Definition at line 59 of file ConstrainedOptPack_MatrixDecompRangeOrthog.cpp.

ConstrainedOptPack::MatrixDecompRangeOrthog::MatrixDecompRangeOrthog ( const MatrixDecompRangeOrthog )
private

Member Function Documentation

void ConstrainedOptPack::MatrixDecompRangeOrthog::initialize ( const C_ptr_t &  C_ptr,
const D_ptr_t &  D_ptr,
const S_ptr_t &  S_ptr 
)

Initialize the matrix object.

Parameters
C_ptr[in]
D_ptr[in]
S_ptr[in]

Preconditions:

  • C_ptr.get() != NULL (throw std::invalid_argument)
  • D_ptr.get() != NULL (throw std::invalid_argument)
  • S_ptr.get() != NULL (throw std::invalid_argument)
  • C_ptr->space_rows().is_compatible(D_ptr->space_cols()) == true (throw VectorSpace::IncompatibleVectorSpaces)
  • S_ptr->space_cols().is_compatible(D_ptr->space_rows()) == true (throw VectorSpace::IncompatibleVectorSpaces)

Postconditions:

Definition at line 68 of file ConstrainedOptPack_MatrixDecompRangeOrthog.cpp.

void ConstrainedOptPack::MatrixDecompRangeOrthog::set_uninitialized ( )

Make uninitialized.

Postconditions:

Definition at line 99 of file ConstrainedOptPack_MatrixDecompRangeOrthog.cpp.

const MatrixDecompRangeOrthog::C_ptr_t & ConstrainedOptPack::MatrixDecompRangeOrthog::C_ptr ( ) const
inline
const MatrixDecompRangeOrthog::D_ptr_t & ConstrainedOptPack::MatrixDecompRangeOrthog::D_ptr ( ) const
inline
const MatrixDecompRangeOrthog::S_ptr_t & ConstrainedOptPack::MatrixDecompRangeOrthog::S_ptr ( ) const
inline
size_type ConstrainedOptPack::MatrixDecompRangeOrthog::rows ( ) const
virtual
size_type ConstrainedOptPack::MatrixDecompRangeOrthog::cols ( ) const
virtual
const VectorSpace & ConstrainedOptPack::MatrixDecompRangeOrthog::space_cols ( ) const
virtual
const VectorSpace & ConstrainedOptPack::MatrixDecompRangeOrthog::space_rows ( ) const
virtual
std::ostream & ConstrainedOptPack::MatrixDecompRangeOrthog::output ( std::ostream &  out) const
virtual

Reimplemented from AbstractLinAlgPack::MatrixOp.

Definition at line 129 of file ConstrainedOptPack_MatrixDecompRangeOrthog.cpp.

void ConstrainedOptPack::MatrixDecompRangeOrthog::Vp_StMtV ( VectorMutable *  v_lhs,
value_type  alpha,
BLAS_Cpp::Transp  trans_rhs1,
const Vector &  v_rhs2,
value_type  beta 
) const
void ConstrainedOptPack::MatrixDecompRangeOrthog::V_InvMtV ( VectorMutable *  v_lhs,
BLAS_Cpp::Transp  trans_rhs1,
const Vector &  v_rhs2 
) const
void ConstrainedOptPack::MatrixDecompRangeOrthog::assert_initialized ( const char  func_name[]) const
private
MatrixDecompRangeOrthog& ConstrainedOptPack::MatrixDecompRangeOrthog::operator= ( const MatrixDecompRangeOrthog )
private

Member Data Documentation

AbstractLinAlgPack::MatrixOpNonsing* ConstrainedOptPack::MatrixDecompRangeOrthog::C
private
AbstractLinAlgPack::MatrixOp* ConstrainedOptPack::MatrixDecompRangeOrthog::D
private
AbstractLinAlgPack::MatrixSymOpNonsing* ConstrainedOptPack::MatrixDecompRangeOrthog::S
private

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