PolyFEM
Loading...
Searching...
No Matches
auto_mooney_rivlin_gradient_hessian.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Eigen/Dense>
4
5namespace polyfem
6{
7 namespace autogen
8 {
9 template <int dim>
10 void generate_gradient_templated(const double c1, const double c2, const double c3, const double d1, const Eigen::Matrix<double, dim, dim> &def_grad, Eigen::Matrix<double, dim, dim> &gradient) {}
11 template <>
12 void generate_gradient_templated(const double c1, const double c2, const double c3, const double d1, const Eigen::Matrix<double, 2, 2> &def_grad, Eigen::Matrix<double, 2, 2> &gradient);
13 template <>
14 void generate_gradient_templated(const double c1, const double c2, const double c3, const double d1, const Eigen::Matrix<double, 3, 3> &def_grad, Eigen::Matrix<double, 3, 3> &gradient);
15 template <int dim>
16 void generate_hessian_templated(const double c1, const double c2, const double c3, const double d1, const Eigen::Matrix<double, dim, dim> &def_grad, Eigen::Matrix<double, dim * dim, dim * dim> &hessian) {}
17 template <>
18 void generate_hessian_templated(const double c1, const double c2, const double c3, const double d1, const Eigen::Matrix<double, 2, 2> &def_grad, Eigen::Matrix<double, 4, 4> &hessian);
19 template <>
20 void generate_hessian_templated(const double c1, const double c2, const double c3, const double d1, const Eigen::Matrix<double, 3, 3> &def_grad, Eigen::Matrix<double, 9, 9> &hessian);
21 void generate_gradient(const double c1, const double c2, const double c3, const double d1, const Eigen::MatrixXd &def_grad, Eigen::MatrixXd &gradient);
22 void generate_hessian(const double c1, const double c2, const double c3, const double d1, const Eigen::MatrixXd &def_grad, Eigen::MatrixXd &hessian);
23 } // namespace autogen
24} // namespace polyfem
void generate_hessian(const double c1, const double c2, const double c3, const double d1, const Eigen::MatrixXd &def_grad, Eigen::MatrixXd &hessian)
void generate_gradient_templated(const double c1, const double c2, const double c3, const double d1, const Eigen::Matrix< double, 2, 2 > &def_grad, Eigen::Matrix< double, 2, 2 > &gradient)
void generate_gradient(const double c1, const double c2, const double c3, const double d1, const Eigen::MatrixXd &def_grad, Eigen::MatrixXd &gradient)
void generate_hessian_templated(const double c1, const double c2, const double c3, const double d1, const Eigen::Matrix< double, 2, 2 > &def_grad, Eigen::Matrix< double, 4, 4 > &hessian)