42 #ifndef THYRA_VECTOR_SPACE_BASE_DEF_HPP 43 #define THYRA_VECTOR_SPACE_BASE_DEF_HPP 45 #include "Thyra_VectorSpaceBase_decl.hpp" 46 #include "Thyra_VectorBase.hpp" 47 #include "Thyra_MultiVectorBase.hpp" 48 #include "Teuchos_Tuple.hpp" 52 # define THYRA_INITIALIZE_VECS_MULTIVECS_WITH_NANS 68 template<
class Scalar>
75 template<
class Scalar>
83 template<
class Scalar>
99 template<
class Scalar>
103 if (vs_in.has_ownership())
108 ,
"Thyra::makeHaveOwnership(vs): Error, the concrete VectorSpaceBase object identified as \'" 109 << vs->description() <<
"\' does not support the clone() function!" 115 template<
class Scalar>
119 const std::string &label
123 #ifdef THYRA_INITIALIZE_VECS_MULTIVECS_WITH_NANS 128 Teuchos::set_extra_data( makeHaveOwnership(vs),
"VectorSpaceBase",
129 Teuchos::outArg(v) );
130 if (label.length()) v->setObjectLabel(label);
135 template<
class Scalar>
141 return createMember(Teuchos::rcpFromRef(vs), label);
145 template<
class Scalar>
147 Thyra::createMembers(
149 int numMembers,
const std::string &label
154 #ifdef THYRA_INITIALIZE_VECS_MULTIVECS_WITH_NANS 159 Teuchos::set_extra_data(makeHaveOwnership(vs),
"VectorSpaceBase",
160 Teuchos::outArg(mv));
161 if(label.length()) mv->setObjectLabel(label);
166 template<
class Scalar>
168 Thyra::createMembers(
171 const std::string &label
174 return createMembers(vs, domain->
dim(), label);
178 template<
class Scalar>
180 Thyra::createMembers(
182 const std::string &label
185 return createMembers(Teuchos::rcp(&vs,
false), numMembers, label);
189 template<
class Scalar>
191 Thyra::createMemberView(
194 const std::string &label
199 Teuchos::set_extra_data( makeHaveOwnership(vs),
"VectorSpaceBase",
200 Teuchos::outArg(v) );
201 if (label.length()) v->setObjectLabel(label);
206 template<
class Scalar>
208 Thyra::createMemberView(
211 const std::string &label
214 return createMemberView(Teuchos::rcp(&vs,
false),raw_v,label);
218 template<
class Scalar>
220 Thyra::createMemberView(
223 const std::string &label
228 Teuchos::set_extra_data( makeHaveOwnership(vs),
"VectorSpaceBase",
229 Teuchos::outArg(v) );
236 template<
class Scalar>
238 Thyra::createMemberView(
241 const std::string &label
244 return createMemberView(Teuchos::rcp(&vs,
false),raw_v,label);
248 template<
class Scalar>
250 Thyra::createMembersView(
253 const std::string &label
258 Teuchos::set_extra_data( makeHaveOwnership(vs),
"VectorSpaceBase",
259 Teuchos::outArg(mv) );
260 if (label.length()) mv->setObjectLabel(label);
265 template<
class Scalar>
267 Thyra::createMembersView(
270 const std::string &label
273 return createMembersView(Teuchos::rcp(&vs,
false),raw_mv,label);
277 template<
class Scalar>
279 Thyra::createMembersView(
282 const std::string &label
287 Teuchos::set_extra_data( makeHaveOwnership(vs),
"VectorSpaceBase",
288 Teuchos::outArg(mv) );
295 template<
class Scalar>
299 const std::string &label
302 return createMembersView(Teuchos::rcp(&vs,
false),raw_mv,label);
314 #define THYRA_VECTOR_SPACE_BASE_INSTANT(SCALAR) \ 316 template class VectorSpaceBase<SCALAR >; \ 318 template RCP< VectorBase<SCALAR > > \ 320 const RCP<const VectorSpaceBase<SCALAR > > &vs, \ 321 const std::string &label \ 324 template RCP< VectorBase<SCALAR > > \ 326 const VectorSpaceBase<SCALAR > &vs, const std::string &label \ 329 template RCP< MultiVectorBase<SCALAR > > \ 331 const RCP<const VectorSpaceBase<SCALAR > > &vs, \ 332 int numMembers, const std::string &label \ 335 template RCP< Thyra::MultiVectorBase<SCALAR > > \ 337 const RCP<const VectorSpaceBase<SCALAR > > &vs, \ 338 const RCP<const VectorSpaceBase<SCALAR > > &domain, \ 339 const std::string &label \ 342 template RCP< MultiVectorBase<SCALAR > > \ 344 const VectorSpaceBase<SCALAR > &vs, int numMembers, \ 345 const std::string &label \ 348 template RCP<VectorBase<SCALAR > > \ 350 const RCP<const VectorSpaceBase<SCALAR > > &vs, \ 351 const RTOpPack::SubVectorView<SCALAR > &raw_v, \ 352 const std::string &label \ 355 template RCP<VectorBase<SCALAR > > \ 357 const VectorSpaceBase<SCALAR > &vs, \ 358 const RTOpPack::SubVectorView<SCALAR > &raw_v, \ 359 const std::string &label \ 362 template RCP<const VectorBase<SCALAR > > \ 364 const RCP<const VectorSpaceBase<SCALAR > > &vs, \ 365 const RTOpPack::ConstSubVectorView<SCALAR > &raw_v, \ 366 const std::string &label \ 369 template RCP<const VectorBase<SCALAR > > \ 371 const VectorSpaceBase<SCALAR > &vs, \ 372 const RTOpPack::ConstSubVectorView<SCALAR > &raw_v, \ 373 const std::string &label \ 376 template RCP<MultiVectorBase<SCALAR > > \ 378 const RCP<const VectorSpaceBase<SCALAR > > &vs, \ 379 const RTOpPack::SubMultiVectorView<SCALAR > &raw_mv, \ 380 const std::string &label \ 383 template RCP<MultiVectorBase<SCALAR > > \ 385 const VectorSpaceBase<SCALAR > &vs, \ 386 const RTOpPack::SubMultiVectorView<SCALAR > &raw_mv, \ 387 const std::string &label \ 390 template RCP<const MultiVectorBase<SCALAR > > \ 392 const RCP<const VectorSpaceBase<SCALAR > > &vs, \ 393 const RTOpPack::ConstSubMultiVectorView<SCALAR > &raw_mv, \ 394 const std::string &label \ 397 template RCP<const MultiVectorBase<SCALAR > > \ 398 createMembersView( const VectorSpaceBase<SCALAR > &vs, \ 399 const RTOpPack::ConstSubMultiVectorView<SCALAR > &raw_mv, \ 400 const std::string &label \ 404 #endif // THYRA_VECTOR_SPACE_BASE_DEF_HPP
bool is_null(const boost::shared_ptr< T > &p)
virtual RCP< MultiVectorBase< Scalar > > createMembers(int numMembers) const =0
Create a set of vector members (a MultiVectorBase) from the vector space.
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
virtual bool hasInCoreView(const Range1D &rng=Range1D(), const EViewType viewType=VIEW_TYPE_DETACHED, const EStrideType strideType=STRIDE_TYPE_NONUNIT) const
Returns true if this->acquireDetachedView(rng,...) returns a direct view of the range of data request...
Abstract interface for objects that represent a space for vectors.
EViewType
Determines if a view is a direct view of data or a detached copy of data.
virtual RCP< MultiVectorBase< Scalar > > createMembersView(const RTOpPack::SubMultiVectorView< Scalar > &raw_mv) const =0
Create a multi-vector member that is a non-const view of raw multi-vector data.
Interface for a collection of column vectors called a multi-vector.
virtual RCP< const VectorSpaceBase< Scalar > > clone() const
Clone this object (if supported).
Abstract interface for finite-dimensional dense vectors.
virtual void setObjectLabel(const std::string &objectLabel)
virtual RCP< VectorBase< Scalar > > createMemberView(const RTOpPack::SubVectorView< Scalar > &raw_v) const =0
Create a vector member that is a non-const view of raw vector data.
EStrideType
Determine if data is unit stride or non-unit stride.
virtual Ordinal dim() const =0
Return the dimension of the vector space.
virtual bool isEuclidean() const
Return if this vector space has a Euclidean (identity) basis in which case the scalar product is the ...