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>
299 class VectorSpaceBase :
virtual public Teuchos::Describable {
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
389 const ArrayView<Scalar> &scalarProds_out
469 virtual RCP< const VectorSpaceBase<Scalar> >
clone()
const;
473 #ifndef DOXYGEN_COMPILE 475 #ifndef TEMPLATE_FRIENDS_NOT_SUPPORTED 480 friend RCP< VectorBase<Scalar> >
482 const RCP<const VectorSpaceBase<Scalar> > &vs,
483 const std::string &label
486 friend RCP< MultiVectorBase<Scalar> >
488 const RCP<const VectorSpaceBase<Scalar> > &vs,
489 int numMembers,
const std::string &label
492 friend RCP<VectorBase<Scalar> >
494 const RCP<const VectorSpaceBase<Scalar> > &vs,
496 const std::string &label
499 friend RCP<const VectorBase<Scalar> >
501 const RCP<const VectorSpaceBase<Scalar> > &vs,
503 const std::string &label
506 friend RCP<MultiVectorBase<Scalar> >
508 const RCP<const VectorSpaceBase<Scalar> > &vs,
510 const std::string &label
513 friend RCP<const MultiVectorBase<Scalar> >
515 const RCP<const VectorSpaceBase<Scalar> > &vs,
517 const std::string &label
522 #endif // DOXYGEN_COMPILE 524 #endif // TEMPLATE_FRIENDS_NOT_SUPPORTED 526 #ifndef TEMPLATE_FRIENDS_NOT_SUPPORTED 558 virtual RCP< VectorBase<Scalar> >
createMember()
const = 0;
586 virtual RCP< MultiVectorBase<Scalar> >
620 virtual RCP<VectorBase<Scalar> >
644 virtual RCP<const VectorBase<Scalar> >
678 virtual RCP<MultiVectorBase<Scalar> >
708 virtual RCP<const MultiVectorBase<Scalar> >
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.
The stride between elements in an array is greater than or equal to one.
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...
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.
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 RCP< const VectorSpaceBase< Scalar > > clone() const
Clone this object (if supported).
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.
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 isEuclidean() const
Return if this vector space has a Euclidean (identity) basis in which case the scalar product is the ...