10 const ipc::CollisionMesh &collision_mesh,
11 const std::shared_ptr<time_integrator::ImplicitTimeIntegrator> time_integrator,
14 const ipc::BroadPhaseMethod broad_phase_method,
16 const int n_lagging_iters)
17 : collision_mesh_(collision_mesh),
18 time_integrator_(time_integrator),
21 broad_phase_method_(broad_phase_method),
22 broad_phase_(
ipc::build_broad_phase(broad_phase_method)),
23 n_lagging_iters_(n_lagging_iters < 0 ? std::numeric_limits<int>::max() : n_lagging_iters),
24 normal_adhesion_form_(normal_adhesion_form),
25 tangential_adhesion_potential_(epsa)
31 const Eigen::MatrixXd &prev_solution,
32 const Eigen::MatrixXd &solution,
33 const Eigen::MatrixXd &adjoint,
34 const ipc::TangentialCollisions &tangential_constraints_set,
35 Eigen::VectorXd &term)
44 tangential_constraints_set,
49 ipc::TangentialPotential::DiffWRT::REST_POSITIONS);
87 ipc::PSDProjectionMethod psd_projection_method;
90 psd_projection_method = ipc::PSDProjectionMethod::CLAMP;
92 psd_projection_method = ipc::PSDProjectionMethod::NONE;
105 ipc::NormalCollisions collision_set;
#define POLYFEM_SCOPED_TIMER(...)
Eigen::MatrixXd unflatten(const Eigen::VectorXd &x, int dim)
Unflatten rowwises, so every dim elements in x become a row.
Eigen::SparseMatrix< double, Eigen::ColMajor > StiffnessMatrix