28 std::string
name()
const override {
return "HGODispersion"; }
29 std::map<std::string, ParamFunc>
parameters()
const override;
38 const double k1 =
k1_(p, t, el_id);
39 const double k2 =
k2_(p, t, el_id);
40 const double kappa =
kappa_(p, t, el_id);
46 const double d =
static_cast<double>(this->
size());
47 const T i1 =
I1(def_grad);
48 const T i4 =
I4(p, t, el_id, def_grad);
49 const T E4 = kappa * i1 + (1.0 - d * kappa) * i4 - 1.0;
55 const T chi = 1.0 / (1.0 + exp(-
k_chi_ * E4));
57 return (k1 / (2.0 * k2)) * chi * (exp(k2 * E4 * E4) - 1.0);
66 for (
int i = 0; i < def_grad.rows(); ++i)
67 for (
int j = 0; j < def_grad.cols(); ++j)
68 res += def_grad(i, j) * def_grad(i, j);
82 return this->
I4Bar_generic(p, t, el_id, def_grad,
true,
false);
T I4Bar_generic(const RowVectorNd &p, const double t, const int el_id, const DefGradMatrix< T > &def_grad, const bool normalize, const bool isocoric) const
T I4(const RowVectorNd &p, const double t, const int el_id, const DefGradMatrix< T > &def_grad) const
std::map< std::string, ParamFunc > parameters() const override
T elastic_energy(const RowVectorNd &p, const double t, const int el_id, const DefGradMatrix< T > &def_grad) const
T I1(const DefGradMatrix< T > &def_grad) const
std::string name() const override
void add_multimaterial(const int index, const json ¶ms, const Units &units, const std::string &root_path) override
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > DefGradMatrix
Eigen::Matrix< double, 1, Eigen::Dynamic, Eigen::RowMajor, 1, 3 > RowVectorNd