10#ifndef THYRA_LISTED_MULTI_VECTOR_RANDOMIZER_HPP
11#define THYRA_LISTED_MULTI_VECTOR_RANDOMIZER_HPP
13#include "Thyra_MultiVectorRandomizerBase.hpp"
14#include "Thyra_MultiVectorStdOps.hpp"
36 ,
const int numMultiVecs
42 ,
const int numMultiVecs
65 typedef std::vector<Teuchos::RCP<const MultiVectorBase<Scalar> > > multiVecs_t;
66 multiVecs_t multiVecs_;
79 ,
const int numMultiVecs
82 initialize(multiVecs,numMultiVecs);
89 ,
const int numMultiVecs
92 multiVecs_.resize(numMultiVecs);
93 std::copy( multiVecs, multiVecs + numMultiVecs, multiVecs_.begin() );
101template<
class Scalar>
104 return multiVecs_[curr_mv_i_]->range()->isCompatible(space);
111template<
class Scalar>
120 THYRA_ASSERT_VEC_SPACES(
"ListedMultiVectorRandomizer<Scalar>::randomize(mv)", *currMV->range(), *mv->range() );
121 THYRA_ASSERT_VEC_SPACES(
"ListedMultiVectorRandomizer<Scalar>::randomize(mv)", *currMV->domain(), *mv->domain() );
123 Thyra::assign( mv, *currMV );
124 if( curr_mv_i_ ==
static_cast<int>(multiVecs_.size()) - 1 )
MultiVectorRandomizerBase subclass that returns a revolving list of preset MultiVectorBase objects.
bool isCompatible(const VectorSpaceBase< Scalar > &space) const
ListedMultiVectorRandomizer(const Teuchos::RCP< const MultiVectorBase< Scalar > > multiVecs[], const int numMultiVecs)
Calls this->initialize().
void initialize(const Teuchos::RCP< const MultiVectorBase< Scalar > > multiVecs[], const int numMultiVecs)
Interface for a collection of column vectors called a multi-vector.
Base interface for a strategy object for randomizing a multi-vector.
Abstract interface for objects that represent a space for vectors.
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
#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.