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& cp) 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.

Function documentation

Rodin::Solid::HolzapfelOgden::HolzapfelOgden(const Parameters& params) explicit

Constructs the law from a parameter object.

Parameters
params Material parameters configuring the law.

Rodin::Solid::HolzapfelOgden::HolzapfelOgden(Real mu1, Real mu2, Real C0, Real C1, Real C2, Real C3, Real kappa)

Constructs the law from scalar material parameters.

Parameters
mu1 Isochoric first-invariant coefficient.
mu2 Isochoric second-invariant coefficient.
C0 Exponential first-invariant scale.
C1 Exponential first-invariant stiffness.
C2 Fiber exponential scale.
C3 Fiber exponential stiffness.
kappa Volumetric penalty coefficient.

const Parameters& Rodin::Solid::HolzapfelOgden::getParameters() const

Returns the material parameters.

Returns The material parameters.

void Rodin::Solid::HolzapfelOgden::setCache(Cache& cache, const ConstitutivePoint& cp) const

Populates invariant caches at a constitutive point.

Parameters
cache Storage for the constitutive invariant cache.
cp Constitutive evaluation point.

Real Rodin::Solid::HolzapfelOgden::getStrainEnergyDensity(const Cache& cache, const ConstitutivePoint& cp) const

Returns the stored strain-energy density.

Parameters
cache Constitutive invariant cache populated by setCache().
cp Constitutive point required by the material-law interface; unused because the energy is obtained from the cache.
Returns The stored strain-energy density.

void Rodin::Solid::HolzapfelOgden::getFirstPiolaKirchhoffStress(Math::SpatialMatrix<Real>& P, const Cache& cache, const ConstitutivePoint& cp) const

Computes the first Piola-Kirchhoff stress.

Parameters
P Storage for the first Piola-Kirchhoff stress.
cache Constitutive invariant cache populated by setCache().
cp Constitutive evaluation point.

void Rodin::Solid::HolzapfelOgden::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.

Parameters
dP Storage for the resulting stress increment.
cache Constitutive invariant cache populated by setCache().
cp Constitutive evaluation point.
dF Increment of the deformation gradient.