9#include <ipc/collision_mesh.hpp>
10#include <ipc/collisions/tangential/tangential_collisions.hpp>
11#include <ipc/potentials/tangential_adhesion_potential.hpp>
12#include <ipc/broad_phase/create_broad_phase.hpp>
16 class NormalAdhesionForm;
32 const ipc::CollisionMesh &collision_mesh,
33 const std::shared_ptr<time_integrator::ImplicitTimeIntegrator> time_integrator,
36 const ipc::BroadPhaseMethod broad_phase_method,
38 const int n_lagging_iters);
40 std::string
name()
const override {
return "tangential adhesion"; }
42 void force_shape_derivative(
const Eigen::MatrixXd &prev_solution,
const Eigen::MatrixXd &solution,
const Eigen::MatrixXd &adjoint,
const ipc::TangentialCollisions &tangential_constraints_set, Eigen::VectorXd &term);
67 void update_lagging(
const Eigen::VectorXd &
x,
const int iter_num)
override;
87 double mu()
const {
return mu_; }
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix