Skip to content

Barotropic Elasticity

The barotropic elasticity model is a linear isotropic (hypo)elastic model with a pressure-dependent Young’s modulus (barotropy) and an optional void-ratio dependent scaling (pyknotropy). The Poisson’s ratio is constant. No plasticity, hardening, or return mapping is involved; the stress update is performed in a single elastic step.


Contents


Overview

The model updates the Cauchy stress vector as

\[ \boldsymbol{\sigma}_{n+1} = \boldsymbol{\sigma}_n + \mathbf{D}^e(E,\nu) : \Delta \boldsymbol{\varepsilon}, \]

where the elastic stiffness \(\mathbf{D}^e\) is isotropic and defined by the current Young’s modulus \(E\) and Poisson’s ratio \(\nu\). The modulus is computed as

\[ E = E^{ref} f_p(p) f_e(e), \]

with

  • \(f_p(p)\): barotropy function (pressure dependence),
  • \(f_e(e)\): pyknotropy function (void-ratio dependence, optional).

The implementation returns the elastic Jacobian \(\partial \boldsymbol{\sigma}/\partial \boldsymbol{\varepsilon}\) built from the current \(E\) and \(\nu\).


Barotropic and Pyknotropic Stiffness Scaling

Barotropy function

The pressure-dependent scaling is

\[ f_p(p) = \left(\frac{p}{p^{ref}}\right)^n, \]

where

  • \(n\) is the barotropic exponent,
  • \(p^{ref}\) is a reference pressure (compression is positive).

In the implementation, \(p^{ref}\) is lower-bounded for robustness:

\[ p^{ref} \leftarrow \max(p^{ref}, 1). \]

Pyknotropy (void-ratio dependence)

If the void ratio is active (see activation criterion below), the model applies

\[ f_e(e) = \frac{1+e}{e}. \]

The void ratio is updated internally from the volumetric strain increment using

\[ e_{n+1} = e_n + (1+e_n)\,\Delta\varepsilon_v ~~~\text{and}~~~ \Delta\varepsilon_v = \Delta\varepsilon_{11}+\Delta\varepsilon_{22}+\Delta\varepsilon_{33}. \]

Pyknotropy is only applied if the stored void ratio is initialised and sufficiently large:

  • if \(e > 10^{-3}\), pyknotropy is active and \(e\) is updated,

  • otherwise, pyknotropy is deactivated, and the model uses

    \[ f_e = 1 ~~~;~~~ e = 0. \]

Practical implication

To use pyknotropy, initialise the void ratio at the start of the analysis. Otherwise, the model reduces to purely barotropic elasticity with \(f_e=1\).

Resulting Young’s modulus

The Young’s modulus used in the increment is

  • with active pyknotropy:

    \[ E = E^{ref}\left(\frac{p}{p^{ref}}\right)^n \frac{1+e_{n+1}}{e_{n+1}}, \]
  • without pyknotropy:

    \[ E = E^{ref}\left(\frac{p}{p^{ref}}\right)^n. \]

Here, \(p\) is evaluated from the stress at the beginning of the increment, while \(e_{n+1}\) is computed using the current strain increment.


Elastic Jacobian

With the updated \(E\) and constant \(\nu\), the isotropic elastic constants are

\[ \lambda = \frac{\nu E}{(1+\nu)(1-2\nu)} ~~~\text{and}~~~ G = \frac{E}{2(1+\nu)}. \]

Material Parameters

Index Symbol Unit Description
1 \(E^{ref}\) F/A Reference Young’s modulus.
2 \(\nu\) - Poisson’s ratio.
3 \(n\) - Barotropic exponent in \(f_p=(p/p^{ref})^n\).
4 \(p^{ref}\) F/A Reference pressure (internally enforced as \(p^{ref}\ge 1\)).

Internal State Variables (matvar)

The implementation uses the following state entries:

  1. matvar(1) — void ratio \(e\) (if \(\le 10^{-3}\), pyknotropy is deactivated)
  2. matvar(2) — barotropy factor \(f_p\)
  3. matvar(3) — pyknotropy factor \(f_e\)