version 0.4.1
finiteelements/mechanics/materials/hyperelastic/volumetric/interface.hh
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2021-2025 The Ikarus Developers mueller@ibb.uni-stuttgart.de
2// SPDX-License-Identifier: LGPL-3.0-or-later
3
10#pragma once
11
15
16namespace Ikarus::Materials {
17
30template <Concepts::VolumetricFunction VF>
32{
34 using MaterialParameter = double;
35
36 [[nodiscard]] constexpr static std::string name() noexcept { return "Volumetric function: " + VF::name(); }
37
48 template <typename VFF>
49 Volumetric(MaterialParameter matPar, VFF&& vf)
50 : matPar_{matPar},
51 volumetricFunction_{std::forward<VFF>(vf)} {}
52
56 const MaterialParameter materialParameter() const { return matPar_; }
57
65 template <typename ST>
66 ST storedEnergy(const ST& J) const {
67 return matPar_ * volumetricFunction_.storedEnergyImpl(J);
68 };
69
77 template <typename ST>
78 ST firstDerivative(const ST& J) const {
79 return matPar_ * volumetricFunction_.firstDerivativeImpl(J);
80 }
81
89 template <typename ST>
90 ST secondDerivative(const ST& J) const {
91 return matPar_ * volumetricFunction_.secondDerivativeImpl(J);
92 };
93
94private:
95 MaterialParameter matPar_;
96 VF volumetricFunction_;
97};
98
99#ifndef DOXYGEN
100template <typename VF>
101Volumetric(double, VF&&) -> Volumetric<std::remove_cvref_t<VF>>;
102#endif
103
104} // namespace Ikarus::Materials
Helper for the Eigen::Tensor types.
Material property functions and conversion utilities.
STL namespace.
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
ST firstDerivative(const ST &J) const
Computes the first derivatives of the energy of the volumetric function w.r.t .
Definition: finiteelements/mechanics/materials/hyperelastic/volumetric/interface.hh:78
Volumetric(MaterialParameter matPar, VFF &&vf)
Construct a new volumetric part.
Definition: finiteelements/mechanics/materials/hyperelastic/volumetric/interface.hh:49
const MaterialParameter materialParameter() const
Returns the material parameters stored in the deviatoric part of the material.
Definition: finiteelements/mechanics/materials/hyperelastic/volumetric/interface.hh:56
VF VolumetricFunction
Definition: finiteelements/mechanics/materials/hyperelastic/volumetric/interface.hh:33
double MaterialParameter
Definition: finiteelements/mechanics/materials/hyperelastic/volumetric/interface.hh:34
ST secondDerivative(const ST &J) const
Computes the second derivatives of the energy of the volumetric function w.r.t .
Definition: finiteelements/mechanics/materials/hyperelastic/volumetric/interface.hh:90
ST storedEnergy(const ST &J) const
Computes stored energy of the volumetric function.
Definition: finiteelements/mechanics/materials/hyperelastic/volumetric/interface.hh:66
static constexpr std::string name() noexcept
Definition: finiteelements/mechanics/materials/hyperelastic/volumetric/interface.hh:36
Header file including concepts for hyperelastic material models.