AbstractLinAlgPack: C++ Interfaces For Vectors, Matrices And Related Linear Algebra Objects
Version of the Day
|
Aggregate matrix class for a matrix and its permuted view. More...
#include <AbstractLinAlgPack_MatrixPermAggr.hpp>
Public types | |
typedef Teuchos::RCP< const Permutation > | perm_ptr_t |
Constructors / initializers | |
MatrixPermAggr () | |
Construct to uninitialized. More... | |
MatrixPermAggr (const mat_ptr_t &mat_orig, const perm_ptr_t &row_perm, const perm_ptr_t &col_perm, const mat_ptr_t &mat_perm) | |
Calls this->initialize() . More... | |
void | initialize (const mat_ptr_t &mat_orig, const perm_ptr_t &row_perm, const perm_ptr_t &col_perm, const mat_ptr_t &mat_perm) |
Initialize. More... | |
void | set_uninitialized () |
Set uninitialized. More... | |
Access | |
const mat_ptr_t & | mat_orig () const |
const perm_ptr_t & | row_perm () const |
const perm_ptr_t & | col_perm () const |
const mat_ptr_t & | mat_perm () const |
Overridden from MatrixBase | |
size_type | rows () const |
size_type | cols () const |
size_type | nz () const |
Overridden from MatrixOp | |
const VectorSpace & | space_cols () const |
const VectorSpace & | space_rows () const |
MatrixOp::mat_ptr_t | sub_view (const Range1D &row_rng, const Range1D &col_rng) const |
MatrixOp & | operator= (const MatrixOp &M) |
std::ostream & | output (std::ostream &out) const |
bool | Mp_StM (MatrixOp *mwo_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs) const |
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 |
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 |
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 |
void | Vp_StMtV (VectorMutable *vs_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta) const |
void | Vp_StMtV (VectorMutable *vs_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2, value_type beta) const |
void | Vp_StPtMtV (VectorMutable *vs_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 |
void | Vp_StPtMtV (VectorMutable *vs_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 |
value_type | transVtMtV (const Vector &v_rhs1, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3) const |
value_type | transVtMtV (const SpVectorSlice &sv_rhs1, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3) const |
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 |
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 |
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 |
bool | syrk (BLAS_Cpp::Transp M_trans, value_type alpha, value_type beta, MatrixSymOp *sym_lhs) 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::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 mat_mut_ptr_t | clone () |
Clone the non-const matrix object (if supported). More... | |
virtual mat_ptr_t | clone () const |
Clone the const matrix object (if supported). More... | |
const MatNorm | calc_norm (EMatNormType requested_norm_type=MAT_NORM_1, bool allow_replacement=false) const |
Compute a norm of this matrix. 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... | |
Protected Member Functions inherited from AbstractLinAlgPack::MatrixOp | |
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 (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 (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 (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 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 (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... | |
Aggregate matrix class for a matrix and its permuted view.
mat_perm = row_perm * mat_orig * col_perm'
.
Definition at line 54 of file AbstractLinAlgPack_MatrixPermAggr.hpp.
Definition at line 63 of file AbstractLinAlgPack_MatrixPermAggr.hpp.
AbstractLinAlgPack::MatrixPermAggr::MatrixPermAggr | ( | ) |
Construct to uninitialized.
Definition at line 56 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
AbstractLinAlgPack::MatrixPermAggr::MatrixPermAggr | ( | const mat_ptr_t & | mat_orig, |
const perm_ptr_t & | row_perm, | ||
const perm_ptr_t & | col_perm, | ||
const mat_ptr_t & | mat_perm | ||
) |
Calls this->initialize()
.
Definition at line 59 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
void AbstractLinAlgPack::MatrixPermAggr::initialize | ( | const mat_ptr_t & | mat_orig, |
const perm_ptr_t & | row_perm, | ||
const perm_ptr_t & | col_perm, | ||
const mat_ptr_t & | mat_perm | ||
) |
Initialize.
mat_perm = row_perm' * mat_orig * col_perm
.
mat_orig | [in] Smart pointer to original unpermuted matrix. |
row_perm | [in] Smart pointer to row permutation. If row_perm.get() == NULL then the identity permutation is assumed. |
col_perm | [in] Smart pointer to column permutation. If col_perm.get() == NULL then the identity permutation is assumed. |
mat_perm | [in] Smart pointer to permuted matrix. It is allowed for mat_perm.get() == NULL in which case all of the linear algebra methods are implemented in terms of mat_orig , row_perm and col_perm . |
Preconditions:
mat_perm.get() != NULL
(throw std::invalid_argument
) row_perm.get() != NULL
] mat_orig->space_cols().is_compatible(row_perm->space()) == true
(throw VectorSpace::IncompatibleVectorSpaces
) col_perm.get() != NULL
] mat_orig->space_rows().is_compatible(col_perm->space()) == true
(throw VectorSpace::IncompatibleVectorSpaces
) Postconditions:
this->mat_orig().get() == mat_orig.get()
this->row_perm().get() == row_perm.get()
this->col_perm().get() == col_perm.get()
this->mat_perm().get() == mat_perm.get()
Definition at line 69 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
void AbstractLinAlgPack::MatrixPermAggr::set_uninitialized | ( | ) |
Set uninitialized.
ToDo: Finish documentation.
Definition at line 104 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
const mat_ptr_t& AbstractLinAlgPack::MatrixPermAggr::mat_orig | ( | ) | const |
const perm_ptr_t& AbstractLinAlgPack::MatrixPermAggr::row_perm | ( | ) | const |
const perm_ptr_t& AbstractLinAlgPack::MatrixPermAggr::col_perm | ( | ) | const |
const mat_ptr_t& AbstractLinAlgPack::MatrixPermAggr::mat_perm | ( | ) | const |
|
virtual |
Reimplemented from AbstractLinAlgPack::MatrixBase.
Definition at line 115 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
virtual |
Reimplemented from AbstractLinAlgPack::MatrixBase.
Definition at line 120 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
virtual |
Reimplemented from AbstractLinAlgPack::MatrixBase.
Definition at line 125 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
virtual |
Implements AbstractLinAlgPack::MatrixBase.
Definition at line 132 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
virtual |
Implements AbstractLinAlgPack::MatrixBase.
Definition at line 137 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
virtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 143 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 152 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
virtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 167 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 189 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 202 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 216 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 230 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Implements AbstractLinAlgPack::MatrixOp.
Definition at line 245 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 301 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 316 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 330 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 344 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 354 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 364 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 378 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 391 of file AbstractLinAlgPack_MatrixPermAggr.cpp.
|
protectedvirtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 404 of file AbstractLinAlgPack_MatrixPermAggr.cpp.