Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar > Class Template Reference
[Efficient Generic SPMD Concrete Thyra Operator/Vector Subclass Implementations]

Concrete subclass of VectorSpaceBase that takes a collection of individual VectorSpaceBase objects distributed over many different processes and creates a single vector space. More...

#include <Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp>

Inheritance diagram for Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >:

[legend]
List of all members.

Constructors/Intializers/Accessors

 DefaultClusteredSpmdProductVectorSpace ()
 
 DefaultClusteredSpmdProductVectorSpace (const Teuchos::RefCountPtr< const Teuchos::Comm< Index > > &intraClusterComm, const int clusterRootRank, const Teuchos::RefCountPtr< const Teuchos::Comm< Index > > &interClusterComm, const int numBlocks, const Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > > vecSpaces[])
 
void initialize (const Teuchos::RefCountPtr< const Teuchos::Comm< Index > > &intraClusterComm, const int clusterRootRank, const Teuchos::RefCountPtr< const Teuchos::Comm< Index > > &interClusterComm, const int numBlocks, const Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > > vecSpaces[])
 Initalize.
Teuchos::RefCountPtr< const
Teuchos::Comm< Index > > 
intraClusterComm () const
 
int clusterRootRank () const
 
Teuchos::RefCountPtr< const
Teuchos::Comm< Index > > 
interClusterComm () const
 
int clusterSubDim () const
int clusterOffset () const

Overridden form Teuchos::Describable

std::string description () const
 

Public overridden from VectorSpaceBase

Index dim () const
 
bool isCompatible (const VectorSpaceBase< Scalar > &vecSpc) const
 
Teuchos::RefCountPtr< const
VectorSpaceFactoryBase< Scalar > > 
smallVecSpcFcty () const
 
Scalar scalarProd (const VectorBase< Scalar > &x, const VectorBase< Scalar > &y) const
 
void scalarProds (const MultiVectorBase< Scalar > &X, const MultiVectorBase< Scalar > &Y, Scalar scalar_prods[]) const
 
bool isEuclidean () const
 
bool hasInCoreView (const Range1D &rng, const EViewType viewType, const EStrideType strideType) const
 
Teuchos::RefCountPtr< const
VectorSpaceBase< Scalar > > 
clone () const
 

Protected overridden from ProductVectorSpaceBase

int numBlocks () const
 
Teuchos::RefCountPtr< const
VectorSpaceBase< Scalar > > 
getBlock (const int k) const
 

Protected overridden from VectorSpaceBase

Teuchos::RefCountPtr< VectorBase<
Scalar > > 
createMember () const
 
Teuchos::RefCountPtr< MultiVectorBase<
Scalar > > 
createMembers (int numMembers) const
 

Private Types

typedef std::vector< Teuchos::RefCountPtr<
const VectorSpaceBase< Scalar > > > 
vecSpaces_t

Private Attributes

Teuchos::RefCountPtr< const
Teuchos::Comm< Index > > 
intraClusterComm_
int clusterRootRank_
Teuchos::RefCountPtr< const
Teuchos::Comm< Index > > 
interClusterComm_
vecSpaces_t vecSpaces_
bool isEuclidean_
Index globalDim_
Index clusterSubDim_
Index clusterOffset_

Detailed Description

template<class Scalar>
class Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >

Concrete subclass of VectorSpaceBase that takes a collection of individual VectorSpaceBase objects distributed over many different processes and creates a single vector space.

What this class does is to take different vector space objects distributed over a set of different clusters of processes and then creates a single vector space object.

Let numClusters be the number of clusters that the processes in the global communicator are partitioned into. Each cluster of processes is represented by another communicator known in this process as intraClusterComm. The communicator that links the root of each cluster is called interClusterComm. All communication is performed with just these two communicators. There is no overall global communicator that encompasses all of the processes.

Within a cluster of processes, the number of constituent vector space objects must be the same. Let v[0]..v[numBlocks-1] be the numBlocks VectorBase objects for constituent vectors in this cluster of processes. There is no assumption make whatsoever about the natrue of the VectorSpaceBase objects or the [Multi]VectorBase objects that they create.

ToDo: Finish documentation!

The default copy constructor and assign operator are allowed and they work correctly and perform shallow copies of the constituent vector spaces!

Definition at line 69 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.


Member Typedef Documentation

template<class Scalar>
typedef std::vector<Teuchos::RefCountPtr<const VectorSpaceBase<Scalar> > > Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::vecSpaces_t [private]
 

Definition at line 196 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.


Constructor & Destructor Documentation

template<class Scalar>
Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::DefaultClusteredSpmdProductVectorSpace  ) 
 

Definition at line 45 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::DefaultClusteredSpmdProductVectorSpace const Teuchos::RefCountPtr< const Teuchos::Comm< Index > > &  intraClusterComm,
const int  clusterRootRank,
const Teuchos::RefCountPtr< const Teuchos::Comm< Index > > &  interClusterComm,
const int  numBlocks,
const Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > >  vecSpaces[]
 

Definition at line 50 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.


Member Function Documentation

