AbstractLinAlgPack: C++ Interfaces For Vectors, Matrices And Related Linear Algebra Objects
Version of the Day
|
Abstract interface that allows the extraction of a non-const DenseLinAlgPack::DMatrixSliceSym
view of a symmetry abstract matrix.
More...
#include <AbstractLinAlgPack_MatrixSymOpGetGMSSymMutable.hpp>
Public Member Functions | |
virtual DenseLinAlgPack::DMatrixSliceSym | get_sym_gms_view ()=0 |
Get a non-const view of the symmetric abstract matrix in the form DenseLinAlgPack::DenseLinAlgPack::DMatrixSliceSym . More... | |
virtual void | commit_sym_gms_view (DenseLinAlgPack::DMatrixSliceSym *sym_gms_view)=0 |
Free a view of a dense matrix initialized from get_sym_gms_view()>/tt>. More... | |
Public Member Functions inherited from AbstractLinAlgPack::MatrixSymOpGetGMSSym | |
virtual const DenseLinAlgPack::DMatrixSliceSym | get_sym_gms_view () const =0 |
Get a const view of the symmetric abstract matrix in the form DenseLinAlgPack::DMatrixSliceSym . More... | |
virtual void | free_sym_gms_view (const DenseLinAlgPack::DMatrixSliceSym *sym_gms_view) const =0 |
Free a view of a symmetric dense matrix initialized from get_sym_gms_view()>/tt>. More... | |
Public Member Functions inherited from AbstractLinAlgPack::MatrixSymOp | |
virtual MatrixSymOp & | operator= (const MatrixSymOp &M) |
Calls operator=(MatrixOp&) More... | |
virtual mat_mswo_mut_ptr_t | clone_mswo () |
Clone the non-const matrix object (if supported). More... | |
virtual mat_mswo_ptr_t | clone_mswo () const |
Clone the const matrix object (if supported). More... | |
size_type | cols () const |
Returns this->rows() More... | |
const VectorSpace & | space_rows () const |
Vector space for vectors that are compatible with the rows of the matrix. More... | |
mat_mut_ptr_t | clone () |
Returns this->clone_mswo() . More... | |
mat_ptr_t | clone () const |
Returns this->clone_mswo() . 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 MatrixOp & | operator= (const MatrixOp &mwo_rhs) |
M_lhs = mwo_rhs : Virtual assignment operator. 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... | |
virtual const VectorSpace & | space_cols () const =0 |
Vector space for vectors that are compatible with the columns of the matrix. More... | |
virtual size_type | rows () const |
Return the number of rows in the matrix. More... | |
virtual size_type | nz () const |
Return the number of nonzero elements in the matrix. More... | |
Abstract interface that allows the extraction of a non-const DenseLinAlgPack::DMatrixSliceSym
view of a symmetry abstract matrix.
This interface is ment to be used by MatrixSymOp
objects that store all of their matrix elements in the local address space or can easily access all of the elements from this process and can modify the elements in their data structures.
Subclasses that store a BLAS compatible dense symmetric matrix can implement these methods without any dynamic memory allocations. There is no default implementation for these methods so subclasses that derive from this interface must implement these methods.
These methods should never be called directly. Instead, use the helper class type MatrixDenseSymMutableEncap
.
Definition at line 65 of file AbstractLinAlgPack_MatrixSymOpGetGMSSymMutable.hpp.
|
pure virtual |
Get a non-const view of the symmetric abstract matrix in the form DenseLinAlgPack::DenseLinAlgPack::DMatrixSliceSym
.
return
will be initialized to point to storage to the dense matrix elements. The output from this function sym_gms_view = this->get_sym_gms_view()
must be passed to this->commit_sym_gms_view(gms)
to free any memory that may have been allocated and to ensure the that underlying abstract matrix object has been updated. After this->commit_sym_gms_view(sym_gms_view)
is called, sym_gms_view
must not be used any longer!Postconditions:
Warning! If a subclass overrides this method, it must also override commit_sym_gms_view()
.
|
pure virtual |
Free a view of a dense matrix initialized from get_sym_gms_view()>/tt>.
sym_gms_view | [in/out] On input, sym_gms_view must have been initialized from this->get_sym_gms_view() . On output, sym_gms_view will become invalid and must not be used. |
Preconditions:
sym_gms_view
must have been initialized by this->get_sym_gms_view
) Postconditions:
this
is guaranteed to be updated. sym_gms_view
becomes invalid and must not be used any longer!