42 #ifndef THYRA_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP 43 #define THYRA_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP 45 #include "Thyra_MultiVectorBase.hpp" 46 #include "Thyra_LinearOpDefaultBase_decl.hpp" 69 template<
class Scalar>
87 virtual RCP<MultiVectorBase<Scalar> >
clone_mv()
const;
100 RCP<const MultiVectorBase<Scalar> >
104 RCP<MultiVectorBase<Scalar> >
108 RCP<const MultiVectorBase<Scalar> >
112 RCP<MultiVectorBase<Scalar> >
124 const ArrayView<
const Ptr<RTOpPack::ReductTarget> > &reduct_objs,
125 const Ordinal primary_global_offset
138 const Ptr<RTOpPack::ReductTarget> &reduct_obj,
139 const Ordinal primary_global_offset
212 #define THYRA_ASSERT_MV_COLS(FUNCNAME, cols) \ 214 const int numCols = cols.size(); \ 215 const Thyra::Ordinal dimDomain = this->domain()->dim(); \ 216 const std::string msgErr = this->description()+"::"+FUNCNAME; \ 217 TEUCHOS_TEST_FOR_EXCEPTION( !( 1 <= numCols && numCols <= dimDomain ), \ 218 std::invalid_argument, msgErr<<"Error!"); \ 219 for (int k = 0; k < numCols; ++k) { \ 220 const int col_k = cols[k]; \ 221 TEUCHOS_TEST_FOR_EXCEPTION( \ 222 !( 0<= col_k && col_k < dimDomain ), std::out_of_range, \ 223 msgErr<<": col["<<k<<"] = " << col_k \ 224 << " is not in the range [0,"<<(dimDomain-1)<<"]!" \ 230 # define THYRA_DEBUG_ASSERT_MV_COLS(FUNCNAME, cols) \ 231 THYRA_ASSERT_MV_COLS(FUNCNAME, cols) 233 # define THYRA_DEBUG_ASSERT_MV_COLS(FUNCNAME, cols) 236 #endif // THYRA_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP RCP< MultiVectorBase< Scalar > > nonconstContigSubViewImpl(const Range1D &colRng)
virtual void mvMultiReductApplyOpImpl(const RTOpPack::RTOpT< Scalar > &primary_op, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &multi_vecs, const ArrayView< const Ptr< MultiVectorBase< Scalar > > > &targ_multi_vecs, const ArrayView< const Ptr< RTOpPack::ReductTarget > > &reduct_objs, const Ordinal primary_global_offset) const
RCP< const MultiVectorBase< Scalar > > contigSubViewImpl(const Range1D &colRng) const
virtual void acquireNonconstDetachedMultiVectorViewImpl(const Range1D &rowRng, const Range1D &colRng, RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
virtual void mvSingleReductApplyOpImpl(const RTOpPack::RTOpT< Scalar > &primary_op, const RTOpPack::RTOpT< Scalar > &secondary_op, const ArrayView< const Ptr< const MultiVectorBase< Scalar > > > &multi_vecs, const ArrayView< const Ptr< MultiVectorBase< Scalar > > > &targ_multi_vecs, const Ptr< RTOpPack::ReductTarget > &reduct_obj, const Ordinal primary_global_offset) const
Node subclass that provides a good default implementation for the describe() function.
void assignImpl(Scalar alpha)
Node subclass that uses a default MultiVectorBase implementation to provide default implementations f...
virtual void releaseDetachedMultiVectorViewImpl(RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
Teuchos::Ordinal Ordinal
Type for the dimension of a vector space. `*.
Interface for a collection of column vectors called a multi-vector.
virtual void acquireDetachedMultiVectorViewImpl(const Range1D &rowRng, const Range1D &colRng, RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
virtual RCP< MultiVectorBase< Scalar > > clone_mv() const
virtual void commitNonconstDetachedMultiVectorViewImpl(RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
RCP< MultiVectorBase< Scalar > > nonconstNonContigSubViewImpl(const ArrayView< const int > &cols)
RCP< const MultiVectorBase< Scalar > > nonContigSubViewImpl(const ArrayView< const int > &cols) const