42 #ifndef THYRA_DEFAULT_CLUSTERED_SPMD_PRODUCT_VECTOR_SPACE_DECL_HPP
43 #define THYRA_DEFAULT_CLUSTERED_SPMD_PRODUCT_VECTOR_SPACE_DECL_HPP
45 #include "Thyra_VectorSpaceBase_decl.hpp"
46 #include "Thyra_ProductVectorSpaceBase.hpp"
47 #include "Thyra_VectorSpaceDefaultBase.hpp"
48 #include "Teuchos_Comm.hpp"
84 template<
class Scalar>
85 class DefaultClusteredSpmdProductVectorSpace
86 :
public ProductVectorSpaceBase<Scalar>
87 ,
protected VectorSpaceDefaultBase<Scalar>
103 ,
const RCP<
const VectorSpaceBase<Scalar> > vecSpaces[]
131 ,
const RCP<
const VectorSpaceBase<Scalar> > vecSpaces[]
166 bool isCompatible(
const VectorSpaceBase<Scalar>& vecSpc)
const;
170 Scalar
scalarProd(
const VectorBase<Scalar>& x,
const VectorBase<Scalar>& y )
const;
173 const MultiVectorBase<Scalar>& X,
const MultiVectorBase<Scalar>& Y,
182 RCP< const VectorSpaceBase<Scalar> >
clone()
const;
191 RCP<const VectorSpaceBase<Scalar> >
getBlock(
const int k)
const;
203 RCP<MultiVectorBase<Scalar> >
createMembers(
int numMembers)
const;
212 typedef std::vector<RCP<const VectorSpaceBase<Scalar> > > vecSpaces_t;
217 RCP<const Teuchos::Comm<Ordinal> > intraClusterComm_;
218 int clusterRootRank_;
219 RCP<const Teuchos::Comm<Ordinal> > interClusterComm_;
220 vecSpaces_t vecSpaces_;
237 template<
class Scalar>
238 RCP<const Teuchos::Comm<Ordinal> >
241 return intraClusterComm_;
245 template<
class Scalar>
248 return clusterRootRank_;
252 template<
class Scalar>
256 return interClusterComm_;
260 template<
class Scalar>
263 return clusterSubDim_;
267 template<
class Scalar>
270 return clusterOffset_;
277 #endif // THYRA_DEFAULT_CLUSTERED_SPMD_PRODUCT_VECTOR_SPACE_DECL_HPP