3#include <unordered_map>
9 const std::vector<mesh::LocalBoundary> &local_pressure_boundary,
10 const std::unordered_map<
int, std::vector<mesh::LocalBoundary>> &local_pressure_cavity,
11 const std::vector<int> &dirichlet_nodes,
14 const bool is_time_dependent)
16 local_pressure_boundary_(local_pressure_boundary),
17 local_pressure_cavity_(local_pressure_cavity),
18 dirichlet_nodes_(dirichlet_nodes),
19 n_boundary_samples_(n_boundary_samples),
20 pressure_assembler_(pressure_assembler)
29 return -1 * (pressure_energy + pressure_cavity_energy);
35 Eigen::VectorXd pressure_gradv, pressure_cavity_gradv;
38 gradv = pressure_gradv + pressure_cavity_gradv;
47 hessian = pressure_hessian + pressure_cavity_hessian;
void compute_cavity_energy_hess(const Eigen::MatrixXd &displacement, const std::unordered_map< int, std::vector< mesh::LocalBoundary > > &local_pressure_cavity, const std::vector< int > &dirichlet_nodes, const QuadratureOrders &resolution, const double t, const bool project_to_psd, StiffnessMatrix &hess) const
double compute_energy(const Eigen::MatrixXd &displacement, const std::vector< mesh::LocalBoundary > &local_pressure_boundary, const QuadratureOrders &resolution, const double t) const
void compute_energy_hess(const Eigen::MatrixXd &displacement, const std::vector< mesh::LocalBoundary > &local_pressure_boundary, const std::vector< int > &dirichlet_nodes, const QuadratureOrders &resolution, const double t, const bool project_to_psd, StiffnessMatrix &hess) const
void compute_cavity_energy_grad(const Eigen::MatrixXd &displacement, const std::unordered_map< int, std::vector< mesh::LocalBoundary > > &local_pressure_cavity, const std::vector< int > &dirichlet_nodes, const QuadratureOrders &resolution, const double t, Eigen::VectorXd &grad) const
double compute_cavity_energy(const Eigen::MatrixXd &displacement, const std::unordered_map< int, std::vector< mesh::LocalBoundary > > &local_pressure_cavity, const QuadratureOrders &resolution, const double t) const
void compute_energy_grad(const Eigen::MatrixXd &displacement, const std::vector< mesh::LocalBoundary > &local_pressure_boundary, const std::vector< int > &dirichlet_nodes, const QuadratureOrders &resolution, const double t, Eigen::VectorXd &grad) const
std::array< int, 2 > QuadratureOrders
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix