45 #ifndef ROL_SERIALCONSTRAINT_HPP
46 #define ROL_SERIALCONSTRAINT_HPP
66 template<
typename Real>
74 Ptr<DynamicConstraint<Real>>
con_;
120 con_->solve( *(cp.get(k)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
135 con_->value( *(cp.get(k)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
141 Real& tol )
override {
150 con_->applyJacobian_un( *(jvp.get(0)), *(vp.get(0)), *
u_zero_, *(up.get(0)), *(zp.get(0)),
timeStamp_->at(0) );
153 con_->applyJacobian_uo( x, *(vp.get(k-1)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
154 con_->applyJacobian_un( *(jvp.get(k)), *(vp.get(k)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
170 con_->applyInverseJacobian_un( *(ijvp.get(0)), *(vp.get(0)), *
u_zero_, *(up.get(0)), *(zp.get(0)),
timeStamp_->at(0) );
173 con_->applyJacobian_uo( x, *(ijvp.get(k-1)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
175 x.plus( *(vp.get(k)) );
176 con_->applyInverseJacobian_un( *(ijvp.get(k)), x, *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
191 con_->applyAdjointJacobian_un( *(ajvp.get(0)), *(vp.get(0)), *
u_zero_, *(up.get(0)), *(zp.get(0)),
timeStamp_->at(0) );
194 con_->applyAdjointJacobian_un( *(ajvp.get(k)), *(vp.get(k)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
195 con_->applyAdjointJacobian_uo( x, *(vp.get(k)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
196 ajvp.get(k-1)->plus(x);
211 con_->applyInverseAdjointJacobian_un( *(iajvp.get(k)), *(vp.get(k)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
214 con_->applyAdjointJacobian_uo( x, *(iajvp.get(k+1)), *(up.get(k)), *(up.get(k+1)), *(zp.get(k+1)),
timeStamp_->at(k+1) );
216 x.plus( *(vp.get(k) ) );
217 con_->applyInverseAdjointJacobian_un( *(iajvp.get(k)), x, *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
220 con_->applyAdjointJacobian_uo( x, *(iajvp.get(1)), *(up.get(0)), *(up.get(1)), *(zp.get(1)),
timeStamp_->at(1) );
222 x.plus( *(vp.get(0) ) );
224 con_->applyInverseAdjointJacobian_un( *(iajvp.get(0)), x, *
u_zero_, *(up.get(0)), *(zp.get(0)),
timeStamp_->at(0) );
228 iajvp.get(0)->set(x);
241 con_->applyJacobian_z( *(jvp.get(0)), *(vp.get(0)), *
u_zero_, *(up.get(0)), *(zp.get(0)),
timeStamp_->at(0) );
244 con_->applyJacobian_z( *(jvp.get(k)), *(vp.get(k)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
255 con_->applyAdjointJacobian_z( *(ajvp.get(0)), *(vp.get(0)), *
u_zero_, *(up.get(0)), *(zp.get(0)),
timeStamp_->at(0) );
258 con_->applyAdjointJacobian_z( *(ajvp.get(k)), *(vp.get(k)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
274 con_->applyAdjointHessian_un_un( *(ahwvp.get(0)), *(wp.get(0)), *(vp.get(0)), *
u_zero_, *(up.get(0)), *(zp.get(0)),
timeStamp_->at(0) );
275 con_->applyAdjointHessian_un_uo( x, *(wp.get(1)), *(vp.get(1)), *(up.get(0)), *(up.get(1)), *(zp.get(1)),
timeStamp_->at(1) );
276 ahwvp.get(0)->plus(x);
277 con_->applyAdjointHessian_uo_uo( x, *(wp.get(1)), *(vp.get(0)), *(up.get(0)), *(up.get(1)), *(zp.get(1)),
timeStamp_->at(1) );
278 ahwvp.get(0)->plus(x);
283 con_->applyAdjointHessian_un_un( *(ahwvp.get(k)), *(wp.get(k)), *(vp.get(k)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
284 con_->applyAdjointHessian_uo_un( x, *(wp.get(k)), *(vp.get(k-1)), *(up.get(k-1)), *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
285 ahwvp.get(k)->plus(x);
288 con_->applyAdjointHessian_un_uo( x, *(wp.get(k+1)), *(vp.get(k+1)), *(up.get(k)), *(up.get(k+1)), *(zp.get(k+1)),
timeStamp_->at(k+1) );
289 ahwvp.get(k)->plus(x);
290 con_->applyAdjointHessian_uo_uo( x, *(wp.get(k+1)), *(vp.get(k)), *(up.get(k)), *(up.get(k+1)), *(zp.get(k+1)),
timeStamp_->at(k+1) );
291 ahwvp.get(k)->plus(x);
302 Real &tol)
override {}
310 Real &tol)
override {}
318 con_->applyAdjointHessian_z_z( *(ahwvp.get(0)), *(wp.get(0)), *(vp.get(0)), *
u_initial_,
319 *(up.get(0)), *(zp.get(0)),
timeStamp_->at(0) );
322 con_->applyAdjointHessian_z_z( *(ahwvp.get(k)), *(wp.get(k)), *(vp.get(k)), *(up.get(k-1)),
323 *(up.get(k)), *(zp.get(k)),
timeStamp_->at(k) );
332 template<
typename Real>
338 #endif // ROL_SERIALCONSTRAINT_HPP