#include <Thyra_VectorSpaceBaseDecl.hpp>
Inheritance diagram for Thyra::VectorSpaceBase< Scalar >:
Public pure virtual functions that must be overridden | |
| virtual Index | dim () const =0 |
| Return the dimension of the vector space. | |
| virtual bool | isCompatible (const VectorSpaceBase< Scalar > &vecSpc) const =0 |
| Compare the compatibility of two vector spaces. | |
| virtual RCP< const VectorSpaceFactoryBase< Scalar > > | smallVecSpcFcty () const =0 |
Return a VectorSpaceFactoryBase object for the creation of (usually serial) vector spaces with a small dimension. | |
| 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 void | scalarProds (const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, Scalar scalar_prods[]) const =0 |
| Return the scalar product of each column in two multi-vectors in the vector space. | |
Public virtual functions with default implementations | |
| virtual bool | isEuclidean () const |
| Return if this vector space has a Euclidean (identity) basis in which case the scalar product is the same as the dot product. | |
| 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 requested. | |
| virtual RCP< const VectorSpaceBase< Scalar > > | clone () const |
| Clone this object (if supported). | |
Protected pure virtual functions that must be overridden | |
| virtual RCP< VectorBase< Scalar > > | createMember () const =0 |
| Create a vector member from the vector space. | |
| virtual RCP< MultiVectorBase< Scalar > > | createMembers (int numMembers) const =0 |
Create a set of vector members (a MultiVectorBase) from 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 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. | |
| 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. | |
| 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. | |
Related Functions | |
| (Note that these are not member functions.) | |
| 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 > > | createMember (const RCP< const VectorSpaceBase< Scalar > > &vs, const std::string &label="") |
| Create a vector member from the vector space. | |
| RCP< VectorBase< Scalar > > | createMember (const VectorSpaceBase< Scalar > &vs, const std::string &label="") |
Calls createMember(Teuchos::rcp(&vs,false)). | |
| 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. | |
| RCP< MultiVectorBase< Scalar > > | createMembers (const VectorSpaceBase< Scalar > &vs, int numMembers, const std::string &label="") |
Calls createMembers(Teuchos::rcp(&vs,false),numMembers). | |
| 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. | |
| 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< 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). | |
| 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< 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). | |
| 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. | |
| 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). | |
This interface acts primarily as an "Abstract Factory" interface for creating VectorBase objects using the non-member function Thyra::createMember(). A VectorSpaceBase can also create MultiVectorBase objects which represent a compact collection of vectors. A secondary role for VectorSpaceBase objects is to test for compatibility of vector space objects using the isCompatible() method.
Clients can not directly create VectorBase and MultiVectorBase objects using the member functions createMember(), createMembers(), createMemberView(), and createMembersView() but instead must use the non-member Thyra_Op_Vec_createMember_grp.
Note that a VectorSpaceBase object must also be able to create MultiVectorBase objects with any number of column vectors using the Thyra::createMembers() function. Once created, the LinearOpBase::domain() function supported by a created MultiVectorBase object returns a vector space of dimension equal to the number of columns in the multi-vector. An interesting implication of this design is that the creation of a multi-vector provides a way for clients to create vector spaces of any arbitrary (although small usually) dimension. In order to give the client the same ability to create smaller vector spaces without having to create a dummy multi-vector object first, the method smallVecSpcFcty() is included. The method smallVecSpcFcty() returns a VectorSpaceFactoryBase object that can create (typically serial) vector spaces of any small dimension that are compatible with the domain spaces of MultiVectorBase objects created by the vector space object.
A vector space is also where the scalar product for the space is defined which is computed by the scalarProd() method. A scalar product allows the vector space to introduce scaling into many different types of numerical algorithms.
If the underlying object is not initialized, then dim()==0 will be true and none of the other methods should be called or exceptions will be thrown.
Notes for subclass developers
This is a fairly bare-bones interface class without much in the way of default function implementations. The subclass VectorSpaceDefaultBase provides a default multi-vector implementation and should the the first choice for subclass implementations.
|
|||||||||
|
Return the dimension of the vector space.
If the underlying object is not initialized, then |
|
||||||||||
|
Compare the compatibility of two vector spaces.
If this function returns Preconditions:
Postconditions:
Invariants:
|
|
|||||||||
|
Return a Preconditions:
|
|
||||||||||||||||
|
Return the scalar product of two vectors in the vector space. Preconditions:
|
|
||||||||||||||||||||
|
Return the scalar product of each column in two multi-vectors in the vector space.
|
|
|||||||||
|
Return if this vector space has a Euclidean (identity) basis in which case the scalar product is the same as the dot product.
The default implementation returns |
|
||||||||||||||||||||
|
Returns
There are three different questions about the behavior of the
The default implementation returns |
|
|||||||||
|
Clone this object (if supported).
It is allowed for Preconditions:
The default implementation returns |
|
|||||||||
|
Create a vector member from the vector space. Preconditions:
Postconditions:
Note: This function is not to be called directly since it is protected! See the Thyra_Op_Vec_createMember_grp.
|
|
||||||||||
|
Create a set of vector members (a Preconditions:
Postconditions:
|
|
||||||||||
|
Create a vector member that is a non-
Postconditions:
It is stated here that the client can not expect that the values pointed to by |
|
||||||||||
|
Create a vector member that is a
RTOpPack::SubVectorView object except that this version takes a RTOpPack::ConstSubVectorView and returns a smart pointer to a const VectorBase object.Preconditions:
Postconditions:
|
|
||||||||||
|
Create a multi-vector member that is a non-
Postconditions:
It is stated here that the client can not expect that the values pointed to by |
|
||||||||||
|
Create a multi-vector member that is a
RTOpPack::SubMultiVectorView object except that this version takes a RTOpPack::ConstSubMultiVectorView object and returns a smart pointer to a const MultiVectorBase object.Preconditions:
Postconditions:
|
|
||||||||||
|
Helper function that clones a
|
|
||||||||||||||||
|
Create a vector member from the vector space.
Calls |
|
||||||||||||||||
|
Calls
|
|
||||||||||||||||||||
|
Create a set of vector members (a
Calls |
|
||||||||||||||||||||
|
Calls
|
|
||||||||||||||||||||
|
Create a vector member that is a non-
Calls |
|
||||||||||||||||||||
|
Calls
|
|
||||||||||||||||||||
|
Create a vector member that is a
Calls |
|
||||||||||||||||||||
|
Calls
|
|
||||||||||||||||||||
|
Create a multi-vector member that is a non-
Calls |
|
||||||||||||||||||||
|
Calls
|
|
||||||||||||||||||||
|
Create a multi-vector member that is a
Calls |
|
||||||||||||||||||||
|
Calls
|
1.3.9.1