42 #ifndef THYRA_DEFAULT_MULTI_VECTOR_PRODUCT_VECTOR_SPACE_DECL_HPP 43 #define THYRA_DEFAULT_MULTI_VECTOR_PRODUCT_VECTOR_SPACE_DECL_HPP 45 #include "Thyra_ProductVectorSpaceBase.hpp" 46 #include "Thyra_DefaultProductVectorSpace.hpp" 47 #include "Thyra_VectorSpaceDefaultBase.hpp" 64 template<
class Scalar>
65 class DefaultMultiVectorProductVectorSpace
66 :
virtual public ProductVectorSpaceBase<Scalar>
67 ,
virtual protected VectorSpaceDefaultBase<Scalar>
97 const RCP<
const VectorSpaceBase<Scalar> > &space,
102 RCP<const DefaultProductVectorSpace<Scalar> >
126 RCP<
const VectorSpaceBase<Scalar> > *space = 0,
138 RCP<const VectorSpaceBase<Scalar> >
getBlock(
const int k)
const;
148 bool isCompatible(
const VectorSpaceBase<Scalar>& vecSpc )
const;
152 Scalar
scalarProd(
const VectorBase<Scalar>& x,
const VectorBase<Scalar>& y )
const;
157 const MultiVectorBase<Scalar>& X,
const MultiVectorBase<Scalar>& Y,
174 RCP< MultiVectorBase<Scalar> >
createMembers(
int numMembers)
const;
176 RCP< const VectorSpaceBase<Scalar> >
clone()
const;
196 Teuchos::FancyOStream &out,
197 const Teuchos::EVerbosityLevel verbLevel
207 RCP<const VectorSpaceBase<Scalar> > space_;
209 RCP<const DefaultProductVectorSpace<Scalar> > defaultProdVecSpc_;
214 void assertInitialized()
const;
223 template<
class Scalar>
225 RCP<DefaultMultiVectorProductVectorSpace<Scalar> >
236 template<
class Scalar>
238 RCP<DefaultMultiVectorProductVectorSpace<Scalar> >
244 RCP<DefaultMultiVectorProductVectorSpace<Scalar> > multiVecProdVecSpace =
245 multiVectorProductVectorSpace<Scalar>();
246 multiVecProdVecSpace->initialize(space,numColumns);
247 return multiVecProdVecSpace;
255 template<
class Scalar>
257 RCP<const DefaultProductVectorSpace<Scalar> >
260 return defaultProdVecSpc_;
264 template<
class Scalar>
269 TEUCHOS_TEST_FOR_EXCEPT( is_null(space_) );
277 #endif // THYRA_DEFAULT_MULTI_VECTOR_PRODUCT_VECTOR_SPACE_DECL_HPP void uninitialize(RCP< const VectorSpaceBase< Scalar > > *space=0, int *numColumns=0)
Uninitialize.
RCP< MultiVectorBase< Scalar > > createMembers(int numMembers) const
Returns a DefaultColumnwiseMultiVector object.
RCP< DefaultMultiVectorProductVectorSpace< Scalar > > multiVectorProductVectorSpace(const RCP< const VectorSpaceBase< Scalar > > &space, const int numColumns)
Nonmember constructor function.
RCP< const VectorSpaceFactoryBase< Scalar > > smallVecSpcFcty() const
Returns getBlock(0)->smallVecSpcFcty().
void initialize(const RCP< const VectorSpaceBase< Scalar > > &space, const int numColumns)
Initialize with a list of constituent vector spaces.
RCP< DefaultMultiVectorProductVectorSpace< Scalar > > multiVectorProductVectorSpace()
Nonmember constructor function.
Abstract interface for objects that represent a space for vectors.
EViewType
Determines if a view is a direct view of data or a detached copy of data.
Teuchos::Ordinal Ordinal
Type for the dimension of a vector space. `*.
void scalarProds(const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, const ArrayView< Scalar > &scalarProds_out) const
Return the scalar product of each column in two multi-vectors in the vector space.
Scalar scalarProd(const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) const
Returns the sum of the scalar products of the constituent vectors.
DefaultMultiVectorProductVectorSpace()
Construct to an uninitialized state.
bool hasInCoreView(const Range1D &rng, const EViewType viewType, const EStrideType strideType) const
Returns true if all of the constituent vector spaces return true.
std::string description() const
Prints just the name DefaultMultiVectorProductVectorSpace along with the overall dimension and the nu...
RCP< const VectorSpaceBase< Scalar > > clone() const
Clones the object as promised.
Standard concrete implementation of a product vector space that creates product vectors fromed implic...
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Prints the details about the constituent vector space.
RCP< const DefaultProductVectorSpace< Scalar > > getDefaultProductVectorSpace() const
EStrideType
Determine if data is unit stride or non-unit stride.
RCP< const VectorSpaceBase< Scalar > > getBlock(const int k) const
void scalarProdsImpl(const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, const ArrayView< Scalar > &scalarProds) const
Returns the sum of the scalar products of each of the columns of the constituent multi-vectors.
bool isCompatible(const VectorSpaceBase< Scalar > &vecSpc) const
RCP< VectorBase< Scalar > > createMember() const
Returns a DefaultMultiVectorProductVector object.