11 using typename polysolve::nonlinear::Problem::Scalar;
12 using typename polysolve::nonlinear::Problem::THessian;
13 using typename polysolve::nonlinear::Problem::TVector;
22 AMIPSEnergy2D(
const std::vector<std::array<double, 6>>& cells,
const double weight = 1);
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;
36 bool is_step_valid(
const TVector& x0,
const TVector& x1)
override;
39 std::vector<std::array<double, 6>> m_cells;
47 using typename polysolve::nonlinear::Problem::Scalar;
48 using typename polysolve::nonlinear::Problem::THessian;
49 using typename polysolve::nonlinear::Problem::TVector;
58 AMIPSEnergy3D(
const std::vector<std::array<double, 12>>& cells,
const double weight = 1);
60 TVector initial_position()
const;
62 double value(
const TVector& x)
override;
63 void gradient(
const TVector& x, TVector& gradv)
override;
64 void hessian(
const TVector& x, THessian& hessian)
override
66 log_and_throw_error(
"Sparse functions do not exist, use dense solver");
68 void hessian(
const TVector& x, MatrixXd& hessian)
override;
70 void solution_changed(
const TVector& new_x)
override;
72 bool is_step_valid(
const TVector& x0,
const TVector& x1)
override;
75 std::vector<std::array<double, 12>> m_cells;