Rodin::Solid::HolzapfelOgden class final

Compressible Holzapfel-Ogden law with one preferred direction.

The stored energy density is

\[ W = \mu_1(\bar I_1 - 3) + \mu_2(\bar I_2 - 3) + C_0 e^{C_1(\bar I_1 - 3)^2} + C_2 e^{C_3(\bar I_4 - 1)^2} + \kappa(J - 1 - \log J), \]

where $\bar I_1 = I_1 I_3^{-1/3}$ , $\bar I_2 = I_2 I_3^{-2/3}$ , $\bar I_4 = I_4 I_3^{-1/3}$ , and $I_3=J^2$ .

Base classes

template<class Derived>
class HyperElasticLaw<HolzapfelOgden>
CRTP base class for hyperelastic constitutive laws.

Public types

struct Cache
Cached invariant values and fiber direction.
struct Parameters
Material parameters for the Holzapfel-Ogden law.

Constructors, destructors, conversion operators

HolzapfelOgden(const Parameters& params) explicit
Constructs the law from a parameter object.
HolzapfelOgden(Real mu1, Real mu2, Real C0, Real C1, Real C2, Real C3, Real kappa)
Constructs the law from scalar material parameters.

Public functions

auto getParameters() const -> const Parameters&
Returns the material parameters.
void setCache(Cache& cache, const ConstitutivePoint& cp) const
Populates invariant caches at a constitutive point.
auto getStrainEnergyDensity(const Cache& cache, const ConstitutivePoint&) const -> Real
Returns the stored strain-energy density.
void getFirstPiolaKirchhoffStress(Math::SpatialMatrix<Real>& P, const Cache& cache, const ConstitutivePoint& cp) const
Computes the first Piola-Kirchhoff stress.
void getMaterialTangent(Math::SpatialMatrix<Real>& dP, const Cache& cache, const ConstitutivePoint& cp, const Math::SpatialMatrix<Real>& dF) const
Computes the material tangent action by directional differencing.