11 using typename polysolve::nonlinear::Problem::Scalar;
12 using typename polysolve::nonlinear::Problem::THessian;
13 using typename polysolve::nonlinear::Problem::TVector;
24 TVector initial_position()
const;
26 double value(
const TVector& x)
override;
27 void gradient(
const TVector& x, TVector& gradv)
override;
28 void hessian(
const TVector& x, THessian& hessian)
override
30 log_and_throw_error(
"Sparse functions do not exist, use dense solver");
32 void hessian(
const TVector& x, MatrixXd& hessian)
override;
34 void solution_changed(
const TVector& new_x)
override {}
37 std::vector<std::array<double, 4>> m_cells;
43 using typename polysolve::nonlinear::Problem::Scalar;
44 using typename polysolve::nonlinear::Problem::THessian;
45 using typename polysolve::nonlinear::Problem::TVector;
52 SmoothingEnergy2D(
const std::array<Vector2d, 3>& pts,
const double& M,
const Vector3d& L_w);
54 TVector initial_position()
const;
56 double value(
const TVector& x)
override;
57 void gradient(
const TVector& x, TVector& gradv)
override;
58 void hessian(
const TVector& x, THessian& hessian)
override
60 log_and_throw_error(
"Sparse functions do not exist, use dense solver");
62 void hessian(
const TVector& x, MatrixXd& hessian)
override;
64 void solution_changed(
const TVector& new_x)
override {}
67 local_mass_and_stiffness(
const std::array<Vector2d, 3>& pts,
double& M, Vector3d& L_w);
70 uniform_mass_and_stiffness(
const std::array<Vector2d, 3>& pts,
double& M, Vector3d& L_w);