template<class Scalar>
void Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::initialize const Teuchos::RefCountPtr< const Teuchos::Comm< Index > > &  intraClusterComm,
const int  clusterRootRank,
const Teuchos::RefCountPtr< const Teuchos::Comm< Index > > &  interClusterComm,
const int  numBlocks,
const Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > >  vecSpaces[]
 

Initalize.

Parameters:
intraClusterComm [in] The communicator over just this cluster.
clusterRootRank [in] The rank of the root process in *interClusterComm for this cluster of processes. This is also the process that in included in *interClusterComm (which has a different rank ther obviously).
interClusterComm [in] Defines the communicator between the root processes of all of the clusters. For the root process of each cluster *interClusterComm!=Spmd_COMM_NULL, otherwise interClusterComm==Teuchos::null or *interClusterComm==Spmd_COMM_NULL.
numBlocks [in] Number of vector space blocks for this cluster of processes.
vecSpaces [in] Array (length numBlocks) of the vector spaces for this cluster of processes.

Definition at line 62 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
Teuchos::RefCountPtr< const Teuchos::Comm< Index > > Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::intraClusterComm  )  const
 

Definition at line 221 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
int Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::clusterRootRank  )  const
 

Definition at line 227 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
Teuchos::RefCountPtr< const Teuchos::Comm< Index > > Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::interClusterComm  )  const
 

Definition at line 234 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
int Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::clusterSubDim  )  const
 

The some of the dimensions of the block vector spaces in this cluster.

Definition at line 240 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
int Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::clusterOffset  )  const
 

The offset of the first element in the first constituent vector in this cluster in the w.r.t. the global vector.

Definition at line 246 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
std::string Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::description  )  const
 

Definition at line 112 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
Index Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::dim  )  const [virtual]
 

Implements Thyra::VectorSpaceBase< Scalar >.

Definition at line 126 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
bool Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::isCompatible const VectorSpaceBase< Scalar > &  vecSpc  )  const [virtual]
 

Implements Thyra::VectorSpaceBase< Scalar >.

Definition at line 132 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
Teuchos::RefCountPtr< const VectorSpaceFactoryBase< Scalar > > Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::smallVecSpcFcty  )  const [virtual]
 

Implements Thyra::VectorSpaceBase< Scalar >.

Definition at line 146 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
Scalar Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::scalarProd const VectorBase< Scalar > &  x,
const VectorBase< Scalar > &  y
const [virtual]
 

Implements Thyra::VectorSpaceBase< Scalar >.

Definition at line 154 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
void Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::scalarProds const MultiVectorBase< Scalar > &  X,
const MultiVectorBase< Scalar > &  Y,
Scalar  scalar_prods[]
const [virtual]
 

Implements Thyra::VectorSpaceBase< Scalar >.

Definition at line 164 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
bool Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::isEuclidean  )  const [virtual]
 

Reimplemented from Thyra::VectorSpaceBase< Scalar >.

Definition at line 185 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
bool Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::hasInCoreView const Range1D rng,
const EViewType  viewType,
const EStrideType  strideType
const [virtual]
 

Reimplemented from Thyra::VectorSpaceBase< Scalar >.

Definition at line 191 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > > Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::clone  )  const [virtual]
 

Reimplemented from Thyra::VectorSpaceBase< Scalar >.

Definition at line 200 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
int Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::numBlocks  )  const [virtual]
 

Implements Thyra::ProductVectorSpaceBase< Scalar >.

Definition at line 208 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
Teuchos::RefCountPtr< const VectorSpaceBase< Scalar > > Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::getBlock const int  k  )  const [virtual]
 

Implements Thyra::ProductVectorSpaceBase< Scalar >.

Definition at line 215 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
Teuchos::RefCountPtr< VectorBase< Scalar > > Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::createMember  )  const [protected, virtual]
 

Implements Thyra::VectorSpaceBase< Scalar >.

Definition at line 225 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.

template<class Scalar>
Teuchos::RefCountPtr< MultiVectorBase< Scalar > > Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::createMembers int  numMembers  )  const [protected, virtual]
 

Reimplemented from Thyra::VectorSpaceDefaultBase< Scalar >.

Definition at line 233 of file Thyra_DefaultClusteredSpmdProductVectorSpace.hpp.


Member Data Documentation

template<class Scalar>
Teuchos::RefCountPtr<const Teuchos::Comm<Index> > Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::intraClusterComm_ [private]
 

Definition at line 201 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
int Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::clusterRootRank_ [private]
 

Definition at line 202 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
Teuchos::RefCountPtr<const Teuchos::Comm<Index> > Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::interClusterComm_ [private]
 

Definition at line 203 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
vecSpaces_t Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::vecSpaces_ [private]
 

Definition at line 204 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
bool Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::isEuclidean_ [private]
 

Definition at line 205 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
Index Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::globalDim_ [private]
 

Definition at line 206 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
Index Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::clusterSubDim_ [private]
 

Definition at line 208 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.

template<class Scalar>
Index Thyra::DefaultClusteredSpmdProductVectorSpace< Scalar >::clusterOffset_ [private]
 

Definition at line 210 of file Thyra_DefaultClusteredSpmdProductVectorSpaceDecl.hpp.


The documentation for this class was generated from the following files:
Generated on Thu Sep 18 12:33:12 2008 for Thyra Package Browser (Single Doxygen Collection) by doxygen 1.3.9.1