PolyFEM
Loading...
Searching...
No Matches
ParametrizationForm.cpp
Go to the documentation of this file.
2#include <polyfem/State.hpp>
3
4namespace polyfem::solver
5{
6 void ParametrizationForm::init(const Eigen::VectorXd &x)
7 {
9 }
10
11 bool ParametrizationForm::is_step_valid(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) const
12 {
14 }
15
16 double ParametrizationForm::max_step_size(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) const
17 {
19 }
20
21 void ParametrizationForm::line_search_begin(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1)
22 {
24 }
25
30
31 void ParametrizationForm::post_step(const polysolve::nonlinear::PostStepData &data)
32 {
33 post_step_with_param(polysolve::nonlinear::PostStepData(
34 data.iter_num,
35 data.solver_info,
37 parametrizations_.apply_jacobian(data.grad, data.x)));
38 }
39
40 double ParametrizationForm::value_unweighted(const Eigen::VectorXd &x) const
41 {
42 Eigen::VectorXd y = apply_parametrizations(x);
44 }
45
46 void ParametrizationForm::solution_changed(const Eigen::VectorXd &new_x)
47 {
49 }
50
51 void ParametrizationForm::compute_partial_gradient(const Eigen::VectorXd &x, Eigen::VectorXd &gradv) const
52 {
54 gradv = parametrizations_.apply_jacobian(gradv, x);
55 }
56
57 bool ParametrizationForm::is_step_collision_free(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) const
58 {
60 }
61}
int y
int x
Eigen::VectorXd apply_jacobian(const Eigen::VectorXd &grad_full, const Eigen::VectorXd &x) const override
virtual void post_step_with_param(const polysolve::nonlinear::PostStepData &data)
virtual void solution_changed_with_param(const Eigen::VectorXd &new_x)
virtual bool is_step_collision_free(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) const final override
Checks if the step is collision free.
virtual void line_search_begin_with_param(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1)
virtual bool is_step_collision_free_with_param(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) const
virtual bool is_step_valid_with_param(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) const
virtual void solution_changed(const Eigen::VectorXd &new_x) final override
Update cached fields upon a change in the solution.
virtual double value_unweighted(const Eigen::VectorXd &x) const final override
Compute the value of the form.
virtual void init(const Eigen::VectorXd &x) final override
Initialize the form.
virtual void post_step(const polysolve::nonlinear::PostStepData &data) final override
Update fields after a step in the optimization.
virtual void compute_partial_gradient(const Eigen::VectorXd &x, Eigen::VectorXd &gradv) const final override
virtual void init_with_param(const Eigen::VectorXd &x)
virtual double max_step_size_with_param(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) const
virtual double value_unweighted_with_param(const Eigen::VectorXd &x) const
virtual void compute_partial_gradient_with_param(const Eigen::VectorXd &x, Eigen::VectorXd &gradv) const =0
virtual double max_step_size(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) const final
Determine the maximum step size allowable between the current and next solution.
virtual void line_search_end() final override
Clear variables used during the line search.
Eigen::VectorXd apply_parametrizations(const Eigen::VectorXd &x) const
virtual void line_search_begin(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) final override
Initialize variables used during the line search.
virtual bool is_step_valid(const Eigen::VectorXd &x0, const Eigen::VectorXd &x1) const final override
Determine if a step from solution x0 to solution x1 is allowed.