42 #ifndef MATRIX_COMPOSITE_STD_H
43 #define MATRIX_COMPOSITE_STD_H
47 #include "AbstractLinAlgPack_MatrixOp.hpp"
48 #include "AbstractLinAlgPack_GenPermMatrixSlice.hpp"
49 #include "AbstractLinAlgPack_VectorSpace.hpp"
51 #include "ReleaseResource.hpp"
53 namespace AbstractLinAlgPack {
145 size_type r_l, size_type c_l, value_type beta
195 size_type r_l, size_type r_u, size_type c_l, size_type c_u, value_type alpha
215 size_type
r_l_, r_u_, c_l_, c_u_;
273 ,size_type col_offset
289 ,size_type col_offset
303 ,size_type col_offset
325 ,size_type col_offset
344 ,size_type col_offset
359 ,size_type col_offset
376 ,size_type col_offset
393 ,size_type col_offset
406 ,size_type col_offset
489 size_type
rows()
const;
491 size_type
cols()
const;
493 size_type
nz()
const;
508 ,
const Vector& v_rhs2, value_type beta)
const;
516 ,
const Vector& v_rhs3, value_type beta)
const;
530 bool fully_constructed_;
531 size_type rows_, cols_;
532 #ifdef DOXYGEN_COMPILE
547 void assert_fully_constructed()
const;
553 #endif // MATRIX_COMPOSITE_STD_H
void remove_vector(vector_list_t::iterator itr)
Remove a sub-vector.
release_resource_ptr_t G_release_
Matrix list entry for a sub-matrix.
bool operator==(const SubMatrixEntry m)
std::deque< SubMatrixEntry > matrix_list_t
Warning! This could be changed to some other STL container!
Abstract interface for immutable, finite dimensional, coordinate vectors {abstract}.
bool operator==(const SubVectorEntry v)
matrix_list_t::iterator matrices_begin()
BLAS_Cpp::Transp A_trans_
release_resource_ptr_t P_release_
void add_matrix(size_type row_offset, size_type col_offset, value_type alpha, const GenPermMatrixSlice *P, const release_resource_ptr_t &P_release, BLAS_Cpp::Transp P_trans, const MatrixOp *A, const release_resource_ptr_t &A_release, BLAS_Cpp::Transp A_trans, const GenPermMatrixSlice *Q, const release_resource_ptr_t &Q_release, BLAS_Cpp::Transp Q_trans)
Add a sub-matrix alpha*op(P)*op(A)*op(Q).
mat_ptr_t sub_view(const Range1D &row_rng, const Range1D &col_rng) const
release_resource_ptr_t Q_release_
BLAS_Cpp::Transp P_trans_
vector_list_t::iterator vectors_begin()
Teuchos::RCP< MemMngPack::ReleaseResource > release_resource_ptr_t
size_type c_l_
column of first element of vector in composite matrix.
virtual void finish_construction(const VectorSpace::space_ptr_t &space_cols, const VectorSpace::space_ptr_t &space_rows)
Call to finish the construction process.
std::deque< SubVectorEntry > vector_list_t
Warning! This could be changed to some other STL container!
vector_list_t::iterator vectors_end()
Teuchos::RCP< const GenPermMatrixSlice > GPMS_ptr_t
Abstract interface for objects that represent a space for mutable coordinate vectors.
Vector list entry for a sub-vector.
matrix_list_t::iterator matrices_end()
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
const VectorSpace & space_cols() const
release_resource_ptr_t A_release_
Base class for all matrices that support basic matrix operations.
release_resource_ptr_t v_release_
MatrixComposite(size_type rows=0, size_type cols=0)
Construct.
void reinitialize(size_type rows=0, size_type cols=0)
Initialize a sized (on unsized) zero matrix to start with.
BLAS_Cpp::Transp G_trans_
Teuchos::RCP< const GenPermMatrixSlice > GPMS_ptr_t
Abstract interface for mutable coordinate vectors {abstract}.
BLAS_Cpp::Transp v_trans_
void remove_matrix(matrix_list_t::iterator itr)
Remove a sub-matrix.
SubMatrixEntry(size_type r_l, size_type r_u, size_type c_l, size_type c_u, value_type alpha, const Range1D &rng_P, const GPMS_ptr_t &P, const release_resource_ptr_t &P_release, BLAS_Cpp::Transp P_trans, const MatrixOp *A, const release_resource_ptr_t &A_release, BLAS_Cpp::Transp A_trans, const Range1D &rng_Q, const GPMS_ptr_t &Q, const release_resource_ptr_t &Q_release, BLAS_Cpp::Transp Q_trans)
BLAS_Cpp::Transp Q_trans_
Matrix class for matrices composed out of a set of other matrices and vectors.
SubVectorEntry(size_type r_l, size_type c_l, value_type beta, const Range1D &rng_G, const GPMS_ptr_t &G, const release_resource_ptr_t &G_release, BLAS_Cpp::Transp G_trans, const Vector *v, const release_resource_ptr_t &v_release, BLAS_Cpp::Transp v_trans)
void add_vector(size_type row_offset, size_type col_offset, value_type beta, const GenPermMatrixSlice *G, const release_resource_ptr_t &G_release, BLAS_Cpp::Transp G_trans, const Vector *v, const release_resource_ptr_t &v_release, BLAS_Cpp::Transp v_trans)
Add a sub-vector beta*op(op(G)*v).
const VectorSpace & space_rows() const
Concrete matrix type to represent general permutation (mapping) matrices.
void Vp_StMtV(VectorMutable *vs_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta) const