10 #ifndef THYRA_VECTOR_SPACE_BASE_DECL_HPP
11 #define THYRA_VECTOR_SPACE_BASE_DECL_HPP
13 #include "Thyra_OperatorVectorTypes.hpp"
14 #include "Teuchos_Describable.hpp"
25 template<
class Scalar>
26 RCP<const VectorSpaceBase<Scalar> >
27 makeHaveOwnership(
const RCP<
const VectorSpaceBase<Scalar> > &vs );
37 template<
class Scalar>
38 RCP< VectorBase<Scalar> >
40 const RCP<
const VectorSpaceBase<Scalar> > &vs,
41 const std::string &label=
""
49 template<
class Scalar>
50 RCP< VectorBase<Scalar> >
51 createMember(
const VectorSpaceBase<Scalar> &vs,
const std::string &label=
"" );
61 template<
class Scalar>
62 RCP< MultiVectorBase<Scalar> >
64 const RCP<
const VectorSpaceBase<Scalar> > &vs,
int numMembers,
65 const std::string &label=
""
76 template<
class Scalar>
77 RCP< MultiVectorBase<Scalar> >
79 const RCP<
const VectorSpaceBase<Scalar> > &vs,
80 const RCP<
const VectorSpaceBase<Scalar> > &domain,
81 const std::string &label=
""
89 template<
class Scalar>
90 RCP< MultiVectorBase<Scalar> >
92 const VectorSpaceBase<Scalar> &vs,
int numMembers,
93 const std::string &label=
""
104 template<
class Scalar>
105 RCP<VectorBase<Scalar> >
107 const RCP<
const VectorSpaceBase<Scalar> > &vs,
109 const std::string &label=
""
117 template<
class Scalar>
118 RCP<VectorBase<Scalar> >
120 const VectorSpaceBase<Scalar> &vs,
122 const std::string &label=
""
133 template<
class Scalar>
134 RCP<const VectorBase<Scalar> >
136 const RCP<
const VectorSpaceBase<Scalar> > &vs,
138 const std::string &label=
""
146 template<
class Scalar>
147 RCP<const VectorBase<Scalar> >
149 const VectorSpaceBase<Scalar> &vs,
151 const std::string &label=
""
162 template<
class Scalar>
163 RCP<MultiVectorBase<Scalar> >
165 const RCP<
const VectorSpaceBase<Scalar> > &vs,
167 const std::string &label=
""
175 template<
class Scalar>
176 RCP<MultiVectorBase<Scalar> >
178 const VectorSpaceBase<Scalar> &vs,
180 const std::string &label=
""
191 template<
class Scalar>
192 RCP<const MultiVectorBase<Scalar> >
194 const RCP<
const VectorSpaceBase<Scalar> > &vs,
196 const std::string &label=
""
204 template<
class Scalar>
205 RCP<const MultiVectorBase<Scalar> >
207 const VectorSpaceBase<Scalar> &vs,
209 const std::string &label=
""
266 template<
class Scalar>
303 virtual bool isCompatible(
const VectorSpaceBase<Scalar>& vecSpc )
const = 0;
312 virtual RCP< const VectorSpaceFactoryBase<Scalar> >
smallVecSpcFcty()
const = 0;
327 const VectorBase<Scalar>& x,
const VectorBase<Scalar>& y
441 #ifndef DOXYGEN_COMPILE
443 #ifndef TEMPLATE_FRIENDS_NOT_SUPPORTED
451 const std::string &label
457 int numMembers,
const std::string &label
464 const std::string &label
471 const std::string &label
478 const std::string &label
485 const std::string &label
490 #endif // DOXYGEN_COMPILE
492 #endif // TEMPLATE_FRIENDS_NOT_SUPPORTED
494 #ifndef TEMPLATE_FRIENDS_NOT_SUPPORTED
775 #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 MultiVectorBase< Scalar > > createCachedMembersView(const RTOpPack::ConstSubMultiVectorView< Scalar > &raw_mv) const
Create a (possibly) cached multi-vector member that is a const view of raw multi-vector data...
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 > > createCachedMembersView(const RTOpPack::SubMultiVectorView< Scalar > &raw_mv, bool initialize=true) const
Create a (possibly) cached multi-vector member that is a non-const view of raw multi-vector 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 ...