#include <Thyra_DefaultProductVectorSpace_decl.hpp>
Inheritance diagram for Thyra::DefaultProductVectorSpace< Scalar >:

Constructors/initializers/accessors | |
| DefaultProductVectorSpace () | |
| Default construct to uninitialized. | |
| DefaultProductVectorSpace (const ArrayView< const RCP< const VectorSpaceBase< Scalar > > > &vecSpaces) | |
| virtual void | initialize (const ArrayView< const 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 (const ArrayView< RCP< const VectorSpaceBase< Scalar > > > &vecSpaces=Teuchos::null) |
| Uninitialize. | |
| virtual const 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 |
| | |
| 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. | |
| 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 | scalarProdsImpl (const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, const ArrayView< Scalar > &scalarProds) 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. | |
| RCP< const VectorSpaceFactoryBase< Scalar > > | smallVecSpcFcty () const |
Returns getBlock(0)->smallVecSpcFcty(). | |
| RCP< MultiVectorBase< Scalar > > | createMembers (int numMembers) const |
Returns a DefaultProductMultiVector object. | |
| 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. | |
Deprecated. | |
| DefaultProductVectorSpace (const int numBlocks_in, const RCP< const VectorSpaceBase< Scalar > > vecSpaces_in[]) | |
| Deprecated . | |
| void | initialize (const int numBlocks_in, const RCP< const VectorSpaceBase< Scalar > > vecSpaces_in[]) |
| Deprecated . | |
Related Functions | |
| (Note that these are not member functions.) | |
| RCP< DefaultProductVectorSpace< Scalar > > | productVectorSpace () |
| Nonmember constructor that constructs to uninitialized. | |
| RCP< DefaultProductVectorSpace< Scalar > > | productVectorSpace (const ArrayView< RCP< const VectorSpaceBase< Scalar > > > &vecSpaces) |
| Nonmember constructor that takes an array of vector spaces. | |
| RCP< DefaultProductVectorSpace< Scalar > > | productVectorSpace (const 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 rcp_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: x
void constructProductSpace( const ArrayView<const RCP<const VectorSpaceBase<Scalar> > &Vs, const Ptr<RCP<const VectorSpaceBase<Scalar> > > &Z ) { *Z = productVectorSpace<Scalar>(Vs); }
Or, a product space can be constructed out of p copies of the same VectorSpaceBase object as follows:
void constructProductSpace( const RCP<const VectorSpaceBase<Scalar> > V, int p, const Ptr<RCP<const VectorSpaceBase<Scalar> > > &Z ) { Array<RCP<const VectorSpaceBase<Scalar> > > vecSpaces; for( int k = 0; k < p; ++k ) vecSpaces.push_back(V); *Z = productVectorSpace<Scalar>(vecSpaces()); }
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.
Definition at line 123 of file Thyra_DefaultProductVectorSpace_decl.hpp.
| Thyra::DefaultProductVectorSpace< Scalar >::DefaultProductVectorSpace | ( | ) |
Default construct to uninitialized.
Definition at line 47 of file Thyra_DefaultProductVectorSpace_def.hpp.
| Thyra::DefaultProductVectorSpace< Scalar >::DefaultProductVectorSpace | ( | const ArrayView< const RCP< const VectorSpaceBase< Scalar > > > & | vecSpaces | ) |
Construct to an initialized state (calls initialize).
Definition at line 53 of file Thyra_DefaultProductVectorSpace_def.hpp.
| Thyra::DefaultProductVectorSpace< Scalar >::DefaultProductVectorSpace | ( | const int | numBlocks_in, | |
| const RCP< const VectorSpaceBase< Scalar > > | vecSpaces_in[] | |||
| ) | [inline] |
| void Thyra::DefaultProductVectorSpace< Scalar >::initialize | ( | const ArrayView< const RCP< const VectorSpaceBase< Scalar > > > & | vecSpaces | ) | [virtual] |
Initialize with a list of constituent vector spaces.
| numBlocks | [in] The number of constituent vector spaces. | |
| vecSpaces | [in] If vecSpaces!=NULL then vecSpaces must point to an array of length this->numBlocks and on output vecSpace[i] will be set to this->vecSpaces()[i] for i=0,..,this->numBlocks()-1. |
numBlocks > 0
vecSpaces != NULL
vecSpaces[i].get() != NULL, i=0,...,numBlocks
vecSpace[i]->smallVecSpcFcty()->createVecSpc(k) must be compatible. In other words,
vecSpace[i]->smallVecSpcFcty()->createVecSpc(k)->isCompatible( *vecSpace[j]->smallVecSpcFcty()->createVecSpc(k) ) == true for all i=[0,numBlocks], j=[0,numBlocks] and valid k > 0. This is required to insure that product multi-vectors can be created with constituent multi-vector blocks that have compatible domain() vector spaces.
Postconditions:
this->dim() == sum( vecSpaces[i]->dim(), i=0,...,numBlocks-1 ) this->numBlocks()==numBlocks getBlock(i).get() == vecSpaces[i].get(), i=0,...,numBlocks-1 vecSpaces()[i].get() == vecSpaces[i].get(), i=0,...,numBlocks-1
Definition at line 63 of file Thyra_DefaultProductVectorSpace_def.hpp.
| bool Thyra::DefaultProductVectorSpace< Scalar >::hasBeenCloned | ( | ) | const [inline] |
Return if this vector space was cloned.
If this function returns true then the client needs to be careful about how the constituent vector spaces returned from uninitialize() will be used.
Definition at line 466 of file Thyra_DefaultProductVectorSpace_decl.hpp.
| void Thyra::DefaultProductVectorSpace< Scalar >::uninitialize | ( | const ArrayView< RCP< const VectorSpaceBase< Scalar > > > & | vecSpaces = Teuchos::null |
) | [virtual] |
Uninitialize.
| numBlocks | [out] If numBlocks!=NULL then on output *numBlocks will be set to this->numBlocks(). | |
| vecSpaces | [out] If vecSpaces!=NULL then vecSpaces must point to an array of length this->numBlocks and on output vecSpace[i] will be set to this->vecSpaces()[i] for i=0,..,this->numBlocks()-1. |
this->numBlocks()==0 vecSpaces()==NULL
Warning! If this->hasBeenCloned()==true then the client had better not mess with the constituent vector spaces returned in vecSpaces[] since another DefaultProductVectorSpace object is still using them.
Definition at line 106 of file Thyra_DefaultProductVectorSpace_def.hpp.
| const RCP< const VectorSpaceBase< Scalar > > * Thyra::DefaultProductVectorSpace< Scalar >::vecSpaces | ( | ) | const [inline, virtual] |
Returns a pointer to an array (of length this->numBlocks()) to the constituent vector spaces.
Postconditions:
this->numBlocks() == 0] return == NULL this->numBlocks() > 0] return != NULL Definition at line 451 of file Thyra_DefaultProductVectorSpace_decl.hpp.
| const Index * Thyra::DefaultProductVectorSpace< Scalar >::vecSpacesOffsets | ( | ) | const [inline, virtual] |
Returns a pointer to an array (of length this->numBlocks()+1) of offset into each constituent vector space.
Postconditions:
this->numBlocks() == 0] return == NULL this->numBlocks() > 0] return != NULL Definition at line 459 of file Thyra_DefaultProductVectorSpace_decl.hpp.
| void Thyra::DefaultProductVectorSpace< Scalar >::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.
| i | [in] The index offset of the element to find the vector space object for. | |
| kth_vector_space | [out] The index for this->vectorSpaces()[kth_vector_space] that owns the element i. | |
| kth_global_offset | [out] The global offset for this->vectorSpaces()[kth_vector_space] in the composite vector. |
0 <= i < this->dim() Postconditions:
kth_global_offset == this->vecSpacesoffsets()[kth_vector-space]
kth_global_offset <= i <= kth_global_offset + this->vecSpaces()[kth_vector_space]->dim() - 1
Definition at line 120 of file Thyra_DefaultProductVectorSpace_def.hpp.
| int Thyra::DefaultProductVectorSpace< Scalar >::numBlocks | ( | ) | const [virtual] |
Implements Thyra::ProductVectorSpaceBase< Scalar >.
Definition at line 150 of file Thyra_DefaultProductVectorSpace_def.hpp.
| Teuchos::RCP< const VectorSpaceBase< Scalar > > Thyra::DefaultProductVectorSpace< Scalar >::getBlock | ( | const int | k | ) | const [virtual] |
Implements Thyra::ProductVectorSpaceBase< Scalar >.
Definition at line 158 of file Thyra_DefaultProductVectorSpace_def.hpp.
| Index Thyra::DefaultProductVectorSpace< Scalar >::dim | ( | ) | const [virtual] |
Returns the summation of the constituent vector spaces.
Implements Thyra::VectorSpaceBase< Scalar >.
Definition at line 169 of file Thyra_DefaultProductVectorSpace_def.hpp.
| bool Thyra::DefaultProductVectorSpace< Scalar >::isCompatible | ( | const VectorSpaceBase< Scalar > & | vecSpc | ) | const [virtual] |
Returns true only if also a product vector space and all constituent vectors are compatible.
Implements Thyra::VectorSpaceBase< Scalar >.
Definition at line 176 of file Thyra_DefaultProductVectorSpace_def.hpp.
| Teuchos::RCP< VectorBase< Scalar > > Thyra::DefaultProductVectorSpace< Scalar >::createMember | ( | ) | const [virtual] |
Returns a DefaultProductVector object.
Implements Thyra::VectorSpaceBase< Scalar >.
Definition at line 224 of file Thyra_DefaultProductVectorSpace_def.hpp.
| Scalar Thyra::DefaultProductVectorSpace< Scalar >::scalarProd | ( | const VectorBase< Scalar > & | x, | |
| const VectorBase< Scalar > & | y | |||
| ) | const [virtual] |
Returns the sum of the scalar products of the constituent vectors.
Implements Thyra::VectorSpaceBase< Scalar >.
Definition at line 231 of file Thyra_DefaultProductVectorSpace_def.hpp.
| void Thyra::DefaultProductVectorSpace< Scalar >::scalarProdsImpl | ( | const MultiVectorBase< Scalar > & | X, | |
| const MultiVectorBase< Scalar > & | Y, | |||
| const ArrayView< Scalar > & | scalarProds | |||
| ) | const [virtual] |
Returns the sum of the scalar products of each of the columns of the constituent multi-vectors.
Implements Thyra::VectorSpaceBase< Scalar >.
Definition at line 256 of file Thyra_DefaultProductVectorSpace_def.hpp.
| bool Thyra::DefaultProductVectorSpace< Scalar >::hasInCoreView | ( | const Range1D & | rng, | |
| const EViewType | viewType, | |||
| const EStrideType | strideType | |||
| ) | const [virtual] |
Returns true if all of the constituent vector spaces return true.
Reimplemented from Thyra::VectorSpaceBase< Scalar >.
Definition at line 298 of file Thyra_DefaultProductVectorSpace_def.hpp.
| Teuchos::RCP< const VectorSpaceFactoryBase< Scalar > > Thyra::DefaultProductVectorSpace< Scalar >::smallVecSpcFcty | ( | ) | const [virtual] |
Returns getBlock(0)->smallVecSpcFcty().
Implements Thyra::VectorSpaceBase< Scalar >.
Definition at line 335 of file Thyra_DefaultProductVectorSpace_def.hpp.
| Teuchos::RCP< MultiVectorBase< Scalar > > Thyra::DefaultProductVectorSpace< Scalar >::createMembers | ( | int | numMembers | ) | const [virtual] |
Returns a DefaultProductMultiVector object.
Reimplemented from Thyra::VectorSpaceDefaultBase< Scalar >.
Definition at line 345 of file Thyra_DefaultProductVectorSpace_def.hpp.
| Teuchos::RCP< const VectorSpaceBase< Scalar > > Thyra::DefaultProductVectorSpace< Scalar >::clone | ( | ) | const [virtual] |
Clones the object as promised.
Reimplemented from Thyra::VectorSpaceBase< Scalar >.
Definition at line 354 of file Thyra_DefaultProductVectorSpace_def.hpp.
| std::string Thyra::DefaultProductVectorSpace< Scalar >::description | ( | ) | const [virtual] |
Prints just the name DefaultProductVectorSpace along with the overall dimension and the number of blocks.
Reimplemented from Teuchos::Describable.
Definition at line 374 of file Thyra_DefaultProductVectorSpace_def.hpp.
| void Thyra::DefaultProductVectorSpace< Scalar >::describe | ( | Teuchos::FancyOStream & | out, | |
| const Teuchos::EVerbosityLevel | verbLevel | |||
| ) | const [virtual] |
Prints the details about the constituent vector spaces.
This function outputs different levels of detail based on the value passed in for verbLevel:
ToDo: Finish documentation!
Reimplemented from Teuchos::Describable.
Definition at line 387 of file Thyra_DefaultProductVectorSpace_def.hpp.
| void Thyra::DefaultProductVectorSpace< Scalar >::initialize | ( | const int | numBlocks_in, | |
| const RCP< const VectorSpaceBase< Scalar > > | vecSpaces_in[] | |||
| ) | [inline] |
| RCP< DefaultProductVectorSpace< Scalar > > productVectorSpace | ( | ) | [related] |
Nonmember constructor that constructs to uninitialized.
Definition at line 404 of file Thyra_DefaultProductVectorSpace_decl.hpp.
| RCP< DefaultProductVectorSpace< Scalar > > productVectorSpace | ( | const ArrayView< RCP< const VectorSpaceBase< Scalar > > > & | vecSpaces | ) | [related] |
Nonmember constructor that takes an array of vector spaces.
Definition at line 417 of file Thyra_DefaultProductVectorSpace_decl.hpp.
| RCP< DefaultProductVectorSpace< Scalar > > productVectorSpace | ( | const RCP< const VectorSpaceBase< Scalar > > & | vecSpace, | |
| const int | numBlocks | |||
| ) | [related] |
Nonmember constructor that duplicates a block vector space numBlock times to form a product space.
Definition at line 433 of file Thyra_DefaultProductVectorSpace_decl.hpp.
1.4.7