7#include <polysolve/nonlinear/Solver.hpp>
12 const Eigen::SparseMatrix<double> &M,
13 const Eigen::SparseMatrix<double> &A,
14 const Eigen::Ref<const Eigen::MatrixXd> &
y);
17 const Eigen::MatrixXd &M,
18 const Eigen::MatrixXd &A,
19 const Eigen::Ref<const Eigen::MatrixXd> &
y,
20 const std::vector<int> &boundary_nodes,
21 Eigen::Ref<Eigen::MatrixXd>
x);
25 std::shared_ptr<polysolve::nonlinear::Solver> nl_solver,
27 const Eigen::SparseMatrix<double> &M,
28 const Eigen::SparseMatrix<double> &A,
29 const Eigen::VectorXd &
y,
31 const Eigen::MatrixXd &rest_positions,
32 const Eigen::MatrixXi &elements,
35 const ipc::CollisionMesh &collision_mesh,
37 const double barrier_stiffness,
38 const bool use_convergent_formulation,
39 const ipc::BroadPhaseMethod broad_phase_method,
40 const double ccd_tolerance,
41 const int ccd_max_iterations,
43 const std::vector<int> &boundary_nodes,
44 const size_t obstacle_ndof,
45 const Eigen::VectorXd &target_x,
47 const Eigen::VectorXd &x0);
Eigen::MatrixXd unconstrained_L2_projection(const Eigen::SparseMatrix< double > &M, const Eigen::SparseMatrix< double > &A, const Eigen::Ref< const Eigen::MatrixXd > &y)
Eigen::VectorXd constrained_L2_projection(std::shared_ptr< polysolve::nonlinear::Solver > nl_solver, const Eigen::SparseMatrix< double > &M, const Eigen::SparseMatrix< double > &A, const Eigen::VectorXd &y, const Eigen::MatrixXd &rest_positions, const Eigen::MatrixXi &elements, const int dim, const ipc::CollisionMesh &collision_mesh, const double dhat, const double barrier_stiffness, const bool use_convergent_formulation, const ipc::BroadPhaseMethod broad_phase_method, const double ccd_tolerance, const int ccd_max_iterations, const std::vector< int > &boundary_nodes, const size_t obstacle_ndof, const Eigen::VectorXd &target_x, const Eigen::VectorXd &x0)
void reduced_L2_projection(const Eigen::MatrixXd &M, const Eigen::MatrixXd &A, const Eigen::Ref< const Eigen::MatrixXd > &y, const std::vector< int > &boundary_nodes, Eigen::Ref< Eigen::MatrixXd > x)