44 #ifndef ROL_BATCHSTDVECTOR_H
45 #define ROL_BATCHSTDVECTOR_H
61 const Ptr<BatchManager<Real>>
bman_;
71 uint numMySamples = yval.size();
72 ROL_TEST_FOR_EXCEPTION( xval.size() != numMySamples, std::invalid_argument,
73 "Error: Vectors must have the same dimension." );
74 Real val(0), sum_val(0);
75 for (
uint i = 0; i < numMySamples; ++i) {
76 val += xval[i] * yval[i];
79 bman_->sumAll(&val,&sum_val,1);
83 virtual Ptr<Vector<Real>>
clone(
void)
const {
85 uint numMySamples = yval.size();
86 return makePtr<BatchStdVector>(
87 makePtr<std::vector<Real>>(numMySamples),
bman_);
93 bman_->sumAll(&dim,&sum,1);
97 Real
reduce(
const Elementwise::ReductionOp<Real> &r)
const {
99 uint numMySamples = yval.size();
100 Real result = r.initialValue();
101 for (
uint i = 0; i < numMySamples; i++) {
102 r.reduce(yval[i],result);
106 bman_->reduceAll(&result,&sum,1,r);
typename PV< Real >::size_type size_type
virtual Real dot(const Vector< Real > &x) const
Compute where .
Provides the std::vector implementation of the ROL::Vector interface.
Ptr< const std::vector< Real > > getVector() const
Defines the linear algebra or vector space interface.
virtual Ptr< Vector< Real > > clone(void) const
Clone to make a new (uninitialized) vector.
Provides the ROL::Vector interface for scalar values, to be used, for example, with scalar constraint...
const Ptr< BatchManager< Real > > bman_
BatchStdVector(const Ptr< std::vector< Real >> &vec, const Ptr< BatchManager< Real >> &bman)
const Ptr< BatchManager< Real > > getBatchManager(void) const
std::vector< Real >::size_type uint
Real reduce(const Elementwise::ReductionOp< Real > &r) const
int dimension(void) const
Return dimension of the vector space.