44 #ifndef ROL_BATCHSTDVECTOR_H
45 #define ROL_BATCHSTDVECTOR_H
61 const ROL::Ptr<BatchManager<Real> >
bman_;
76 uint numMySamples = yval.size();
77 ROL_TEST_FOR_EXCEPTION( xval.size() != numMySamples, std::invalid_argument,
78 "Error: Vectors must have the same dimension." );
79 Real val(0), sum_val(0);
80 for (
uint i = 0; i < numMySamples; ++i) {
81 val += xval[i] * yval[i];
84 bman_->sumAll(&val,&sum_val,1);
88 virtual ROL::Ptr<Vector<Real> >
clone(
void)
const {
90 uint numMySamples = yval.size();
91 return ROL::makePtr<BatchStdVector>(
92 ROL::makePtr<std::vector<Real>>(numMySamples),
bman_);
98 bman_->sumAll(&dim,&sum,1);
102 Real
reduce(
const Elementwise::ReductionOp<Real> &r)
const {
104 uint numMySamples = yval.size();
105 Real result = r.initialValue();
106 for (
uint i = 0; i < numMySamples; i++) {
107 r.reduce(yval[i],result);
111 bman_->reduceAll(&result,&sum,1,r);
BatchStdVector(const ROL::Ptr< std::vector< Real > > &vec, const ROL::Ptr< BatchManager< Real > > &bman)
typename PV< Real >::size_type size_type
virtual Real dot(const Vector< Real > &x) const
Compute where .
const ROL::Ptr< BatchManager< Real > > getBatchManager(void) const
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.
Provides the ROL::Vector interface for scalar values, to be used, for example, with scalar constraint...
const ROL::Ptr< BatchManager< Real > > bman_
std::vector< Real >::size_type uint
virtual ROL::Ptr< Vector< Real > > clone(void) const
Clone to make a new (uninitialized) vector.
Real reduce(const Elementwise::ReductionOp< Real > &r) const
int dimension(void) const
Return dimension of the vector space.