11#ifndef ROL_OBJECTIVE_TIMESIMOPT_HPP
12#define ROL_OBJECTIVE_TIMESIMOPT_HPP
45template<
typename Real>
51 Vector<Real> & getVector(Vector<Real> & x)
const {
52 return *(
static_cast<PartitionedVector<Real>&
>(x).get(I));
56 const Vector<Real> & getVector(
const Vector<Real> & x)
const {
57 return *(
static_cast<const PartitionedVector<Real>&
>(x).get(I));
68 using Objective_SimOpt<Real>::Objective_SimOpt;
79 virtual void update(
const Vector<Real>& u_old,
80 const Vector<Real>& u_new,
81 const Vector<Real>& z,
82 bool flag =
true,
int iter = -1 ) {
94 virtual void update_1_old(
const Vector<Real>& u_old,
bool flag =
true,
int iter = -1 ) {}
101 virtual void update_1_new(
const Vector<Real>& u_new,
bool flag =
true,
int iter = -1 ) {}
108 virtual void update_2(
const Vector<Real> &z,
bool flag =
true,
int iter = -1 )
override {}
112 virtual Real
value(
const Vector<Real>& u_old,
const Vector<Real>& u_new,
113 const Vector<Real>& z, Real& tol ) {
return 0; }
118 Vector<Real>& u_new,
const Vector<Real>& z, Real& tol ) {}
122 Vector<Real>& u_new,
const Vector<Real>& z, Real& tol ) {}
126 virtual void gradient_2( Vector<Real>& g,
const Vector<Real>& u_old,
127 Vector<Real>& u_new,
const Vector<Real>& z, Real& tol )
override {}
130 const Vector<Real> &u_old,
const Vector<Real>& u_new,
131 const Vector<Real> &z, Real &tol ) {}
134 const Vector<Real> &u_old,
const Vector<Real>& u_new,
135 const Vector<Real> &z, Real &tol ) {}
140 virtual void update(
const Vector<Real>& u,
const Vector<Real>& z,
141 bool flag =
true,
int iter = -1 )
override {
142 update(getVector<0>(u), getVector<1>(u), z, flag,iter);
145 virtual Real
value(
const Vector<Real>& u,
const Vector<Real>& z,
146 Real& tol )
override {
147 return value( getVector<0>(u), getVector<1>(u), z, tol );
150 virtual void solve( Vector<Real>& c, Vector<Real>& u,
const Vector<Real>& z )
override {
151 solve( c, getVector<0>(u), getVector<1>(u), z, tol );
154 virtual void gradient_1( Vector<Real>& g,
const Vector<Real>& u,
155 const Vector<Real>& z, Real& tol )
override {
157 auto& u_old = getVector<0>(u);
158 auto& u_new = getVector<1>(u);
169 virtual void gradient_2( Vector<Real>& g,
const Vector<Real>& u,
170 const Vector<Real>& z, Real& tol )
override {
171 auto& u_old = getVector<0>(u);
172 auto& u_new = getVector<1>(u);
177 virtual void hessVec_11( Vector<Real>& hv,
const Vector<Real>& v,
178 const Vector<Real>& u,
const Vector<Real>& z,
179 Real& tol )
override {
181 auto& hv_old = getVector<0>(hv);
182 auto& hv_new = getVector<1>(hv);
183 auto& v_old = getVector<0>(v);
184 auto& v_new = getVector<1>(v):
185 auto& u_old = getVector<0>(u);
186 auto& u_new = getVector<1>(u);
188 hessVec_11( hv_old, v_old, u_old, u_new, z, tol );
189 hessVec_11( hv_new, v_new, u_old, u_new, z, tol );
193 virtual void hessVec_12( Vector<Real>& hv,
const Vector<Real>& v,
194 const Vector<Real>& u,
const Vector<Real>& z,
195 Real& tol )
override { hv.zero(); }
197 virtual void hessVec_21( Vector<Real>& hv,
const Vector<Real>& v,
198 const Vector<Real>& u,
const Vector<Real>& z,
199 Real& tol )
override { hv.zero(); }
201 virtual void hessVec_22( Vector<Real>& hv,
const Vector<Real>& v,
202 const Vector<Real>& u,
const Vector<Real>& z,
203 Real& tol )
override { hv.zero(); }
VectorWorkspace< Real > workspace_
virtual void update_2(const Vector< Real > &z, bool flag=true, int iter=-1) override
Update constraint functions with respect to Opt variable. z is the control variable,...
virtual void hessVec_11_old(Vector< Real > &hv, const Vector< Real > &v_old, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)
virtual void update_1_old(const Vector< Real > &u_old, bool flag=true, int iter=-1)
Update constraint functions with respect to Sim variable. u_old is the state variable flag = true i...
virtual void solve(Vector< Real > &c, Vector< Real > &u, const Vector< Real > &z) override
virtual void gradient_1_new(Vector< Real > &g, const Vector< Real > &u_old, Vector< Real > &u_new, const Vector< Real > &z, Real &tol)
Compute contribution to simulation term gradient from this time step.
virtual void update(const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, bool flag=true, int iter=-1)
virtual void update_1_new(const Vector< Real > &u_new, bool flag=true, int iter=-1)
Update constraint functions with respect to Sim variable. u_new is the state variable flag = true i...
virtual void hessVec_11_new(Vector< Real > &hv, const Vector< Real > &v_new, const Vector< Real > &u_old, const Vector< Real > &u_new, const Vector< Real > &z, Real &tol)
virtual void gradient_1_old(Vector< Real > &g, const Vector< Real > &u_old, Vector< Real > &u_new, const Vector< Real > &z, Real &tol)
Compute contribution to simulation term gradient from this time step.
Defines the time-dependent objective function interface for simulation-based optimization....
Provides a "smart" cloning manager to be used a member variable in a class and called in the member f...
ROL::Objective_SerialSimOpt Objective_SimOpt value(const V &u, const V &z, Real &tol) override
virtual void hessVec_12(V &hv, const V &v, const V &u, const V &z, Real &tol) override
virtual void gradient_2(V &g, const V &u, const V &z, Real &tol) override
virtual void hessVec_21(V &hv, const V &v, const V &u, const V &z, Real &tol) override
virtual void hessVec_11(V &hv, const V &v, const V &u, const V &z, Real &tol) override
virtual void hessVec_22(V &hv, const V &v, const V &u, const V &z, Real &tol) override
virtual void gradient_1(V &g, const V &u, const V &z, Real &tol) override