42 #ifndef THYRA_DETACHED_SPMD_VECTOR_VIEW_HPP 43 #define THYRA_DETACHED_SPMD_VECTOR_VIEW_HPP 46 #include "Thyra_SpmdVectorBase.hpp" 47 #include "Teuchos_Assert.hpp" 61 template<
class Scalar>
67 using Teuchos::rcp_dynamic_cast;
69 const RCP<const SpmdVectorBase<Scalar> > spmd_v =
72 sv_ = spmd_v->getLocalSubVector();
83 const RCP<const SpmdVectorSpaceBase<Scalar> >
spmdSpace()
const 84 {
if (!is_null(v_))
return v_->spmdSpace();
return Teuchos::null; }
88 Teuchos_Ordinal
globalOffset()
const {
return sv_.globalOffset(); }
90 Teuchos_Ordinal
subDim()
const {
return sv_.subDim(); }
92 const ArrayRCP<const Scalar>
values()
const {
return sv_.values(); }
94 ptrdiff_t
stride()
const {
return sv_.stride(); }
96 const Scalar&
operator[](Teuchos_Ordinal i)
const {
return sv_[i]; }
98 const Scalar&
operator()(Teuchos_Ordinal i)
const {
return sv_(i); }
100 Teuchos::RCP<const SpmdVectorBase<Scalar> > v_;
118 template<
class Scalar>
124 using Teuchos::rcp_dynamic_cast;
126 const RCP<SpmdVectorBase<Scalar> > spmd_v =
129 sv_ = spmd_v->getNonconstLocalSubVector();
140 const RCP<const SpmdVectorSpaceBase<Scalar> >
spmdSpace()
const 141 {
if (!is_null(v_))
return v_->spmdSpace();
return Teuchos::null; }
147 Teuchos_Ordinal
subDim()
const {
return sv_.subDim(); }
149 const ArrayRCP<const Scalar>
values()
const {
return sv_.values(); }
151 ptrdiff_t
stride()
const {
return sv_.stride(); }
153 Scalar&
operator[](Teuchos_Ordinal i)
const {
return sv_[i]; }
155 Scalar&
operator()(Teuchos_Ordinal i)
const {
return sv_(i); }
157 Teuchos::RCP<SpmdVectorBase<Scalar> > v_;
170 #endif // THYRA_DETACHED_SPMD_VECTOR_VIEW_HPP
Create an explicit detached mutable (non-const) view of all of the local elements on this process of ...
ConstDetachedSpmdVectorView(const Teuchos::RCP< const VectorBase< Scalar > > &v)
Base class for SPMD vectors that can provide views of contiguous elements in a process.
Teuchos_Ordinal subDim() const
const RTOpPack::SubVectorView< Scalar > & sv() const
const RCP< const SpmdVectorSpaceBase< Scalar > > spmdSpace() const
Scalar & operator()(Teuchos_Ordinal i) const
const Scalar & operator()(Teuchos_Ordinal i) const
const RCP< const SpmdVectorSpaceBase< Scalar > > spmdSpace() const
Scalar & operator[](Teuchos_Ordinal i) const
Teuchos_Ordinal subDim() const
Teuchos_Ordinal globalOffset() const
const ArrayRCP< const Scalar > values() const
~ConstDetachedSpmdVectorView()
const ArrayRCP< const Scalar > values() const
Abstract interface for finite-dimensional dense vectors.
DetachedSpmdVectorView(const Teuchos::RCP< VectorBase< Scalar > > &v)
~DetachedSpmdVectorView()
Create an explicit detached non-mutable (const) view of all of the local elements on this process of ...
const RTOpPack::ConstSubVectorView< Scalar > & sv() const
const Scalar & operator[](Teuchos_Ordinal i) const
Teuchos_Ordinal globalOffset() const