10#ifndef THYRA_VECTOR_SPACE_DEFAULT_BASE_DEF_HPP
11#define THYRA_VECTOR_SPACE_DEFAULT_BASE_DEF_HPP
13#include "Thyra_VectorSpaceDefaultBase_decl.hpp"
14#include "Thyra_VectorSpaceFactoryBase.hpp"
15#include "Thyra_VectorSpaceBase.hpp"
16#include "Thyra_VectorBase.hpp"
17#include "Thyra_MultiVectorStdOps.hpp"
18#include "Thyra_DefaultColumnwiseMultiVector.hpp"
28class CopyVectorViewBack {
30 CopyVectorViewBack(
const VectorBase<Scalar> *v,
const RTOpPack::SubVectorView<Scalar> &raw_v )
35 RTOpPack::ConstSubVectorView<Scalar> sv;
36 v_->acquireDetachedView(
Range1D(),&sv);
37 RTOpPack::assign_entries<Scalar>( Teuchos::outArg(raw_v_), sv );
38 v_->releaseDetachedView(&sv);
41 const VectorBase<Scalar> *v_;
42 const RTOpPack::SubVectorView<Scalar> raw_v_;
47class CopyMultiVectorViewBack {
49 CopyMultiVectorViewBack(
const MultiVectorBase<Scalar> *mv,
const RTOpPack::SubMultiVectorView<Scalar> &raw_mv )
50 :mv_(mv), raw_mv_(raw_mv)
52 ~CopyMultiVectorViewBack()
54 RTOpPack::ConstSubMultiVectorView<Scalar> smv;
56 RTOpPack::assign_entries<Scalar>( Teuchos::outArg(raw_mv_), smv );
57 mv_->releaseDetachedView(&smv);
60 const MultiVectorBase<Scalar> *mv_;
61 const RTOpPack::SubMultiVectorView<Scalar> raw_mv_;
69Teuchos::RCP<MultiVectorBase<Scalar> >
92 v->acquireDetachedView(
Range1D(),&sv);
93 RTOpPack::assign_entries<Scalar>(
96 v->commitDetachedView(&sv);
98 Teuchos::set_extra_data(
100 "CopyVectorViewBack",
108template<
class Scalar>
119 v->acquireDetachedView(
Range1D(),&sv);
120 RTOpPack::assign_entries<Scalar>(
123 v->commitDetachedView(&sv);
128template<
class Scalar>
141 RTOpPack::assign_entries<Scalar>(
145 mv->commitDetachedView(&smv);
147 Teuchos::set_extra_data(
148 Teuchos::rcp(
new CopyMultiVectorViewBack<Scalar>(&*mv,raw_mv)),
149 "CopyMultiVectorViewBack",
157template<
class Scalar>
171 RTOpPack::assign_entries<Scalar>(
174 mv->commitDetachedView(&smv);
Ordinal numSubCols() const
Default subclass for MultiVectorBase implemented using columns of separate abstract vectors.
virtual RCP< VectorBase< Scalar > > createMember() const =0
Create a vector member from the vector space.
virtual RCP< const VectorSpaceFactoryBase< Scalar > > smallVecSpcFcty() const =0
Return a VectorSpaceFactoryBase object for the creation of (usually serial) vector spaces with a smal...
RCP< MultiVectorBase< Scalar > > createMembersView(const RTOpPack::SubMultiVectorView< Scalar > &raw_mv) const
RCP< VectorBase< Scalar > > createMemberView(const RTOpPack::SubVectorView< Scalar > &raw_v) const
RCP< MultiVectorBase< Scalar > > createMembers(int numMembers) const
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)