42 #ifndef THYRA_LISTED_MULTI_VECTOR_RANDOMIZER_HPP
43 #define THYRA_LISTED_MULTI_VECTOR_RANDOMIZER_HPP
45 #include "Thyra_MultiVectorRandomizerBase.hpp"
46 #include "Thyra_MultiVectorStdOps.hpp"
61 template<
class Scalar>
68 ,
const int numMultiVecs
74 ,
const int numMultiVecs
97 typedef std::vector<Teuchos::RCP<const MultiVectorBase<Scalar> > > multiVecs_t;
98 multiVecs_t multiVecs_;
108 template<
class Scalar>
111 ,
const int numMultiVecs
114 initialize(multiVecs,numMultiVecs);
118 template<
class Scalar>
121 ,
const int numMultiVecs
124 multiVecs_.resize(numMultiVecs);
125 std::copy( multiVecs, multiVecs + numMultiVecs, multiVecs_.begin() );
133 template<
class Scalar>
136 return multiVecs_[curr_mv_i_]->range()->isCompatible(space);
143 template<
class Scalar>
152 THYRA_ASSERT_VEC_SPACES(
"ListedMultiVectorRandomizer<Scalar>::randomize(mv)", *currMV->range(), *mv->range() );
153 THYRA_ASSERT_VEC_SPACES(
"ListedMultiVectorRandomizer<Scalar>::randomize(mv)", *currMV->domain(), *mv->domain() );
155 Thyra::assign( mv, *currMV );
156 if( curr_mv_i_ == static_cast<int>(multiVecs_.size()) - 1 )
166 #endif // THYRA_LISTED_MULTI_VECTOR_RANDOMIZER_HPP
#define THYRA_ASSERT_VEC_SPACES(FUNC_NAME, VS1, VS2)
This is a very useful macro that should be used to validate that two vector spaces are compatible...
void initialize(const Teuchos::RCP< const MultiVectorBase< Scalar > > multiVecs[], const int numMultiVecs)
Abstract interface for objects that represent a space for vectors.
Interface for a collection of column vectors called a multi-vector.
bool isCompatible(const VectorSpaceBase< Scalar > &space) const
Base interface for a strategy object for randomizing a multi-vector.
MultiVectorRandomizerBase subclass that returns a revolving list of preset MultiVectorBase objects...
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
ListedMultiVectorRandomizer(const Teuchos::RCP< const MultiVectorBase< Scalar > > multiVecs[], const int numMultiVecs)
Calls this->initialize().