#include <Thyra_ProductVectorSpaceDecl.hpp>
Inheritance diagram for Thyra::ProductVectorSpace< Scalar >:
Constructors/initializers/accessors | |
| ProductVectorSpace (const int numBlocks, const Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > > vecSpaces[]) | |
Construct to an initialized state (calls initialize). | |
| virtual void | initialize (const int numBlocks, const Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > > vecSpaces[]) |
| Initialize with a list of constituent vector spaces. | |
| bool | hasBeenCloned () const |
Return if this vector space was cloned. | |
| virtual void | uninitialize (int *numBlocks=NULL, Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > > vecSpaces[]=NULL) |
| Uninitialize. | |
| virtual const Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > > * | vecSpaces () const |
Returns a pointer to an array (of length this->numBlocks()) to the constituent vector spaces. | |
| virtual const Index * | vecSpacesOffsets () const |
Returns a pointer to an array (of length this->numBlocks()+1) of offset into each constituent vector space. | |
| void | getVecSpcPoss (Index i, int *kth_vector_space, Index *kth_global_offset) const |
Get the position of the vector space object and its offset into a composite vector that owns the ith index in the composite vector. | |
Overridden from ProductVectorSpace | |
| int | numBlocks () const |
| | |
| Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > > | getBlock (const int k) const |
| | |
Overridden from VectorSpaceBase | |
| Index | dim () const |
| Returns the summation of the constituent vector spaces. | |
| bool | isCompatible (const VectorSpaceBase< Scalar > &vecSpc) const |
| Returns true only if also a product vector space and all constituent vectors are compatible. | |
| Teuchos::RefCountPtr< VectorBase< Scalar > > | createMember () const |
Returns a ProductVector object. | |
| Scalar | scalarProd (const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) const |
| Returns the sum of the scalar products of the constituent vectors. | |
| void | scalarProds (const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, Scalar scalar_prods[]) const |
| Returns the sum of the scalar products of each of the columns of the constituent multi-vectors. | |
| bool | isInCore () const |
| Returns true if all of the constituent vector spaces return true. | |
| Teuchos::RefCountPtr< const VectorSpaceFactoryBase< Scalar > > | smallVecSpcFcty () const |
Returns getBlock(0)->smallVecSpcFcty(). | |
| Teuchos::RefCountPtr< MultiVectorBase< Scalar > > | createMembers (int numMembers) const |
Returns a ProductMultiVector object. | |
| Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > > | clone () const |
| Clones the object as promised. | |
Protected Member Functions | |
| ProductVectorSpace () | |
| Added to allow TSFExtended ProductVectorSpace to derive from this. | |
This subclass allows VectorSpaceBase objects to be built out of one or more other vector space objects to form a product space. The specific type of vector created by this->createMember() is of type ProductVector but the client need not ever know this or deal with this type directly. However, a client may want to dynamic_cast to access the ProductVectorBase interface.
To demonstrate how to use this class, suppose one has p vector spaces V[k] for k = 0...p-1 and one wants to form a concatenated vector space Z containing all of these vector spaces stacked on top of each other to form:
[ V[0] ]
Z = [ V[1] ]
[ . ]
[ V[p-1] ]
Such a vector space can be constructed out of an array of p constituent VectorSpaceBase objects as shown in the following function:
void constructProductSpace( const Teuchos::RefCountPtr<const VectorSpaceBase<Scalar> > V[], int p ,Teuchos::RefCountPtr<const VectorSpaceBase<Scalar> > *Z ) { *Z = Teuchos::rcp(new ProductVectorSpace<Scalar>(V,p)); }
Or, a product space can be constructed out of p copies of the same VectorSpaceBase object as follows:
void constructProductSpace( const Teuchos::RefCountPtr<const VectorSpaceBase<Scalar> > V, int p ,Teuchos::RefCountPtr<const VectorSpaceBase<Scalar> > *Z ) { std::vector<Teuchos::RefCountPtr<const VectorSpaceBase<Scalar> > > vecSpaces(p); for( int k = 0; k < p; ++k ) vecSpaces[k] = V; *Z = Teuchos::rcp(new ProductVectorSpace<Scalar>(&vecSpaces[0],p); }
Once a ProductVectorSpace object is initialized, it can be used just like any other VectorSpaceBase object. The method createMember() will create ProductVector objects containing vector members from the constituent vector spaces. The method createMembers() will create ProductMultiVector objects containing multi-vector members from the constituent vector spaces.
There are several methods that can be used by clients that need to work with the individual constituent vector spaces. The method numBlocks() give the number of constituent vector spaces while vecSpaces() returns a pointer to a copy of the array of the constituent vector spaces passed to initialize(). Some other useful utility methods are also defined. The method vecSpacesOffsets() returns a pointer to an array that gives the offset of each constituent vector in the overall composite product vector. For example, the (zero-based) kth vector space this->vecSpaces()[k] owns the element indexes this->vecSpacesOffsets()[k]+1 to this->vecSpacesOffsets()[k+1]. Determining which constituent vector space owns a particular element index can be found out by calling getVecSpcPoss().
The default assignment operator is allowed since it has the correct semantics for shallow copy. The default copy constructor is also allowed but only performs a shallow copy of the constituent vector space objects. If you want to copy the constituent vector space objects also you need to use the clone() method. The default constructor is not allowed (declared private) to avoid accidents.
Definition at line 123 of file Thyra_ProductVectorSpaceDecl.hpp.
|
||||||||||||||||
|
Construct to an initialized state (calls
Definition at line 42 of file Thyra_ProductVectorSpace.hpp. |
|
|||||||||
|
Added to allow TSFExtended ProductVectorSpace to derive from this.
Definition at line 305 of file Thyra_ProductVectorSpaceDecl.hpp. |
|
||||||||||||||||
|
Initialize with a list of constituent vector spaces.
Definition at line 51 of file Thyra_ProductVectorSpace.hpp. |
|
|||||||||
|
Return if
If this function returns Definition at line 326 of file Thyra_ProductVectorSpaceDecl.hpp. |
|
||||||||||||||||
|
Uninitialize.
Warning! If Definition at line 87 of file Thyra_ProductVectorSpace.hpp. |
|
|||||||||
|
Returns a pointer to an array (of length Postconditions:
Definition at line 314 of file Thyra_ProductVectorSpaceDecl.hpp. |
|
|||||||||
|
Returns a pointer to an array (of length Postconditions:
Definition at line 320 of file Thyra_ProductVectorSpaceDecl.hpp. |
|
||||||||||||||||||||
|
Get the position of the vector space object and its offset into a composite vector that owns the Preconditions:
Postconditions:
Definition at line 99 of file Thyra_ProductVectorSpace.hpp. |
|
|||||||||
|
Implements Thyra::ProductVectorSpaceBase< Scalar >. Definition at line 127 of file Thyra_ProductVectorSpace.hpp. |
|
||||||||||
|
Implements Thyra::ProductVectorSpaceBase< Scalar >. Definition at line 134 of file Thyra_ProductVectorSpace.hpp. |
|
|||||||||
|
Returns the summation of the constituent vector spaces.
Implements Thyra::VectorSpaceBase< Scalar >. Definition at line 143 of file Thyra_ProductVectorSpace.hpp. |
|
||||||||||
|
Returns true only if also a product vector space and all constituent vectors are compatible.
Implements Thyra::VectorSpaceBase< Scalar >. Definition at line 149 of file Thyra_ProductVectorSpace.hpp. |
|
|||||||||
|
Returns a
Implements Thyra::VectorSpaceBase< Scalar >. Definition at line 171 of file Thyra_ProductVectorSpace.hpp. |
|
||||||||||||||||
|
Returns the sum of the scalar products of the constituent vectors.
Implements Thyra::VectorSpaceBase< Scalar >. Definition at line 177 of file Thyra_ProductVectorSpace.hpp. |
|
||||||||||||||||||||
|
Returns the sum of the scalar products of each of the columns of the constituent multi-vectors.
Implements Thyra::VectorSpaceBase< Scalar >. Definition at line 194 of file Thyra_ProductVectorSpace.hpp. |
|
|||||||||
|
Returns true if all of the constituent vector spaces return true.
Reimplemented from Thyra::VectorSpaceBase< Scalar >. Definition at line 219 of file Thyra_ProductVectorSpace.hpp. |
|
|||||||||
|
Returns
Reimplemented from Thyra::VectorSpaceDefaultBase< Scalar >. Definition at line 226 of file Thyra_ProductVectorSpace.hpp. |
|
||||||||||
|
Returns a
Reimplemented from Thyra::VectorSpaceDefaultBase< Scalar >. Definition at line 234 of file Thyra_ProductVectorSpace.hpp. |
|
|||||||||
|
Clones the object as promised.
Reimplemented from Thyra::VectorSpaceBase< Scalar >. Definition at line 241 of file Thyra_ProductVectorSpace.hpp. |
1.3.9.1