11 for (
auto &v2s :
data)
19 const Eigen::VectorXd &
x,
20 Eigen::VectorXd &state_variable)
const
23 for (
const auto &v2s :
data)
25 if (v2s->parameter_type() != type)
29 if (!v2s->affect_state(target))
35 v2s->update_state_variables(
x, state_variable);
41 Eigen::VectorXd adjoint_term = Eigen::VectorXd::Zero(
x.size());
42 for (
const auto &v2s :
data)
44 adjoint_term += v2s->compute_adjoint_term(
x);
51 const Eigen::VectorXd &
x,
52 const std::function<Eigen::VectorXd()> &grad)
const
54 Eigen::VectorXd gradv = Eigen::VectorXd::Zero(
x.size());
55 for (
const auto &v2s :
data)
57 if (v2s->parameter_type() != type)
61 if (!v2s->affect_state(target))
66 gradv += v2s->apply_parametrization_jacobian(grad(),
x);
main class that contains the polyfem solver and all its state
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const
Eigen::VectorXd apply_parametrization_jacobian(ParameterType type, const legacy::State &target, const Eigen::VectorXd &x, const std::function< Eigen::VectorXd()> &grad) const
Compute parametrization jacobian for all var2sim matching parameter type and output to target state.
void update(const Eigen::VectorXd &x)
void compute_state_variable(ParameterType type, const legacy::State &target, const Eigen::VectorXd &x, Eigen::VectorXd &state_variable) const
std::vector< std::shared_ptr< VariableToSimulation > > data