10#ifndef THYRA_DEFAULT_MULTI_VECTOR_PRODUCT_VECTOR_SPACE_DEF_HPP
11#define THYRA_DEFAULT_MULTI_VECTOR_PRODUCT_VECTOR_SPACE_DEF_HPP
14#include "Thyra_DefaultMultiVectorProductVectorSpace_decl.hpp"
15#include "Thyra_DefaultMultiVectorProductVector.hpp"
41 numColumns_ = numColumns;
82 return numColumns_ * space_->dim();
94 if ( multiVecProdVecSpc != 0 ) {
96 ( numColumns_ == multiVecProdVecSpc->numColumns_ )
98 ( space_->isCompatible(*multiVecProdVecSpc->space_) )
105template<
class Scalar>
115template<
class Scalar>
121 return defaultProdVecSpc_->scalarProd(x_in,y_in);
126template<
class Scalar>
133 defaultProdVecSpc_->scalarProds(X_in, Y_in, scalarProds_out);
138template<
class Scalar>
143 return defaultProdVecSpc_->hasInCoreView(rng_in,viewType,strideType);
146template<
class Scalar>
150 if (!is_null(space_))
151 return space_->smallVecSpcFcty();
152 return Teuchos::null;
155template<
class Scalar>
165template<
class Scalar>
174 mvpvs->numColumns_ = numColumns_;
175 mvpvs->space_ = space_;
176 mvpvs->defaultProdVecSpc_ = defaultProdVecSpc_;
184template<
class Scalar>
187 std::ostringstream oss;
190 <<
"dim="<<this->
dim()
191 <<
", numBlocks="<<numColumns_
197template<
class Scalar>
219 if (nonnull(space_)) {
222 <<
"Constituent vector space 'space' is the same for all spaces V[0],V[1],,,V[numBlocks-1]:\n";
224 *out <<
"space = " << Teuchos::describe(*space_,verbLevel);
virtual std::string description() const
RCP< const VectorSpaceBase< Scalar > > clone() const
Clones the object as promised.
DefaultMultiVectorProductVectorSpace()
Construct to an uninitialized state.
RCP< MultiVectorBase< Scalar > > createMembers(int numMembers) const
Returns a DefaultColumnwiseMultiVector object.
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.
bool isCompatible(const VectorSpaceBase< Scalar > &vecSpc) const
std::string description() const
Prints just the name DefaultMultiVectorProductVectorSpace along with the overall dimension and the nu...
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.
RCP< VectorBase< Scalar > > createMember() const
Returns a DefaultMultiVectorProductVector object.
bool hasInCoreView(const Range1D &rng, const EViewType viewType, const EStrideType strideType) const
Returns true if all of the constituent vector spaces return true.
Scalar scalarProd(const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) const
Returns the sum of the scalar products of the constituent vectors.
void uninitialize(RCP< const VectorSpaceBase< Scalar > > *space=0, int *numColumns=0)
Uninitialize.
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Prints the details about the constituent vector space.
RCP< const VectorSpaceBase< Scalar > > getBlock(const int k) const
RCP< DefaultMultiVectorProductVector< Scalar > > multiVectorProductVector(const RCP< const DefaultMultiVectorProductVectorSpace< Scalar > > &productSpace, const RCP< MultiVectorBase< Scalar > > &multiVec)
Nonmember constructor that just wraps an existing non-const MultiVector as a non-const product vector...
RCP< DefaultProductVectorSpace< Scalar > > productVectorSpace()
Nonmember constructor that constructs to uninitialized.
Interface for a collection of column vectors called a multi-vector.
Abstract interface for finite-dimensional dense vectors.
Abstract interface for objects that represent a space for vectors.
RCP< MultiVectorBase< Scalar > > createMembers(int numMembers) const
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
EStrideType
Determine if data is unit stride or non-unit stride.
EViewType
Determines if a view is a direct view of data or a detached copy of data.
basic_FancyOStream< char > FancyOStream
basic_OSTab< char > OSTab
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)