44 #ifndef ROL_PRIMALDUALHESSIAN_H 45 #define ROL_PRIMALDUALHESSIAN_H 58 const Teuchos::RCP<Objective<Real> >
obj_;
59 const Teuchos::RCP<BoundConstraint<Real> >
con_;
60 const Teuchos::RCP<Vector<Real> >
x_;
61 const Teuchos::RCP<Vector<Real> >
xlam_;
62 Teuchos::RCP<Vector<Real> >
v_;
64 const Teuchos::RCP<Secant<Real> >
secant_;
76 : obj_(obj), con_(con), x_(x), xlam_(xlam), secant_(Teuchos::null), eps_(0.0) {
85 const Teuchos::RCP<
Vector<Real> > &xlam,
bool useSecant =
true )
86 : obj_(obj), con_(con), x_(x), xlam_(xlam), secant_(secant), eps_(0.0) {
88 useSecant_ = useSecant;
100 con_->pruneActive(*v_,*xlam_,eps_);
101 if ( useSecant_ && secant_ != Teuchos::null ) {
102 secant_->applyB(Hv,*v_,*x_);
105 obj_->hessVec(Hv,*v_,*x_,tol);
107 con_->pruneActive(Hv,*xlam_,eps_);
const Teuchos::RCP< Vector< Real > > x_
Provides the interface to evaluate objective functions.
const Teuchos::RCP< Secant< Real > > secant_
Teuchos::RCP< Vector< Real > > v_
const Teuchos::RCP< BoundConstraint< Real > > con_
Contains definitions of custom data types in ROL.
PrimalDualHessian(const Teuchos::RCP< Objective< Real > > &obj, const Teuchos::RCP< BoundConstraint< Real > > &con, const Teuchos::RCP< Vector< Real > > &x, const Teuchos::RCP< Vector< Real > > &xlam)
Defines the linear algebra or vector space interface.
void apply(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply Hessian.
const Teuchos::RCP< Vector< Real > > xlam_
const Teuchos::RCP< Objective< Real > > obj_
Provides interface for and implements limited-memory secant operators.
Provides the interface to apply a linear operator.
Provides the interface to apply upper and lower bound constraints.
PrimalDualHessian(const Teuchos::RCP< Secant< Real > > &secant, const Teuchos::RCP< Objective< Real > > &obj, const Teuchos::RCP< BoundConstraint< Real > > &con, const Teuchos::RCP< Vector< Real > > &x, const Teuchos::RCP< Vector< Real > > &xlam, bool useSecant=true)