10 #ifndef THYRA_SPMD_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP
11 #define THYRA_SPMD_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP
13 #include "Thyra_SpmdMultiVectorBase.hpp"
14 #include "Thyra_MultiVectorAdapterBase_decl.hpp"
15 #include "Teuchos_BLAS.hpp"
65 template<
class Scalar>
109 const Ordinal primary_global_offset
183 mutable bool in_applyOp_;
199 #endif // THYRA_SPMD_MULTI_VECTOR_DEFAULT_BASE_DECL_HPP
SpmdMultiVectorDefaultBase()
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
RTOpPack::SubMultiVectorView< Scalar > getNonconstLocalSubMultiVectorImpl()
void euclideanApply(const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
Uses GEMM() and Teuchos::reduceAll() to implement.
Base interface class for SPMD multi-vectors.
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
Base node implementation class for SPMD multi-vectors.
RTOpPack::ConstSubMultiVectorView< Scalar > getLocalSubMultiVectorImpl() const
RCP< const ScalarProdVectorSpaceBase< Scalar > > rangeScalarProdVecSpc() const
Returns spmdSpace.
Teuchos::Ordinal Ordinal
Type for the dimension of a vector space. `*.
Interface for a collection of column vectors called a multi-vector.
void acquireDetachedMultiVectorViewImpl(const Range1D &rowRng, const Range1D &colRng, RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
void commitNonconstDetachedMultiVectorViewImpl(RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
void releaseDetachedMultiVectorViewImpl(RTOpPack::ConstSubMultiVectorView< Scalar > *sub_mv) const
Node subclass for MultiVectorBase subclasses that allows the insertion of an application defined scal...
Range1D validateColRange(const Range1D &rowCol) const
Validate and resize the column range.
void acquireNonconstDetachedMultiVectorViewImpl(const Range1D &rowRng, const Range1D &colRng, RTOpPack::SubMultiVectorView< Scalar > *sub_mv)
virtual void updateSpmdSpace()
Subclasses should call whenever the structure of the VectorSpaceBase changes.
Range1D validateRowRange(const Range1D &rowRng) const
Validate and resize the row range.