PolyFEM
Loading...
Searching...
No Matches
PeriodicShapeVariableToSimulation.hpp
Go to the documentation of this file.
1#pragma once
2
5
6#include <Eigen/Core>
7
8#include <memory>
9#include <string>
10#include <vector>
11
12namespace polyfem::solver
13{
15 {
16 public:
17 using StatePtrs = std::vector<std::shared_ptr<legacy::State>>;
18 using DiffCachePtrs = std::vector<std::shared_ptr<DiffCache>>;
19
26 DiffCachePtrs diff_caches,
27 CompositeParametrization parametrizations);
28
29 std::string name() const override;
30 ParameterType parameter_type() const override;
31 bool affect_state(const legacy::State &target) const override;
32 void update(const Eigen::VectorXd &x) override;
33 void update_state_variables(const Eigen::VectorXd &x, Eigen::VectorXd &state_variables) const override;
34 Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override;
35 int inverse_dof() const override;
36 Eigen::VectorXd inverse_eval() const override;
37 Eigen::VectorXd apply_parametrization_jacobian(const Eigen::VectorXd &term, const Eigen::VectorXd &x) const override;
38
39 private:
40 int dim_;
45
46 // Helper to map a cell to periodic structure.
47 std::unique_ptr<PeriodicMeshToMesh> periodic_mesh_map_;
48
49 int para_out_dof() const;
50 };
51
52} // namespace polyfem::solver
int x
main class that contains the polyfem solver and all its state
Definition State.hpp:114
void update(const Eigen::VectorXd &x) override
Update forward simulation states from optimization variables.
Eigen::VectorXd compute_adjoint_term(const Eigen::VectorXd &x) const override
Compute adjoint contribution of objective gradient.
void update_state_variables(const Eigen::VectorXd &x, Eigen::VectorXd &state_variables) const override
Update state variables from optimization variables.
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.
int inverse_dof() const override
Compute optimization variables dof.
bool affect_state(const legacy::State &target) const override
Return true if current var2sim maps to target state.
Eigen::VectorXd inverse_eval() const override
Compute optimization variables from forward simulation legacy::State.
std::vector< std::shared_ptr< legacy::State > > StatePtrs
Maps optimization variables to forward simulation legacy::State variables.