54 #define CLASS_MEMBER_PTRS \ 
   55 const VectorMutableDense   *_this = this; \ 
   56 const DVectorSlice                *_v; \ 
   57 const release_resource_ptr_t     *_v_release; \ 
   58 const VectorSpaceSerial          *_space; 
   60 #define CLASS_MEMBER_PTRS 
   63 namespace AbstractLinAlgPack {
 
   89   namespace rcp = MemMngPack;
 
   90   namespace rmp = MemMngPack;
 
   96       new rmp::ReleaseResource_ref_count_ptr<DVector>(
 
  125   ,
const size_t num_vecs,      
const Vector*  vecs[]
 
  127   ,RTOpPack::ReductTarget *reduct_obj
 
  134     "VectorMutableDense::apply_op(...)" 
  135     ,op,num_vecs,vecs,num_targ_vecs,targ_vecs,reduct_obj,first_ele_in,sub_dim_in,global_offset_in
 
  139     op,num_vecs,vecs,num_targ_vecs,targ_vecs,reduct_obj
 
  140     ,first_ele_in,sub_dim_in,global_offset_in
 
  160   const Range1D    rng = RangePack::full_range(rng_in,1,this_dim);
 
  162     rng.
ubound() > this_dim, std::out_of_range
 
  163     ,
"VectorMutableDense::get_sub_vector(...) : Error, " 
  165     "is not in the range [1,this->dim()] = [1," << this_dim << 
"]!" );
 
  226   namespace rcp = MemMngPack;
 
  228   const Range1D rng = RangePack::full_range( rng_in, 1, this_dim );
 
  231     rng.
ubound() > this_dim, std::out_of_range
 
  232     ,
"VectorMutableDense::sub_view(...) : Error, " 
  234     "is not in the range [1,this->dim()] = [1," << this_dim << 
"]!" );
 
  236   if( rng == 
Range1D(1,this_dim) )
 
  247   const Range1D    rng = RangePack::full_range(rng_in,1,this_dim);
 
  250     rng.
ubound() > this_dim, std::out_of_range
 
  251     ,
"VectorMutableDense::get_sub_vector(...) : Error, " 
  253     "is not in the range [1,this->dim()] = [1," << this_dim << 
"]!" );
 
DVector "Adaptor" subclass for DenseLinAlgPack::DVectorSlice or DenseLinAlgPack::DVector objects...
 
virtual void set_sub_vector(const RTOpPack::SparseSubVector &sub_vec)
Set a specific sub-vector. 
 
Abstract interface for immutable, finite dimensional, coordinate vectors {abstract}. 
 
RTOp_index_type index_type
 
size_type dim() const 
Returns the number of elements of the VectorSliceTmpl. 
 
#define CLASS_MEMBER_PTRS
 
const VectorSpace & space() const 
 
RTOp_value_type value_type
 
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
 
Index size() const 
Return the size of the range (ubound() - lbound() + 1) 
 
Teuchos::RCP< const Vector > vec_ptr_t
 
Index ubound() const 
Return upper bound of the range. 
 
vec_mut_ptr_t sub_view(const Range1D &rng)
 
void commit_sub_vector(RTOpPack::MutableSubVector *sub_vec)
 
void apply_op(const RTOpPack::RTOp &op, const size_t num_vecs, const Vector *vecs[], const size_t num_targ_vecs, VectorMutable *targ_vecs[], RTOpPack::ReductTarget *reduct_obj, const index_type first_ele, const index_type sub_dim, const index_type global_offset) const 
 
Teuchos::RCP< VectorMutable > vec_mut_ptr_t
 
VectorMutableDense(const size_type dim=0)
Calls this->initialize(dim). 
 
value_type * raw_ptr()
Return a pointer to the address of the first memory location of underlying array. ...
 
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
 
. One-based subregion index range class. 
 
VectorMutable & operator=(value_type alpha)
 
virtual void has_changed() const 
Must be called by any vector subclass that modifies this vector object! 
 
RTOpT< RTOp_value_type > RTOp
 
RTOp_index_type size_type
 
Abstract interface for objects that represent a space for mutable coordinate vectors. 
 
Extract a constant DenseLinAlgPack::DVectorSlice view of a Vector object. 
 
void set_sub_vector(const RTOpPack::SparseSubVector &sub_vec)
 
void initialize(const size_type dim)
Call this->initialize(v,v_release) with an allocated DenseLinAlgPack::DVector object. 
 
void Vp_StMtV(VectorMutable *v_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta=1.0)
v_lhs = alpha * op(M_rhs1) * v_rhs2 + beta * v_lhs (BLAS xGEMV) 
 
release_resource_ptr_t v_release_
 
void bind(VectorSliceTmpl< value_type > vs)
Bind to the view of another VectorSliceTmpl. 
 
void set_ele(index_type i, value_type val)
 
Index lbound() const 
Return lower bound of the range. 
 
void initialize(size_type dim)
Initialize given the dimension of the vector space. 
 
virtual VectorMutable & operator=(value_type alpha)
Assign the elements of this vector to a scalar. 
 
void initialize(Teuchos_Ordinal globalOffset, Teuchos_Ordinal subDim, Scalar *values, ptrdiff_t stride)
 
DenseLinAlgPack::VectorTmpl< value_type > DVector
 
difference_type stride() const 
Return the distance (+,-) (in units of elements) between adjacent elements in the underlying array...
 
Abstract interface for mutable coordinate vectors {abstract}. 
 
void Vp_StMtV(value_type alpha, const GenPermMatrixSlice &P, BLAS_Cpp::Transp P_trans, const Vector &x, value_type beta)
 
SparseSubVectorT< RTOp_value_type > SparseSubVector
 
void apply_op_serial(const RTOpPack::RTOp &op, const size_t num_vecs, const Vector *vecs[], const size_t num_targ_vecs, VectorMutable *targ_vecs[], RTOpPack::ReductTarget *reduct_obj, const index_type first_ele, const index_type sub_dim, const index_type global_offset) const 
 
Class for a mutable sub-vector. 
 
void apply_op_validate_input(const char func_name[], const RTOpPack::RTOp &op, const size_t num_vecs, const Vector *vecs[], const size_t num_targ_vecs, VectorMutable *targ_vecs[], RTOpPack::ReductTarget *reduct_obj, const index_type first_ele, const index_type sub_dim, const index_type global_offset)
Validate the inputs to apply_op(). 
 
void get_sub_vector(const Range1D &rng, RTOpPack::SubVector *sub_vec) const 
 
void initialize(Teuchos_Ordinal globalOffset, Teuchos_Ordinal subDim, const Scalar *values, ptrdiff_t stride)
 
RangePack::Range1D Range1D
 
Class for a non-mutable sub-vector. 
 
void free_sub_vector(RTOpPack::SubVector *sub_vec) const 
 
value_type get_ele(index_type i) const 
 
Concrete matrix type to represent general permutation (mapping) matrices.