27 template <
typename ST>
32 template <
typename ST>
37 template <
typename ST>
42 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "None"; }
53 template <
typename ST>
55 return 0.5 * pow(J - 1, 2);
58 template <
typename ST>
63 template <
typename ST>
68 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 1"; }
79 template <
typename ST>
81 return 0.25 * (pow(J - 1, 2) + pow(log(J), 2));
84 template <
typename ST>
86 return 0.5 * (J - 1 + 1 / J * log(J));
89 template <
typename ST>
92 return 1 / (2 * Jsq) * (1 + Jsq - log(J));
95 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 2"; }
106 template <
typename ST>
108 return 0.5 * pow(log(J), 2);
111 template <
typename ST>
113 return 1 / J * log(J);
116 template <
typename ST>
118 return 1 / pow(J, 2) * (1 - log(J));
121 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 3"; }
132 template <
typename ST>
134 return (1 / pow(beta_, 2)) * ((1 / pow(J, beta_)) - 1 + beta_ * log(J));
137 template <
typename ST>
139 return (1 / beta_) * ((1 / J) - (1 / (pow(J, 1 + beta_))));
142 template <
typename ST>
144 return (1 / beta_) * ((1 / pow(J, 2 + beta_)) * (1 + beta_ - pow(J, beta_)));
150 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 4"; }
152 double beta()
const {
return beta_; }
166 template <
typename ST>
168 return 0.25 * (pow(J, 2) - 1 - 2 * log(J));
171 template <
typename ST>
173 return 0.5 * (J - (1 / J));
176 template <
typename ST>
178 return 0.5 * (1 + (1 / pow(J, 2)));
181 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 5"; }
192 template <
typename ST>
194 return J - log(J) - 1;
197 template <
typename ST>
202 template <
typename ST>
204 return 1 / pow(J, 2);
207 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 6"; }
218 template <
typename ST>
220 return pow(J, beta_) * (beta_ * log(J) - 1) + 1;
223 template <
typename ST>
225 return pow(beta_, 2) * (1.0 / pow(J, 1.0 - beta_)) * log(J);
228 template <
typename ST>
230 return pow(beta_, 2) * pow(J, beta_ - 2.0) * (1 + (beta_ - 1) * log(J));
236 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 7"; }
238 double beta()
const {
return beta_; }
252 template <
typename ST>
254 return J * log(J) - J + 1;
257 template <
typename ST>
262 template <
typename ST>
267 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 8"; }
278 template <
typename ST>
280 return (1.0 / 32.0) * pow(pow(J, 2) - pow(J, -2), 2);
283 template <
typename ST>
285 return (1.0 / 8.0) * (pow(J, 3) - (1.0 / pow(J, 5)));
288 template <
typename ST>
290 return (1.0 / 8.0) * (5.0 * pow(J, -6) + (3.0 * pow(J, 2)));
293 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 9"; }
305 template <
typename ST>
307 return (J / beta_) * (1 - (pow(J, -beta_) / (1 - beta_))) + (1.0 / (beta_ - 1));
310 template <
typename ST>
312 return (1 / beta_) * (1 - pow(J, -beta_));
315 template <
typename ST>
317 return pow(J, -1 - beta_);
323 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 10"; }
325 double beta()
const {
return beta_; }
339 template <
typename ST>
341 return (1.0 / 50.0) * (pow(J, 5.0) + pow(J, -5.0) - 2.0);
344 template <
typename ST>
346 return (1.0 / 10.0) * (pow(J, 4.0) - pow(J, -6.0));
349 template <
typename ST>
351 return (1.0 / 10.0) * (4 * pow(J, 3.0) + 6 * pow(J, -7.0));
354 [[nodiscard]]
constexpr static std::string
name() noexcept {
return "Function 11"; }
Helper for the Eigen::Tensor types.
Material property functions and conversion utilities.
Definition: arrudaboyce.hh:27
Interface for the volumetric part of a hyperelastic material. Has to be parametrized with a volumetri...
Definition: finiteelements/mechanics/materials/hyperelastic/volumetric/interface.hh:32
Default volumetric function.
Definition: volumetricfunctions.hh:26
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:42
ST firstDerivativeImpl(const ST &) const
Definition: volumetricfunctions.hh:33
ST secondDerivativeImpl(const ST &) const
Definition: volumetricfunctions.hh:38
ST storedEnergyImpl(const ST &) const
Definition: volumetricfunctions.hh:28
Volumetric function No. 1 found in Tab. 4.
Definition: volumetricfunctions.hh:52
ST secondDerivativeImpl(const ST &) const
Definition: volumetricfunctions.hh:64
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:54
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:68
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:59
Volumetric function No. 2 found in Tab. 4.
Definition: volumetricfunctions.hh:78
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:80
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:85
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:95
ST secondDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:90
Volumetric function No. 3 found in Tab. 4.
Definition: volumetricfunctions.hh:105
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:112
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:121
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:107
ST secondDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:117
Volumetric function No. 4 found in Tab. 4.
Definition: volumetricfunctions.hh:131
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:150
VF4(double beta)
Definition: volumetricfunctions.hh:147
double beta() const
Definition: volumetricfunctions.hh:152
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:133
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:138
ST secondDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:143
Volumetric function No. 5 found in Tab. 4.
Definition: volumetricfunctions.hh:165
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:172
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:167
ST secondDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:177
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:181
Volumetric function No. 6 found in Tab. 4.
Definition: volumetricfunctions.hh:191
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:207
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:193
ST secondDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:203
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:198
Volumetric function No. 7 found in Tab. 4.
Definition: volumetricfunctions.hh:217
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:219
VF7(double beta)
Definition: volumetricfunctions.hh:233
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:224
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:236
double beta() const
Definition: volumetricfunctions.hh:238
ST secondDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:229
Volumetric function No. 8 found in Tab. 4.
Definition: volumetricfunctions.hh:251
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:258
ST secondDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:263
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:253
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:267
Volumetric function No. 9 found in Tab. 4.
Definition: volumetricfunctions.hh:277
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:279
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:284
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:293
ST secondDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:289
Volumetric function No. 10 found in Tab. 4.
Definition: volumetricfunctions.hh:304
double beta() const
Definition: volumetricfunctions.hh:325
ST secondDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:316
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:311
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:323
VF10(double beta)
Definition: volumetricfunctions.hh:320
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:306
Volumetric function No. 11 found in Tab. 4.
Definition: volumetricfunctions.hh:338
ST secondDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:350
ST firstDerivativeImpl(const ST &J) const
Definition: volumetricfunctions.hh:345
static constexpr std::string name() noexcept
Definition: volumetricfunctions.hh:354
ST storedEnergyImpl(const ST &J) const
Definition: volumetricfunctions.hh:340
Implementation of the volumetric part of a hyperelastic material.
Header file including concepts for hyperelastic material models.