45#ifndef ROL_SEMISMOOTHNEWTONPROJECTION_H
46#define ROL_SEMISMOOTHNEWTONPROJECTION_H
49#include "ROL_ParameterList.hpp"
54template<
typename Real>
102 const Ptr<Constraint<Real>>
con_;
103 const Ptr<BoundConstraint<Real>>
bnd_;
104 const Ptr<const Vector<Real>>
y_;
113 const Real alpha = 1e-4)
159 std::ostream &stream = std::cout)
const;
Provides the interface to apply upper and lower bound constraints.
Defines the general constraint operator interface.
Provides the interface to apply a linear operator.
const Ptr< Constraint< Real > > con_
Ptr< Vector< Real > > xprim_
const Ptr< BoundConstraint< Real > > bnd_
Ptr< Vector< Real > > mul_
Ptr< Vector< Real > > xdual_
Ptr< Vector< Real > > res_
void apply(Vector< Real > &Jx, const Vector< Real > &x, Real &tol) const
Apply linear operator.
const Ptr< Constraint< Real > > con_
const Ptr< BoundConstraint< Real > > bnd_
const Ptr< Vector< Real > > xprim_
const Ptr< Vector< Real > > xdual_
const Ptr< const Vector< Real > > y_
Jacobian(const Ptr< Constraint< Real > > &con, const Ptr< BoundConstraint< Real > > &bnd, const Ptr< const Vector< Real > > &y, const Ptr< Vector< Real > > &xdual, const Ptr< Vector< Real > > &xprim, const Real alpha=1e-4)
void applyInverse(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply inverse of linear operator.
void apply(Vector< Real > &Hv, const Vector< Real > &v, Real &tol) const
Apply linear operator.
Ptr< Vector< Real > > dlam_
Ptr< Vector< Real > > lnew_
Ptr< Vector< Real > > xnew_
void update_primal(Vector< Real > &y, const Vector< Real > &x, const Vector< Real > &lam) const
void solve_newton_system(Vector< Real > &s, const Vector< Real > &r, const Vector< Real > &y, const Real mu, const Real rho, int &iter, int &flag) const
void project_ssn(Vector< Real > &x, Vector< Real > &lam, Vector< Real > &dlam, std::ostream &stream=std::cout) const
SemismoothNewtonProjection(const Vector< Real > &xprim, const Vector< Real > &xdual, const Ptr< BoundConstraint< Real > > &bnd, const Ptr< Constraint< Real > > &con, const Vector< Real > &mul, const Vector< Real > &res)
Ptr< Krylov< Real > > krylov_
void project(Vector< Real > &x, std::ostream &stream=std::cout) override
Real compute_tolerance() const
Real residual(Vector< Real > &r, const Vector< Real > &y) const
Defines the linear algebra or vector space interface.
virtual void set(const Vector &x)
Set where .
virtual void scale(const Real alpha)=0
Compute where .
virtual const Vector & dual() const
Return dual representation of , for example, the result of applying a Riesz map, or change of basis,...
virtual void axpy(const Real alpha, const Vector &x)
Compute where .