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"
58RCP<const VectorSpaceBase<Scalar> >
73 const std::string &label=
""
97 const std::string &label=
""
108template<
class Scalar>
113 const std::string &label=
""
121template<
class Scalar>
125 const std::string &label=
""
136template<
class Scalar>
141 const std::string &label=
""
149template<
class Scalar>
154 const std::string &label=
""
165template<
class Scalar>
170 const std::string &label=
""
178template<
class Scalar>
183 const std::string &label=
""
194template<
class Scalar>
199 const std::string &label=
""
207template<
class Scalar>
212 const std::string &label=
""
223template<
class Scalar>
228 const std::string &label=
""
236template<
class Scalar>
241 const std::string &label=
""
298template<
class Scalar>
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
526#ifndef TEMPLATE_FRIENDS_NOT_SUPPORTED
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(const VectorSpaceBase< Scalar > &vs, int numMembers, const std::string &label="")
Calls createMembers(Teuchos::rcp(&vs,false),numMembers).
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).
RCP< const VectorBase< Scalar > > createMemberView(const RCP< const VectorSpaceBase< Scalar > > &vs, const RTOpPack::ConstSubVectorView< Scalar > &raw_v, const std::string &label="")
Create a vector member that is a const view of raw data.
RCP< const VectorBase< Scalar > > createMemberView(const VectorSpaceBase< Scalar > &vs, const RTOpPack::ConstSubVectorView< Scalar > &raw_v, const std::string &label="")
Calls createMemberView(Teuchos::rcp(&vs,false),raw_v).
virtual RCP< MultiVectorBase< Scalar > > createCachedMembersView(const RTOpPack::SubMultiVectorView< Scalar > &raw_mv) const
Create a (possibly) cached multi-vector member that is a non-const view of raw multi-vector data....
RCP< const MultiVectorBase< Scalar > > createMembersView(const VectorSpaceBase< Scalar > &vs, const RTOpPack::ConstSubMultiVectorView< Scalar > &raw_mv, const std::string &label="")
Calls createMembersView(Teuchos::rcp(&vs,false),raw_mv).
RCP< const MultiVectorBase< Scalar > > createMembersView(const RCP< const VectorSpaceBase< Scalar > > &vs, const RTOpPack::ConstSubMultiVectorView< Scalar > &raw_mv, const std::string &label="")
Create a multi-vector member that is a const view of raw data.
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...
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< VectorBase< Scalar > > createMember() const =0
Create a vector member from the vector space.
RCP< const VectorSpaceBase< Scalar > > makeHaveOwnership(const RCP< const VectorSpaceBase< Scalar > > &vs)
Helper function that clones a VectorSpaceBase object if the RCP does not have ownership.
RCP< VectorBase< Scalar > > createMemberView(const RCP< const VectorSpaceBase< Scalar > > &vs, const RTOpPack::SubVectorView< Scalar > &raw_v, const std::string &label="")
Create a vector member that is a non-const view of raw data.
virtual RCP< MultiVectorBase< Scalar > > createMembers(int numMembers) const =0
Create a set of vector members (a MultiVectorBase) from the vector space.
virtual Scalar scalarProd(const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) const =0
Return the scalar product of two vectors in the vector space.
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 Ordinal dim() const =0
Return the dimension of the vector space.
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< const VectorBase< Scalar > > createMemberView(const RTOpPack::ConstSubVectorView< Scalar > &raw_v) const =0
Create a vector member that is a const view of raw vector data.
RCP< MultiVectorBase< Scalar > > createMembersView(const VectorSpaceBase< Scalar > &vs, const RTOpPack::SubMultiVectorView< Scalar > &raw_mv, const std::string &label="")
Calls createMembersView(Teuchos::rcp(&vs,false),raw_mv).
virtual bool isEuclidean() const
Return if this vector space has a Euclidean (identity) basis in which case the scalar product is the ...
RCP< VectorBase< Scalar > > createMemberView(const VectorSpaceBase< Scalar > &vs, const RTOpPack::SubVectorView< Scalar > &raw_v, const std::string &label="")
Calls createMemberView(Teuchos::rcp(&vs,false),raw_v).
RCP< MultiVectorBase< Scalar > > createMembersView(const RCP< const VectorSpaceBase< Scalar > > &vs, const RTOpPack::SubMultiVectorView< Scalar > &raw_mv, const std::string &label="")
Create a multi-vector member that is a non-const view of raw data.
RCP< VectorBase< Scalar > > createMember(const RCP< const VectorSpaceBase< Scalar > > &vs, const std::string &label="")
Create a vector member from the vector space.
virtual bool isCompatible(const VectorSpaceBase< Scalar > &vecSpc) const =0
Compare the compatibility of two vector spaces.
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.
RCP< MultiVectorBase< Scalar > > createMembers(const RCP< const VectorSpaceBase< Scalar > > &vs, const RCP< const VectorSpaceBase< Scalar > > &domain, const std::string &label="")
Create a set of vector members (a MultiVectorBase) from the vector space.
RCP< MultiVectorBase< Scalar > > createMembers(const RCP< const VectorSpaceBase< Scalar > > &vs, int numMembers, const std::string &label="")
Create a set of vector members (a MultiVectorBase) from the vector space.
virtual void scalarProdsImpl(const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, const ArrayView< Scalar > &scalarProds) const =0
virtual RCP< const MultiVectorBase< Scalar > > createMembersView(const RTOpPack::ConstSubMultiVectorView< Scalar > &raw_mv) const =0
Create a multi-vector member that is a const view of raw multi-vector data.
RCP< VectorBase< Scalar > > createMember(const VectorSpaceBase< Scalar > &vs, const std::string &label="")
Calls createMember(Teuchos::rcp(&vs,false)).
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.
Teuchos::Ordinal Ordinal
Type for the dimension of a vector space. `*.
@ STRIDE_TYPE_NONUNIT
The stride between elements in an array is greater than or equal to one.
@ VIEW_TYPE_DETACHED
The view is a detached copy of the data.