#include <Thyra_DefaultProductVectorSpaceDecl.hpp>
Inheritance diagram for Thyra::DefaultProductVectorSpace< Scalar >:
Constructors/initializers/accessors | |
| DefaultProductVectorSpace (const int numBlocks, const Teuchos::RCP< const VectorSpaceBase< Scalar > > vecSpaces[]) | |
Construct to an initialized state (calls initialize). | |
| virtual void | initialize (const int numBlocks, const Teuchos::RCP< 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::RCP< const VectorSpaceBase< Scalar > > vecSpaces[]=NULL) |
| Uninitialize. | |
| virtual const Teuchos::RCP< 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 DefaultProductVectorSpace | |
| int | numBlocks () const |
| | |
| Teuchos::RCP< 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::RCP< VectorBase< Scalar > > | createMember () const |
Returns a DefaultProductVector 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 | hasInCoreView (const Range1D &rng, const EViewType viewType, const EStrideType strideType) const |
| Returns true if all of the constituent vector spaces return true. | |
| Teuchos::RCP< const VectorSpaceFactoryBase< Scalar > > | smallVecSpcFcty () const |
Returns getBlock(0)->smallVecSpcFcty(). | |
| Teuchos::RCP< MultiVectorBase< Scalar > > | createMembers (int numMembers) const |
Returns a DefaultProductMultiVector object. | |
| Teuchos::RCP< const VectorSpaceBase< Scalar > > | clone () const |
| Clones the object as promised. | |
Overridden from Teuchos::Describable | |
| std::string | description () const |
Prints just the name DefaultProductVectorSpace along with the overall dimension and the number of blocks. | |
| void | describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const |
| Prints the details about the constituent vector spaces. | |
Protected Member Functions | |
| DefaultProductVectorSpace () | |
| Added to allow TSFExtended DefaultProductVectorSpace to derive from this. | |
Related Functions | |
| (Note that these are not member functions.) | |
| Teuchos::RCP< DefaultProductVectorSpace< Scalar > > | productVectorSpace (const Teuchos::Array< Teuchos::RCP< const VectorSpaceBase< Scalar > > > &vecSpaces) |
| Nonmember constructor that takes an array of vector spaces. | |
| Teuchos::RCP< DefaultProductVectorSpace< Scalar > > | productVectorSpace (const Teuchos::RCP< const VectorSpaceBase< Scalar > > &vecSpace, const int numBlocks) |
Nonmember constructor that duplicates a block vector space numBlock times to form a product space. | |
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 DefaultProductVector 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::RCP<const VectorSpaceBase<Scalar> > V[], int p ,Teuchos::RCP<const VectorSpaceBase<Scalar> > *Z ) { *Z = Teuchos::rcp(new DefaultProductVectorSpace<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::RCP<const VectorSpaceBase<Scalar> > V, int p ,Teuchos::RCP<const VectorSpaceBase<Scalar> > *Z ) { Teuchos::Array<Teuchos::RCP<const VectorSpaceBase<Scalar> > > vecSpaces(p); for( int k = 0; k < p; ++k ) vecSpaces[k] = V; *Z = Teuchos::rcp(new DefaultProductVectorSpace<Scalar>(&vecSpaces[0],p); }
Once a DefaultProductVectorSpace object is initialized, it can be used just like any other VectorSpaceBase object. The method createMember() will create DefaultProductVector 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] to this->vecSpacesOffsets()[k+1]-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.
|
||||||||||||||||
|
Construct to an initialized state (calls
|
|
|||||||||
|
Added to allow TSFExtended DefaultProductVectorSpace to derive from this.
|
|
||||||||||||||||
|
Initialize with a list of constituent vector spaces.
|
|
|||||||||
|
Return if
If this function returns |
|
||||||||||||||||
|
Uninitialize.
Warning! If |
|
|||||||||
|
Returns a pointer to an array (of length Postconditions:
|
|
|||||||||
|
Returns a pointer to an array (of length Postconditions:
|
|
||||||||||||||||||||
|
Get the position of the vector space object and its offset into a composite vector that owns the Preconditions:
Postconditions:
|
|
|||||||||
|
Implements Thyra::ProductVectorSpaceBase< Scalar >. |
|
||||||||||
|
Implements Thyra::ProductVectorSpaceBase< Scalar >. |
|
|||||||||
|
Returns the summation of the constituent vector spaces.
Implements Thyra::VectorSpaceBase< Scalar >. |
|
||||||||||
|
Returns true only if also a product vector space and all constituent vectors are compatible.
Implements Thyra::VectorSpaceBase< Scalar >. |
|
|||||||||
|
Returns a
Implements Thyra::VectorSpaceBase< Scalar >. |
|
||||||||||||||||
|
Returns the sum of the scalar products of the constituent vectors.
Implements Thyra::VectorSpaceBase< Scalar >. |
|
||||||||||||||||||||
|
Returns the sum of the scalar products of each of the columns of the constituent multi-vectors.
Implements Thyra::VectorSpaceBase< Scalar >. |
|
||||||||||||||||||||
|
Returns true if all of the constituent vector spaces return true.
Reimplemented from Thyra::VectorSpaceBase< Scalar >. |
|
|||||||||
|
Returns
Implements Thyra::VectorSpaceBase< Scalar >. |
|
||||||||||
|
Returns a
Reimplemented from Thyra::VectorSpaceDefaultBase< Scalar >. |
|
|||||||||
|
Clones the object as promised.
Reimplemented from Thyra::VectorSpaceBase< Scalar >. |
|
|||||||||
|
Prints just the name
Reimplemented from Teuchos::Describable. |
|
||||||||||||||||
|
Prints the details about the constituent vector spaces.
This function outputs different levels of detail based on the value passed in for ToDo: Finish documentation! |
|
||||||||||
|
Nonmember constructor that takes an array of vector spaces.
|
|
||||||||||||||||
|
Nonmember constructor that duplicates a block vector space
|
1.3.9.1