44 #ifndef ROL_PROBABILITYVECTOR_H 45 #define ROL_PROBABILITYVECTOR_H 64 typedef typename std::vector<Real>::size_type
uint;
72 int numMySamples =
static_cast<int>(yval.size());
73 TEUCHOS_TEST_FOR_EXCEPTION((i < 0 || i >= numMySamples), std::invalid_argument,
74 ">>> ERROR (ROL::ProbabilityVector): index out of bounds in getProbability!");
80 int numMySamples =
static_cast<int>(yval.size());
81 TEUCHOS_TEST_FOR_EXCEPTION((i < 0 || i >= numMySamples), std::invalid_argument,
82 ">>> ERROR (ROL::ProbabilityVector): index out of bounds in setProbability!");
93 class PrimalProbabilityVector :
public ProbabilityVector<Real> {
94 typedef typename std::vector<Real>::size_type
uint;
96 Teuchos::RCP<std::vector<Real> >
scale_;
97 mutable Teuchos::RCP<DualProbabilityVector<Real> >
dual_vec_;
103 const Teuchos::RCP<std::vector<Real> > &
scale)
110 uint numMySamples =
static_cast<uint>(yval.size());
111 TEUCHOS_TEST_FOR_EXCEPTION( xval.size() != numMySamples, std::invalid_argument,
112 "Error: Vectors must have the same dimension." );
113 Real val(0), sum_val(0);
114 for (
uint i = 0; i < numMySamples; i++) {
115 val += xval[i] * (*scale_)[i] * yval[i];
122 Teuchos::RCP<Vector<Real> >
clone(
void)
const {
125 Teuchos::rcp(
new std::vector<Real>(numMySamples)),
133 Teuchos::rcp(
new std::vector<Real>(numMySamples)),
137 for (
uint i = 0; i < numMySamples; ++i) {
146 class DualProbabilityVector :
public ProbabilityVector<Real> {
147 typedef typename std::vector<Real>::size_type
uint;
156 const Teuchos::RCP<std::vector<Real> > &
scale)
163 uint numMySamples =
static_cast<uint>(yval.size());
164 TEUCHOS_TEST_FOR_EXCEPTION( xval.size() != numMySamples, std::invalid_argument,
165 "Error: Vectors must have the same dimension." );
166 Real val(0), sum_val(0);
167 for (
uint i = 0; i < numMySamples; i++) {
168 val += xval[i] * yval[i] / (*scale_)[i];
175 Teuchos::RCP<Vector<Real> >
clone(
void)
const {
178 Teuchos::rcp(
new std::vector<Real>(numMySamples)),
186 Teuchos::rcp(
new std::vector<Real>(numMySamples)),
190 for (
uint i = 0; i < numMySamples; i++) {
DualProbabilityVector(const Teuchos::RCP< std::vector< Real > > &vec, const Teuchos::RCP< BatchManager< Real > > &bman, const Teuchos::RCP< std::vector< Real > > &scale)
Teuchos::RCP< DualProbabilityVector< Real > > dual_vec_
Teuchos::RCP< std::vector< Real > > scale_
std::vector< Real >::size_type uint
void scale(const Real alpha)
Teuchos::RCP< Vector< Real > > clone(void) const
Clone to make a new (uninitialized) vector.
Teuchos::RCP< PrimalProbabilityVector< Real > > primal_vec_
Provides the std::vector implementation of the ROL::Vector interface.
Teuchos::RCP< Vector< Real > > clone(void) const
Clone to make a new (uninitialized) vector.
const Vector< Real > & dual(void) const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis...
Defines the linear algebra or vector space interface.
std::vector< Real >::size_type uint
int getNumMyAtoms(void) const
Real dot(const Vector< Real > &x) const
Compute where .
PrimalProbabilityVector(const Teuchos::RCP< std::vector< Real > > &vec, const Teuchos::RCP< BatchManager< Real > > &bman, const Teuchos::RCP< std::vector< Real > > &scale)
void setProbability(const int i, const Real wt)
Teuchos::RCP< const std::vector< Element > > getVector() const
Provides the std::vector implementation of the ROL::Vector interface.
std::vector< Real >::size_type uint
const Real getProbability(const int i) const
ProbabilityVector(const Teuchos::RCP< std::vector< Real > > &vec, const Teuchos::RCP< BatchManager< Real > > &bman)
const Vector< Real > & dual(void) const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis...
std::vector< Real >::size_type uint
const Teuchos::RCP< BatchManager< Real > > getBatchManager(void) const
Real dot(const Vector< Real > &x) const
Compute where .
Teuchos::RCP< std::vector< Real > > scale_