AbstractLinAlgPack: C++ Interfaces For Vectors, Matrices And Related Linear Algebra Objects
Version of the Day
|
Simple diagonal matrix class. More...
#include <AbstractLinAlgPack_MatrixSymDiagStd.hpp>
Classes | |
class | PostMod |
PostMod class to use with MemMngPack::AbstractFactorStd . More... | |
Constructors/initalizers | |
MatrixSymDiagStd (const VectorSpace::vec_mut_ptr_t &diag=Teuchos::null, bool unique=true) | |
Calls this->initialize() . More... | |
void | initialize (const VectorSpace::vec_mut_ptr_t &diag, bool unique=true) |
Initialize given the diagonal vector (or no vector at all). More... | |
Access | |
VectorMutable & | diag () |
Give non-const access to the diagonal vector. More... | |
const VectorSpace::vec_mut_ptr_t & | diag_ptr () const |
bool | unique () const |
Overridden from MatrixBase | |
size_type | rows () const |
Returns 0 if not initalized (this->diag() == NULL). More... | |
size_type | nz () const |
Overridden from MatrixOp | |
const VectorSpace & | space_rows () const |
const VectorSpace & | space_cols () const |
MatrixOp & | operator= (const MatrixOp &mwo_rhs) |
bool | Mp_StM (MatrixOp *g_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs) const |
Add to a mutable matrix lhs. More... | |
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 |
Implements the symmetric rank-k update for all diagonal matrix lhs. More... | |
void | V_InvMtV (VectorMutable *v_lhs, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2) const |
void | V_InvMtV (VectorMutable *v_lhs, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2) const |
Overridden from MatrixSymInitDiag | |
void | init_identity (const VectorSpace &space_diag, value_type alpha) |
void | init_diagonal (const Vector &diag) |
Overridden from MatrixSymDiag | |
const Vector & | diag () const |
Additional Inherited Members | |
Public Types inherited from AbstractLinAlgPack::MatrixSymOp | |
enum | EMatRhsPlaceHolder |
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 Types inherited from AbstractLinAlgPack::MatrixSymNonsing | |
enum | EMatrixDummyArg |
Public Member Functions inherited from AbstractLinAlgPack::MatrixSymInitDiag | |
virtual | ~MatrixSymInitDiag () |
Public Member Functions inherited from AbstractLinAlgPack::MatrixSymOpNonsing | |
MatrixSymOpNonsing & | operator= (const MatrixSymOpNonsing &M) |
Calls operator=(MatrixOp&) More... | |
virtual mat_mswons_mut_ptr_t | clone_mswons () |
Clone the non-const matrix object (if supported). More... | |
virtual mat_mswons_ptr_t | clone_mswons () const |
Clone the const matrix object (if supported). More... | |
mat_mut_ptr_t | clone () |
Returns this->clone_mswons() . More... | |
mat_ptr_t | clone () const |
Returns this->clone_mswons() . More... | |
mat_mns_mut_ptr_t | clone_mns () |
Returns this->clone_mswons() . More... | |
mat_mns_ptr_t | clone_mns () const |
Returns this->clone_mswons() . More... | |
mat_mswo_mut_ptr_t | clone_mswo () |
Returns this->clone_mswons() . More... | |
mat_mswo_ptr_t | clone_mswo () const |
Returns this->clone_mswons() . More... | |
mat_msns_mut_ptr_t | clone_msns () |
Returns this->clone_mswons() . More... | |
mat_msns_ptr_t | clone_msns () const |
Returns this->clone_mswons() . More... | |
mat_mwons_mut_ptr_t | clone_mwons () |
Returns this->clone_mswons() . More... | |
mat_mwons_ptr_t | clone_mwons () const |
Returns this->clone_mswons() . More... | |
Public Member Functions inherited from AbstractLinAlgPack::MatrixSymOp | |
virtual MatrixSymOp & | operator= (const MatrixSymOp &M) |
Calls operator=(MatrixOp&) More... | |
size_type | cols () const |
Returns this->rows() 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 std::ostream & | output (std::ostream &out) const |
Virtual output function. 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... | |
Public Member Functions inherited from AbstractLinAlgPack::MatrixSymNonsing | |
Public Member Functions inherited from AbstractLinAlgPack::MatrixNonsing | |
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... | |
Public Member Functions inherited from AbstractLinAlgPack::MatrixOpNonsing | |
MatrixOpNonsing & | operator= (const MatrixOpNonsing &M) |
Calls operator=(MatrixOp&) 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... | |
Protected Member Functions inherited from AbstractLinAlgPack::MatrixSymOp | |
virtual void | Mp_StPtMtP (MatrixSymOp *sym_lhs, value_type alpha, EMatRhsPlaceHolder dummy_place_holder, const GenPermMatrixSlice &gpms_rhs, BLAS_Cpp::Transp gpms_rhs_trans, value_type beta) const |
sym_lhs = alpha * op(gpms_rhs') * M * op(gpms_rhs) + beta * sym_lhs. More... | |
virtual void | Mp_StMtMtM (MatrixSymOp *sym_lhs, value_type alpha, EMatRhsPlaceHolder dummy_place_holder, const MatrixOp &mwo_rhs, BLAS_Cpp::Transp mwo_rhs_trans, value_type beta) const |
sym_lhs = alpha * op(mwo_rhs') * M * op(mwo_rhs) + beta * sym_lhs. 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 (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_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 (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... | |
Protected Member Functions inherited from AbstractLinAlgPack::MatrixSymNonsing | |
virtual void | M_StMtInvMtM (MatrixSymOp *symwo_lhs, value_type alpha, const MatrixOp &mwo, BLAS_Cpp::Transp mwo_trans, EMatrixDummyArg) const |
symwo_lhs = alpha * op(mwo) * inv(M) * op(mwo)'. More... | |
Simple diagonal matrix class.
ToDo: Implement clone_mswons() and deal with this->diag_ptr().count() > 1 by cloning vector if told to. This allows lazy evaluation of the clone_mswons() method.
Definition at line 57 of file AbstractLinAlgPack_MatrixSymDiagStd.hpp.
AbstractLinAlgPack::MatrixSymDiagStd::MatrixSymDiagStd | ( | const VectorSpace::vec_mut_ptr_t & | diag = Teuchos::null , |
bool | unique = true |
||
) |
Calls this->initialize()
.
Definition at line 54 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
void AbstractLinAlgPack::MatrixSymDiagStd::initialize | ( | const VectorSpace::vec_mut_ptr_t & | diag, |
bool | unique = true |
||
) |
Initialize given the diagonal vector (or no vector at all).
diag | [in] Vector to be used for the diagonal. If diag.get() == NULL then this will be uninitialized. |
unique | [in] Determines if the underlying diag vector is guaranteed to be unique and not shared. |
Definition at line 66 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
VectorMutable & AbstractLinAlgPack::MatrixSymDiagStd::diag | ( | ) |
Give non-const access to the diagonal vector.
Preconditions:
this->diag_ptr().get() != NULL
(throw ???
) ToDo: Finish documentation!
Definition at line 75 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
const VectorSpace::vec_mut_ptr_t & AbstractLinAlgPack::MatrixSymDiagStd::diag_ptr | ( | ) | const |
Definition at line 86 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
inline |
Definition at line 210 of file AbstractLinAlgPack_MatrixSymDiagStd.hpp.
|
virtual |
Returns 0 if not initalized (this->diag() == NULL).
Reimplemented from AbstractLinAlgPack::MatrixBase.
Definition at line 93 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Reimplemented from AbstractLinAlgPack::MatrixBase.
Definition at line 98 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Reimplemented from AbstractLinAlgPack::MatrixSymOp.
Definition at line 109 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Implements AbstractLinAlgPack::MatrixBase.
Definition at line 105 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 114 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Add to a mutable matrix lhs.
Preconditions:
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 132 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Implements AbstractLinAlgPack::MatrixOp.
Definition at line 148 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 160 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Implements the symmetric rank-k update for all diagonal matrix lhs.
true
if dynamic_cast<MatrixSymDiagStd>(sym_lhs) != NULL
. Otherwise, returns false. Reimplemented from AbstractLinAlgPack::MatrixOp.
Definition at line 183 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Overridden from MatrixOpNonsing
Implements AbstractLinAlgPack::MatrixNonsing.
Definition at line 169 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Reimplemented from AbstractLinAlgPack::MatrixNonsing.
Definition at line 176 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Implements AbstractLinAlgPack::MatrixSymInitDiag.
Definition at line 202 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
Implements AbstractLinAlgPack::MatrixSymInitDiag.
Definition at line 209 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.
|
virtual |
Implements AbstractLinAlgPack::MatrixSymDiag.
Definition at line 217 of file AbstractLinAlgPack_MatrixSymDiagStd.cpp.