21 std::string
name()
const override {
return "MooneyRivlin"; }
22 std::map<std::string, ParamFunc>
parameters()
const override;
31 const double c1 =
c1_(p, t, el_id);
32 const double c2 =
c2_(p, t, el_id);
33 const double k =
k_(p, t, el_id);
36 const T log_J = log(J);
38 const auto F_tilde = def_grad / pow(J, 1.0 /
size());
39 const auto C_tilde = F_tilde * F_tilde.transpose();
43 const T
val =
c1 * (I1_tilde -
size()) +
c2 * (I2_tilde -
size()) +
k / 2 * (log_J * log_J);
T elastic_energy(const RowVectorNd &p, const double t, const int el_id, const DefGradMatrix< T > &def_grad) const
const GenericMatParam & k() const
const GenericMatParam & c1() const
std::string name() const override
void add_multimaterial(const int index, const json ¶ms, const Units &units) override
std::map< std::string, ParamFunc > parameters() const override
const GenericMatParam & c2() const
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > DefGradMatrix
T determinant(const Eigen::Matrix< T, rows, cols, option, maxRow, maxCol > &mat)
AutoDiffGradMat::Scalar second_invariant(const AutoDiffGradMat &B)
AutoDiffGradMat::Scalar first_invariant(const AutoDiffGradMat &B)
Eigen::Matrix< double, 1, Eigen::Dynamic, Eigen::RowMajor, 1, 3 > RowVectorNd