19 f->set_project_to_psd(project_to_psd);
31 f->update_lagging(
x, iter_num);
45 if (f->uses_lagging())
53 f->line_search_begin(x0, x1);
67 step = std::min(step, f->max_step_size(x0, x1));
74 if (f->enabled() && !f->is_step_valid(x0, x1))
82 if (f->enabled() && !f->is_step_collision_free(x0, x1))
98 grad = TVector::Zero(
x.size());
104 f->first_derivative(
x, tmp);
117 f->second_derivative(
x, tmp);
125 f->solution_changed(
x);
virtual double max_step_size(const TVector &x0, const TVector &x1) override
virtual void init_lagging(const TVector &x)
virtual void set_project_to_psd(bool val) override
FullNLProblem(const std::vector< std::shared_ptr< Form > > &forms)
virtual void hessian(const TVector &x, THessian &hessian) override
bool uses_lagging() const
virtual bool is_step_collision_free(const TVector &x0, const TVector &x1)
std::vector< std::shared_ptr< Form > > forms_
virtual void post_step(const polysolve::nonlinear::PostStepData &data) override
virtual void update_lagging(const TVector &x, const int iter_num)
virtual bool is_step_valid(const TVector &x0, const TVector &x1) override
virtual void line_search_end() override
int max_lagging_iterations() const
virtual double value(const TVector &x) override
virtual void init(const TVector &x0) override
virtual void solution_changed(const TVector &new_x) override
virtual void gradient(const TVector &x, TVector &gradv) override
virtual void line_search_begin(const TVector &x0, const TVector &x1) override