22 std::string
name()
const override {
return "MooneyRivlin3Param"; }
23 std::map<std::string, ParamFunc>
parameters()
const override;
32 const double c1 =
c1_(p, t, el_id);
33 const double c2 =
c2_(p, t, el_id);
34 const double c3 =
c3_(p, t, el_id);
35 const double d1 =
d1_(p, t, el_id);
38 const auto right_cauchy_green = def_grad * def_grad.transpose();
40 const auto powJ = pow(J, -2. / 3);
41 const auto TrB = right_cauchy_green.trace();
42 const auto I1_tilde = powJ * (TrB + (3 -
size())) - 3;
43 const auto second_invariant_val = (
size() == 3) ? 0.5 * (TrB * TrB - (right_cauchy_green * right_cauchy_green).trace()) : TrB + J * J;
44 const auto I2_tilde = (powJ * powJ) * second_invariant_val - 3;
46 const T
val =
c1 * I1_tilde + (
c2 +
c3 * I1_tilde) * I2_tilde +
d1 * (J - 1) * (J - 1);
T elastic_energy(const RowVectorNd &p, const double t, const int el_id, const DefGradMatrix< T > &def_grad) const
std::map< std::string, ParamFunc > parameters() const override
void add_multimaterial(const int index, const json ¶ms, const Units &units) override
const GenericMatParam & c3() const
std::string name() const override
const GenericMatParam & d1() const
const GenericMatParam & c1() const
const GenericMatParam & c2() const
MooneyRivlin3ParamElasticity()
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > DefGradMatrix
T determinant(const Eigen::Matrix< T, rows, cols, option, maxRow, maxCol > &mat)
Eigen::Matrix< double, 1, Eigen::Dynamic, Eigen::RowMajor, 1, 3 > RowVectorNd