1#ifndef LAGRANGELINEARIZATION_HH
2#define LAGRANGELINEARIZATION_HH
8 class AbstractLinearization;
9 class AbstractFunctionSpaceElement;
19 virtual double eval()
const;
55 std::unique_ptr<AbstractFunctionSpaceElement> origin;
56 std::unique_ptr<AbstractFunctionSpaceElement> lagrangeCorrection;
57 int stateId, controlId;
58 bool hasTlin_uu =
false;
Abstract Vector for function space algorithms.
virtual ~LagrangeLinearization()
virtual double eval() const
Evaluate f(origin)
virtual AbstractFunctionSpaceElement const & getOrigin() const
Get point of linearization.
LagrangeLinearization(AbstractLinearization *Nlin_, AbstractLinearization *Tlin_, AbstractFunctionSpaceElement const &adjointCorrection, int stateId_=1, int controlId_=0, bool hasTlin_uu_=false)
AbstractLinearization const & getNormalLinearization() const
virtual double evalL1norm() const
Evaluate L1 norm of integrand.
virtual void d2taxpy(double a, AbstractFunctionSpaceElement &y, AbstractFunctionSpaceElement const &x, int rbegin=0, int rend=-1, int cbegin=0, int cend=-1) const
Evaluate hessian times second argument: y = y+a*ddf*x.
virtual void d2axpy(double a, AbstractFunctionSpaceElement &y, AbstractFunctionSpaceElement const &x, int rbegin=0, int rend=-1, int cbegin=0, int cend=-1) const
Evaluate scaled hessian (of Lagrangian) times second argument.
virtual void evald(AbstractFunctionSpaceElement &g, int rbegin=0, int rend=-1) const
Evaluate f'(origin)(.) + <Lag. Multiplier, c'(origin)(.) > this is dual element.
AbstractLinearization & getTangentialLinearization()
AbstractLinearization & getNormalLinearization()
virtual void getMatrixBlocks(MatrixAsTriplet< double > &mat, int rbegin=0, int rend=-1, int cbegin=0, int cend=-1) const
Access matrix representation if available.
virtual void precompute()
Precompute data.
AbstractLinearization const & getTangentialLinearization() const