PolyFEM
Loading...
Searching...
No Matches
L2Projection.hpp
Go to the documentation of this file.
1#pragma once
2
6
7#include <polysolve/nonlinear/Solver.hpp>
8
9namespace polyfem::mesh
10{
11 Eigen::MatrixXd unconstrained_L2_projection(
12 const Eigen::SparseMatrix<double> &M,
13 const Eigen::SparseMatrix<double> &A,
14 const Eigen::Ref<const Eigen::MatrixXd> &y);
15
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);
22
23 Eigen::VectorXd constrained_L2_projection(
24 // Nonlinear solver
25 std::shared_ptr<polysolve::nonlinear::Solver> nl_solver,
26 // L2 projection form
27 const Eigen::SparseMatrix<double> &M,
28 const Eigen::SparseMatrix<double> &A,
29 const Eigen::VectorXd &y,
30 // Inversion-free form
31 const Eigen::MatrixXd &rest_positions,
32 const Eigen::MatrixXi &elements,
33 const int dim,
34 // Contact form
35 const ipc::CollisionMesh &collision_mesh,
36 const double dhat,
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,
42 // Augmented lagrangian form
43 const std::vector<int> &boundary_nodes,
44 const size_t obstacle_ndof,
45 const Eigen::VectorXd &target_x,
46 // Initial guess
47 const Eigen::VectorXd &x0);
48
49} // namespace polyfem::mesh
int y
int x
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)