17 Eigen::VectorXd tmp_grad;
18 for (
int i = 0; i <
forms_.size(); i++)
21 term = composite_grad(i) *
forms_[i]->compute_reduced_adjoint_rhs(
x, state, diff_cache);
23 term += composite_grad(i) *
forms_[i]->compute_reduced_adjoint_rhs(
x, state, diff_cache);
33 gradv.setZero(
x.size());
34 Eigen::VectorXd tmp_grad;
35 for (
int i = 0; i <
forms_.size(); i++)
37 forms_[i]->compute_partial_gradient(
x, tmp_grad);
38 gradv += composite_grad(i) * tmp_grad;
45 Eigen::VectorXd values;
46 values.setZero(
forms_.size());
48 for (
int i = 0; i <
forms_.size(); i++)
49 values(i) =
forms_[i]->value(
x);
61 for (
const auto &f :
forms_)
67 for (
const auto &f :
forms_)
69 if (f->enabled() && !f->is_step_valid(x0, x1))
78 for (
const auto &f :
forms_)
80 step = std::min(step, f->max_step_size(x0, x1));
87 for (
const auto &f :
forms_)
88 f->line_search_begin(x0, x1);
93 for (
const auto &f :
forms_)
99 for (
const auto &f :
forms_)
106 for (
const auto &f :
forms_)
107 f->solution_changed(new_x);
111 for (
const auto &f :
forms_)
113 if (f->enabled() && !f->is_step_collision_free(x0, x1))
Storage for additional data required by differntial code.
main class that contains the polyfem solver and all its state