42 #ifndef THYRA_VECTOR_SPACE_BASE_DECL_HPP
43 #define THYRA_VECTOR_SPACE_BASE_DECL_HPP
45 #include "Thyra_OperatorVectorTypes.hpp"
46 #include "Teuchos_Describable.hpp"
57 template<
class Scalar>
58 RCP<const VectorSpaceBase<Scalar> >
59 makeHaveOwnership(
const RCP<
const VectorSpaceBase<Scalar> > &vs );
69 template<
class Scalar>
70 RCP< VectorBase<Scalar> >
72 const RCP<
const VectorSpaceBase<Scalar> > &vs,
73 const std::string &label=
""
81 template<
class Scalar>
82 RCP< VectorBase<Scalar> >
83 createMember(
const VectorSpaceBase<Scalar> &vs,
const std::string &label=
"" );
93 template<
class Scalar>
94 RCP< MultiVectorBase<Scalar> >
96 const RCP<
const VectorSpaceBase<Scalar> > &vs,
int numMembers,
97 const std::string &label=
""
108 template<
class Scalar>
109 RCP< MultiVectorBase<Scalar> >
111 const RCP<
const VectorSpaceBase<Scalar> > &vs,
112 const RCP<
const VectorSpaceBase<Scalar> > &domain,
113 const std::string &label=
""
121 template<
class Scalar>
122 RCP< MultiVectorBase<Scalar> >
124 const VectorSpaceBase<Scalar> &vs,
int numMembers,
125 const std::string &label=
""
136 template<
class Scalar>
137 RCP<VectorBase<Scalar> >
139 const RCP<
const VectorSpaceBase<Scalar> > &vs,
141 const std::string &label=
""
149 template<
class Scalar>
150 RCP<VectorBase<Scalar> >
152 const VectorSpaceBase<Scalar> &vs,
154 const std::string &label=
""
165 template<
class Scalar>
166 RCP<const VectorBase<Scalar> >
168 const RCP<
const VectorSpaceBase<Scalar> > &vs,
170 const std::string &label=
""
178 template<
class Scalar>
179 RCP<const VectorBase<Scalar> >
181 const VectorSpaceBase<Scalar> &vs,
183 const std::string &label=
""
194 template<
class Scalar>
195 RCP<MultiVectorBase<Scalar> >
197 const RCP<
const VectorSpaceBase<Scalar> > &vs,
199 const std::string &label=
""
207 template<
class Scalar>
208 RCP<MultiVectorBase<Scalar> >
210 const VectorSpaceBase<Scalar> &vs,
212 const std::string &label=
""
223 template<
class Scalar>
224 RCP<const MultiVectorBase<Scalar> >
226 const RCP<
const VectorSpaceBase<Scalar> > &vs,
228 const std::string &label=
""
236 template<
class Scalar>
237 RCP<const MultiVectorBase<Scalar> >
239 const VectorSpaceBase<Scalar> &vs,
241 const std::string &label=
""
298 template<
class Scalar>
335 virtual bool isCompatible(
const VectorSpaceBase<Scalar>& vecSpc )
const = 0;
344 virtual RCP< const VectorSpaceFactoryBase<Scalar> >
smallVecSpcFcty()
const = 0;
359 const VectorBase<Scalar>& x,
const VectorBase<Scalar>& y
473 #ifndef DOXYGEN_COMPILE
475 #ifndef TEMPLATE_FRIENDS_NOT_SUPPORTED
483 const std::string &label
489 int numMembers,
const std::string &label
496 const std::string &label
503 const std::string &label
510 const std::string &label
517 const std::string &label
522 #endif // DOXYGEN_COMPILE
524 #endif // TEMPLATE_FRIENDS_NOT_SUPPORTED
526 #ifndef TEMPLATE_FRIENDS_NOT_SUPPORTED
738 #endif // THYRA_VECTOR_SPACE_BASE_DECL_HPP
virtual RCP< MultiVectorBase< Scalar > > createMembers(int numMembers) const =0
Create a set of vector members (a MultiVectorBase) from the vector space.
virtual RCP< const VectorSpaceBase< Scalar > > clone() const
Clone this object (if supported).
The stride between elements in an array is greater than or equal to one.
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.
virtual RCP< MultiVectorBase< Scalar > > createMembersView(const RTOpPack::SubMultiVectorView< Scalar > &raw_mv) const =0
Create a multi-vector member that is a non-const view of raw multi-vector data.
The view is a detached copy of the data.
virtual Scalar scalarProd(const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) const =0
Return the scalar product of two vectors in the vector space.
Teuchos::Ordinal Ordinal
Type for the dimension of a vector space. `*.
Interface for a collection of column vectors called a multi-vector.
virtual RCP< const VectorSpaceFactoryBase< Scalar > > smallVecSpcFcty() const =0
Return a VectorSpaceFactoryBase object for the creation of (usually serial) vector spaces with a smal...
virtual RCP< VectorBase< Scalar > > createMemberView(const RTOpPack::SubVectorView< Scalar > &raw_v) const =0
Create a vector member that is a non-const view of raw vector data.
virtual RCP< VectorBase< Scalar > > createMember() const =0
Create a vector member from the vector space.
EStrideType
Determine if data is unit stride or non-unit stride.
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.
virtual void scalarProdsImpl(const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, const ArrayView< Scalar > &scalarProds) const =0
virtual bool isCompatible(const VectorSpaceBase< Scalar > &vecSpc) const =0
Compare the compatibility of two vector spaces.
virtual Ordinal dim() const =0
Return the dimension of the vector space.
virtual bool hasInCoreView(const Range1D &rng=Range1D(), const EViewType viewType=VIEW_TYPE_DETACHED, const EStrideType strideType=STRIDE_TYPE_NONUNIT) const
Returns true if this->acquireDetachedView(rng,...) returns a direct view of the range of data request...
virtual bool isEuclidean() const
Return if this vector space has a Euclidean (identity) basis in which case the scalar product is the ...