16 std::string
name()
const override {
return "VolumePenalty"; }
17 std::map<std::string, ParamFunc>
parameters()
const override;
26 const double k =
k_(p, t, el_id);
29 const T log_J = log(J);
31 const T
val = k / 2.0 * ((J * J - T(1)) / 2.0 - log_J);
36 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3>
gradient(
40 const Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3> &
F)
const override;
42 Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 9, 9>
hessian(
46 const Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3> &
F)
const override;
T elastic_energy(const RowVectorNd &p, const double t, const int el_id, const DefGradMatrix< T > &def_grad) const
void add_multimaterial(const int index, const json ¶ms, const Units &units) override
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > gradient(const RowVectorNd &p, const double t, const int el_id, const Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > &F) const override
std::map< std::string, ParamFunc > parameters() const override
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 9, 9 > hessian(const RowVectorNd &p, const double t, const int el_id, const Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, 0, 3, 3 > &F) const override
std::string name() const override
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