Hardening Soil (HS / HSsmall) — Theory & Implementation Notes
This document describes the Hardening Soil model implemented in material_hardening_soil_
(Fortran). It follows the same structure used for other constitutive models in this project and is written to match the driver’s data layout and sign conventions.
Contents
- Overview
- Notation and sign conventions
- Elastic law (stress-dependent moduli)
- Shear hardening (hyperbolic law)
- Dilatancy rule (triaxial states)
- Volumetric cap (compression)
- Rate formulation used by the integrators
- Numerical integration
- Modified-Euler (Heun) with error control
- Euler–Richardson with adaptive step size
- Numerical Jacobian
- Optional features
- HSsmall small-strain stiffness
- Minimum mean effective stress
- Material parameters (order in input)
- Driver options (
opt_props
) - Validation figure (trained triaxial test)
Overview
The Hardening Soil model is a frictional plasticity model with: - stress-dependent elastic stiffnesses, - a hyperbolic shear hardening law that saturates at a fraction \(R_f\) of the Mohr–Coulomb strength, - a triaxial stress-dilatancy rule (mobilized dilatancy), - an optional volumetric cap in compression, - an optional HSsmall shear-modulus reduction at small strains.
The implementation targets general 3D stress states. The rate routine computes only rates (no state mutation). The driver advances stress and internal variables with explicit schemes and, if requested, assembles a numerical tangent by finite differences.
Notation and sign conventions
- Internal Cauchy stress tensor \(\mathbf{T}\) is compression negative (codebase convention).
- Mean effective stress \(p\) and deviatoric stress \(q\) are handled and stored as positive magnitudes: [ p=\frac{1}{3}\,\mathrm{tr}(-\mathbf{T})\ge 0,\qquad \mathbf{S}=\mathbf{T}+\tfrac{1}{3}\mathrm{tr}(\mathbf{T})\,\boldsymbol{\delta},\qquad q=\sqrt{\tfrac{3}{2}\,\mathbf{S}:\mathbf{S}}\ge 0 . ]
- Principal effective stresses used in the dilatancy rule are compression-positive magnitudes: [ \sigma_1\ge\sigma_2\ge\sigma_3>0,\quad \sigma_i = -\lambda_i(\mathbf{T}) . ]
- The Lode angle \(\theta\) is computed for diagnostics only.
- Plastic volumetric strain rate \(\dot\varepsilon_v^p\) is positive in compression.
Elastic law (stress-dependent moduli)
Reference moduli at \(p_{\text{ref}}\) are scaled by the current confining magnitude \(\sigma_3\) (triaxial-compression surrogate):
Un/reloading moduli:
Isotropic linear elasticity (with optionally reduced \(G\); see HSsmall):
Shear hardening (hyperbolic law)
Mohr–Coulomb TXC failure surrogate:
Hyperbola for mobilized shear strength versus accumulated plastic shear strain \(\varepsilon_q^p\):
Perzyna-type plastic shear rate (drives to the hyperbola):
[ \dot{\varepsilon}_q^p = \frac{g_s\,\langle q-q_h\rangle}{\partial q_h/\partial \varepsilon_q^p}, \qquad \frac{\partial q_h}{\partial \varepsilon_q^p} = \frac{q_a2/E_i}{\left(\varepsilon_qp+q_a/E_i\right)^2}, ] with \(g_s>0\) a dimensionless gain and \(\langle\cdot\rangle\) the Macauley bracket.
Dilatancy rule (triaxial states)
Plastic volumetric rate is tied to the plastic shear rate through the mobilized dilatancy:
Mobilized friction (Rowe form) from principal magnitudes:
Critical-state friction associated with input \((\varphi,\psi)\):
Mobilized dilatancy rule:
- If \(\sin\varphi_m < \tfrac{3}{4}\sin\varphi\): \(\psi_m=0\).
- Else if \(\psi>0\): [ \sin\psi_m = \max!\left( \frac{\sin\varphi_m-\sin\varphi_{\text{cv}}}{1-\sin\varphi_m\,\sin\varphi_{\text{cv}}}, \,0\right). ]
- Else (\(\psi\le 0\)): \(\psi_m=\psi\).
All sines are clamped to \((-1,1)\) for robustness.
Volumetric cap (compression)
A simple cap regularizes the compressive volumetric response:
If \(F_c>0\), activate cap plasticity with hardening:
Here \(H_c = E_{\text{oed}}\) (clipped positive), \(K\) is the current bulk modulus, and \(g_c>0\) a dimensionless gain. The sign yields \(\dot{\varepsilon}_{v,\text{cap}}^p>0\) in compression when \(\mathrm{tr}\,\dot{\boldsymbol{\varepsilon}}<0\).
Rate formulation used by the integrators
Decompose the plastic part into deviatoric and volumetric contributions:
-
Deviatoric plastic flow aligned with the current deviatoric stress: [ \dot{\boldsymbol{\varepsilon}}_s^p = \dot{\varepsilon}_q^p\,\widehat{\mathbf{S}}, \qquad \widehat{\mathbf{S}} = \begin{cases} \mathbf{S}/|\mathbf{S}|, & |\mathbf{S}|>0,\[2pt] \mathbf{0}, & \text{otherwise.} \end{cases} ]
-
Volumetric plastic flow: [ \dot{\boldsymbol{\varepsilon}}vp=\tfrac{1}{3}\,\dot{\varepsilon}_vp\,\boldsymbol{\delta}, \qquad \dot{\varepsilon}_v^p = \dot{\varepsilon}^p + \dot{\varepsilon}_{v,\text{cap}}^p . ]}
-
Elastic stress rate: [ \dot{\mathbf{T}} = \mathsf{E}^{\text{el}}:\Big( \dot{\boldsymbol{\varepsilon}}
- \dot{\boldsymbol{\varepsilon}}_s^p
- \dot{\boldsymbol{\varepsilon}}_v^p \Big). ]
The rate routine returns \(\dot{\mathbf{T}}\), \(\dot{\varepsilon}_q^p\), \(\dot{\varepsilon}_v^p\), and \(\dot{p}_c\).
Numerical integration
Modified-Euler (Heun) with error control
Per sub-step \(h\):
- Evaluate rates at the start; predict stress.
- Re-evaluate at the predicted state; apply Heun corrector for stress.
- Update hardening variables with trapezoid rule.
- Estimate stress error from start vs. end rates; accept or shrink \(h\).
- Optionally assemble numerical tangent over the accepted sub-step.
Euler–Richardson with adaptive step size
Per sub-step \(h\):
- Forward Euler trial from start rates.
- Mid-point evaluation; Richardson extrapolation for stress.
- Local stress error from trial vs. extrapolated stress; accept or shrink.
- Trapezoid update of hardening variables.
- Optionally assemble numerical tangent at the accepted end state.
Numerical Jacobian
num_diff = 0
: elastic stiffness only (HSsmall aware).num_diff = 1
: forward differences \(O(h)\).num_diff = 2
: central differences \(O(h^2)\).
A small diagonal “floor” is added to avoid singular tangents near stress-free states.
Optional features
HSsmall small-strain stiffness
If \(G_0^{\text{ref}}>0\) and \(\gamma_{0.7}>0\), the shear modulus is reduced from \(G_0\) to \(G_{\text{ur}}\) using a hyperbolic decay versus an equivalent shear strain \(\gamma_{\text{eq}}\):
Minimum mean effective stress
After each accepted sub-step a projection enforces \(p\ge p_{\min}\):
This isotropic shift preserves the deviatoric stress.
Material parameters (order in input)
Exactly the order expected by the implementation:
Idx | Symbol | Name | Unit | Notes |
---|---|---|---|---|
1 | \(\varphi\) | friction angle | deg | converted to rad |
2 | \(\psi\) | dilatancy angle | deg | converted to rad |
3 | \(c\) | effective cohesion | kPa | \(c_{\text{eff}}\) |
4 | \(E_{50}^{\text{ref}}\) | secant modulus at 50% strength | kPa | at \(p_{\text{ref}}\) |
5 | \(E_{\text{oed}}^{\text{ref}}\) | oedometer modulus | kPa | at \(p_{\text{ref}}\) |
6 | \(E_{\text{ur}}^{\text{ref}}\) | un/reloading modulus | kPa | at \(p_{\text{ref}}\) |
7 | \(m\) | stress dependency exponent | – | HS exponent |
8 | \(\nu_{\text{ur}}\) | Poisson ratio (un/reload) | – | \(0<\nu_{\text{ur}}<0.5\) |
9 | \(G_0^{\text{ref}}\) | small-strain shear modulus | kPa | HSsmall (optional) |
10 | \(\gamma_{0.7}\) | shear strain at \(G/G_0=0.7\) | – | HSsmall (optional) |
11 | \(p_{\text{ref}}\) | reference pressure | kPa | default \(100\) |
12 | \(K_w\) | bulk modulus of water | kPa | \(0 \Rightarrow\) drained |
Derived helpers kept by the code:
Driver options (opt_props
)
These map to lib%material(i)%opt_props
:
Idx | Meaning | Typical value |
---|---|---|
1 | Integration scheme (1 =Modified-Euler, 2 =Euler–Richardson) |
1.0 |
2 | Stress error tolerance (dimensionless) | 1.0e-4 |
3 | Cap error tolerance (kept for parity) | 1.0 |
4 | Tangent assembly (1 =end of sub-inc, 2 =within sub-inc) |
1.0 |
5 | Numerical differentiation order (1 \(O(h)\), 2 \(O(h^2)\)) |
2.0 |
6 | Perturbation factor for finite differences | 1.0e-6 |
7 | Minimum mean effective stress \(p_{\min}\) (positive) | 1.0e-2 |
8 | Allow global cutback (1 =yes, 0 =no) |
0 |
9 | Minimum sub-increment size fraction of \(\Delta t\) | 1.0e-5 |