16double newton_method_from_stack(
18 std::vector<std::array<double, 12>>& assembles,
19 std::function<Eigen::Vector3d(
const double t)> param,
20 std::function<
double(
const std::array<double, 12>&)> compute_energy,
21 std::function<
double(
const std::array<double, 12>&)> compute_jacobian,
22 std::function<
double(
const std::array<double, 12>&)> compute_hessian);
49Eigen::Vector3d newton_method_from_stack(
50 std::vector<std::array<double, 12>>& stack,
51 std::function<
double(
const std::array<double, 12>&)> energy,
52 std::function<
void(
const std::array<double, 12>&, Eigen::Vector3d&)> jacobian,
53 std::function<
void(
const std::array<double, 12>&, Eigen::Matrix3d&)> hessian);
55Eigen::Vector2d newton_method_from_stack(
56 std::vector<std::array<double, 6>>& stack,
57 std::function<
double(
const std::array<double, 6>&)> energy,
58 std::function<
void(
const std::array<double, 6>&, Eigen::Vector2d&)> jacobian,
59 std::function<
void(
const std::array<double, 6>&, Eigen::Matrix2d&)> hessian);
61Eigen::Vector3d gradient_descent_from_stack(
62 std::vector<std::array<double, 12>>& stack,
63 std::function<
double(
const std::array<double, 12>&)> energy,
64 std::function<
void(
const std::array<double, 12>&, Eigen::Vector3d&)> jacobian);
72std::array<size_t, 4> orient_preserve_tet_reorder(
const std::array<size_t, 4>& tetra,
size_t v0);
75Eigen::Vector3d try_project(
76 const Eigen::Vector3d& point,
77 const std::vector<std::array<double, 9>>& assembled_neighbor);