PolyFEM
Loading...
Searching...
No Matches
ShapeVariableToSimulation.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <Eigen/Core>
6
7#include <string>
8
9namespace polyfem::solver
10{
16 {
17 public:
18 using VarFormPtrs = std::vector<std::shared_ptr<varform::DifferentiableVarForm>>;
19 using DiffCachePtrs = std::vector<std::shared_ptr<DiffCache>>;
20
29 DiffCachePtrs diff_caches,
30 CompositeParametrization parametrizations,
31 Eigen::VectorXi active_dimensions,
32 Eigen::VectorXi active_geom_nodes);
33
34 std::string name() const override;
35 ParameterType parameter_type() const override;
36 bool affects_varform(const varform::DifferentiableVarForm &target) const override;
37 void update(const Eigen::VectorXd &x) override;
38 void update_state_variables(const Eigen::VectorXd &x, Eigen::VectorXd &state_variables) const override;
39 Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override;
40 int inverse_dof() const override;
41 Eigen::VectorXd inverse_eval() const override;
42 Eigen::VectorXd apply_parametrization_jacobian(const Eigen::VectorXd &term, const Eigen::VectorXd &x) const override;
43 const Eigen::VectorXi &active_geometry_nodes() const { return active_geom_nodes_; }
44
45 private:
46 int dim_;
51 Eigen::VectorXi active_dimensions_;
52 Eigen::VectorXi active_geom_nodes_;
53
55 int para_out_dof() const;
56 };
57
58} // namespace polyfem::solver
int x
bool affects_varform(const varform::DifferentiableVarForm &target) const override
Return true if current var2sim maps to target varform.
void update_state_variables(const Eigen::VectorXd &x, Eigen::VectorXd &state_variables) const override
Update varform variables from optimization variables.
std::vector< std::shared_ptr< varform::DifferentiableVarForm > > VarFormPtrs
int inverse_dof() const override
Compute optimization variables dof.
std::vector< std::shared_ptr< DiffCache > > DiffCachePtrs
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
Compute adjoint contribution of objective gradient.
Eigen::VectorXd inverse_eval() const override
Compute optimization variables from forward simulation varform::DifferentiableVarForm.
int para_out_dof() const
Return variable dof after parametrization mapping.
Eigen::VectorXd apply_parametrization_jacobian(const Eigen::VectorXd &term, const Eigen::VectorXd &x) const override
Apply parametrization jacobian to compute the gradient w.r.t.
void update(const Eigen::VectorXd &x) override
Update forward simulation varforms from optimization variables.
Maps optimization variables to forward simulation varform::DifferentiableVarForm variables.
Optimization-facing interface implemented by differentiated VarForm adapters.