44 #ifndef ROL_VECTOR_SIMOPT_HPP 45 #define ROL_VECTOR_SIMOPT_HPP 59 Teuchos::RCP<Vector<Real> >
vec1_;
60 Teuchos::RCP<Vector<Real> >
vec2_;
63 mutable Teuchos::RCP<Vector_SimOpt<Real> >
dual_vec_;
67 : vec1_(vec1), vec2_(vec2) {
68 dual_vec1_ = (vec1_->dual()).
clone();
69 dual_vec2_ = (vec2_->dual()).
clone();
75 vec1_->plus(*(xs.
get_1()));
76 vec2_->plus(*(xs.
get_2()));
79 void scale(
const Real alpha ) {
87 vec1_->axpy(alpha,*(xs.
get_1()));
88 vec2_->axpy(alpha,*(xs.
get_2()));
94 return vec1_->dot(*(xs.
get_1())) + vec2_->dot(*(xs.
get_2()));
98 Real norm1 = vec1_->norm();
99 Real norm2 = vec2_->norm();
100 return sqrt( norm1*norm1 + norm2*norm2 );
103 Teuchos::RCP<Vector<Real> >
clone()
const {
104 return Teuchos::rcp(
new Vector_SimOpt(vec1_->clone(),vec2_->clone()) );
108 dual_vec1_->set(vec1_->dual());
109 dual_vec2_->set(vec2_->dual());
114 Teuchos::RCP<Vector<Real> >
basis(
const int i )
const {
117 Teuchos::RCP<Vector<Real> > e1 = (
vec1_)->
basis(i);
118 Teuchos::RCP<Vector<Real> > e2 = (
vec2_)->
clone(); e2->zero();
123 Teuchos::RCP<Vector<Real> > e1 = (
vec1_)->
clone(); e1->zero();
124 Teuchos::RCP<Vector<Real> > e2 = (
vec2_)->
basis(i-n1);
134 Teuchos::RCP<const Vector<Real> >
get_1()
const {
138 Teuchos::RCP<const Vector<Real> >
get_2()
const {
Teuchos::RCP< const Vector< Real > > get_1() const
Defines the linear algebra or vector space interface for simulation-based optimization.
void set_1(const Vector< Real > &vec)
Real dot(const Vector< Real > &x) const
Compute where .
Teuchos::RCP< Vector< Real > > vec2_
Real norm() const
Returns where .
Defines the linear algebra or vector space interface.
Teuchos::RCP< Vector< Real > > dual_vec2_
void scale(const Real alpha)
Compute where .
Teuchos::RCP< Vector< Real > > vec1_
Teuchos::RCP< Vector< Real > > basis(const int i) const
Return i-th basis vector.
Teuchos::RCP< Vector< Real > > clone() const
Clone to make a new (uninitialized) vector.
Vector_SimOpt(const Teuchos::RCP< Vector< Real > > &vec1, const Teuchos::RCP< Vector< Real > > &vec2)
void axpy(const Real alpha, const Vector< Real > &x)
Compute where .
void plus(const Vector< Real > &x)
Compute , where .
Teuchos::RCP< Vector< Real > > dual_vec1_
Teuchos::RCP< const Vector< Real > > get_2() const
Teuchos::RCP< Vector_SimOpt< Real > > dual_vec_
void set_2(const Vector< Real > &vec)
const Vector< Real > & dual(void) const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis...
int dimension() const
Return dimension of the vector space.