42 #ifndef THYRA_VECTOR_BASE_DECL_HPP 43 #define THYRA_VECTOR_BASE_DECL_HPP 46 #include "Thyra_OperatorVectorTypes.hpp" 47 #include "Thyra_MultiVectorBase_decl.hpp" 48 #include "RTOpPack_RTOpT.hpp" 49 #include "RTOpPack_SparseSubVectorT.hpp" 145 template<
class Scalar>
146 class VectorBase :
virtual public MultiVectorBase<Scalar>
150 #ifdef THYRA_INJECT_USING_DECLARATIONS 173 virtual RCP< const VectorSpaceBase<Scalar> >
space()
const = 0;
188 const Ptr<RTOpPack::ReductTarget> &reduct_obj,
192 applyOpImpl(op, vecs, targ_vecs, reduct_obj, global_offset);
214 virtual RCP<VectorBase<Scalar> >
clone_v()
const = 0;
293 const Ptr<RTOpPack::ReductTarget> &reduct_obj,
551 template<
class Scalar>
557 const Ptr<RTOpPack::ReductTarget> &reduct_obj,
558 const Ordinal global_offset = 0
562 vecs[0]->applyOp(op, vecs, targ_vecs, reduct_obj, global_offset);
563 else if (targ_vecs.size())
564 targ_vecs[0]->applyOp(op, vecs, targ_vecs, reduct_obj, global_offset);
571 #endif // THYRA_VECTOR_BASE_DECL_HPP virtual RCP< const VectorSpaceBase< Scalar > > space() const =0
Return a smart pointer to the vector space that this vector belongs to.
void setSubVector(const RTOpPack::SparseSubVectorT< Scalar > &sub_vec)
Calls setSubVectorImpl().
virtual void commitNonconstDetachedVectorViewImpl(RTOpPack::SubVectorView< Scalar > *sub_vec)=0
Commit changes for a mutable explicit view of a sub-vector.
void acquireDetachedView(const Range1D &rng, RTOpPack::ConstSubVectorView< Scalar > *sub_vec) const
Calls acquireDetachedVectorViewImpl().
virtual void releaseDetachedVectorViewImpl(RTOpPack::ConstSubVectorView< Scalar > *sub_vec) const =0
Free an explicit view of a sub-vector.
virtual void setSubVectorImpl(const RTOpPack::SparseSubVectorT< Scalar > &sub_vec)=0
Set a specific sub-vector.
void releaseDetachedView(RTOpPack::ConstSubVectorView< Scalar > *sub_vec) const
Calls releaseDetachedVectorViewImpl().
Teuchos::Ordinal Ordinal
Type for the dimension of a vector space. `*.
void applyOp(const RTOpPack::RTOpT< Scalar > &op, const ArrayView< const Ptr< const VectorBase< Scalar > > > &vecs, const ArrayView< const Ptr< VectorBase< Scalar > > > &targ_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal global_offset=0)
Apply a reduction/transformation operator over a set of vectors: op(op(v[0]...v[nv-1],z[0]...z[nz-1]),(*reduct_obj)) -> z[0]...z[nz-1],(*reduct_obj).
virtual void applyOpImpl(const RTOpPack::RTOpT< Scalar > &op, const ArrayView< const Ptr< const VectorBase< Scalar > > > &vecs, const ArrayView< const Ptr< VectorBase< Scalar > > > &targ_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal global_offset) const =0
Apply a reduction/transformation operator over a set of vectors: op(op(v[0]...v[nv-1],z[0]...z[nz-1]),(*reduct_obj)) -> z[0]...z[nz-1],(*reduct_obj).
Abstract interface for finite-dimensional dense vectors.
void applyOp(const RTOpPack::RTOpT< Scalar > &op, const ArrayView< const Ptr< const VectorBase< Scalar > > > &vecs, const ArrayView< const Ptr< VectorBase< Scalar > > > &targ_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal global_offset) const
Calls applyOpImpl().
void commitDetachedView(RTOpPack::SubVectorView< Scalar > *sub_vec)
Calls commitDetachedView().
void apply(const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
Apply the linear operator to a multi-vector : Y = alpha*op(M)*X + beta*Y.
virtual void acquireNonconstDetachedVectorViewImpl(const Range1D &rng, RTOpPack::SubVectorView< Scalar > *sub_vec)=0
Get a mutable explicit view of a sub-vector.
void acquireDetachedView(const Range1D &rng, RTOpPack::SubVectorView< Scalar > *sub_vec)
Calls acquireNonconstDetachedVectorViewImpl().
virtual void acquireDetachedVectorViewImpl(const Range1D &rng, RTOpPack::ConstSubVectorView< Scalar > *sub_vec) const =0
Get a non-mutable explicit view of a sub-vector.
virtual RCP< VectorBase< Scalar > > clone_v() const =0
Returns a cloned copy of *this vector.