10#ifndef ROL_BINARY_CONSTRAINT_H
11#define ROL_BINARY_CONSTRAINT_H
26template<
typename Real>
29 const Ptr<const Vector<Real>>
lo_;
30 const Ptr<const Vector<Real>>
up_;
34 class BoundsCheck :
public Elementwise::BinaryFunction<Real> {
41 Real
apply(
const Real &dl,
const Real &du )
const {
42 const Real
zero(0), one(1), two(2);
46 case 0:
return dl*du;
break;
47 case 1:
return du-dl;
break;
48 case 2:
return -two;
break;
49 default:
return zero;
break;
54 case 0:
return dl;
break;
55 case 1:
return one;
break;
56 case 2:
return zero;
break;
57 default:
return zero;
break;
64 case 0:
return du;
break;
65 case 1:
return -one;
break;
66 case 2:
return zero;
break;
67 default:
return zero;
break;
Objective_SerialSimOpt(const Ptr< Obj > &obj, const V &ui) z0 zero)()
Real apply(const Real &dl, const Real &du) const
const Ptr< const Vector< Real > > lo_
void value(Vector< Real > &c, const Vector< Real > &x, Real &tol) override
BinaryConstraint(const ROL::Ptr< const Vector< Real > > &lo, const ROL::Ptr< const Vector< Real > > &up, Real gamma)
void applyAdjointJacobian(Vector< Real > &ajv, const Vector< Real > &v, const Vector< Real > &x, Real &tol) override
void setPenalty(Real gamma)
void applyJacobian(Vector< Real > &jv, const Vector< Real > &v, const Vector< Real > &x, Real &tol) override
const Ptr< const Vector< Real > > up_
void applyAdjointHessian(Vector< Real > &ahuv, const Vector< Real > &u, const Vector< Real > &v, const Vector< Real > &x, Real &tol) override
Provides the interface to apply upper and lower bound constraints.
Defines the linear algebra or vector space interface.