Nonlinear Soil Models

Soil exhibits nonlinear stress-strain behavior under dynamic loading, with stiffness decreasing and damping increasing as shear strain increases. PyStrata implements several empirical models for capturing this behavior.

Equivalent Linear Approach

The equivalent linear method approximates nonlinear soil response by using strain-compatible linear properties. The effective shear modulus and damping ratio are determined iteratively:

\[G_{eff} = G_{max} \cdot G/G_{max}(\gamma_{eff})\]
\[\xi_{eff} = \xi(\gamma_{eff})\]

where \(\gamma_{eff}\) is the effective shear strain, typically taken as 65% of the maximum strain.

Empirical Models

Published Models

These models are published with fixed values:
  • Vucetic & Dobry (91), PI=0

  • Vucetic & Dobry (91), PI=15

  • Vucetic & Dobry (91), PI=30

  • Vucetic & Dobry (91), PI=50

  • Vucetic & Dobry (91), PI=100

  • Vucetic & Dobry (91), PI=200

  • EPRI (93), PI=10

  • EPRI (93), PI=30

  • EPRI (93), PI=50

  • EPRI (93), PI=70

  • EPRI (93), 0-20 ft

  • EPRI (93), 20-50 ft

  • EPRI (93), 50-120 ft

  • EPRI (93), 120-250 ft

  • EPRI (93), 250-500 ft

  • EPRI (93), 500-1000 ft

  • GEI (83), 0-50 ft

  • GEI (83), 50-100 ft

  • GEI (83), 100-250 ft

  • GEI (83), 250-500 ft

  • GEI (83), >500 ft

  • GeoMatrix (1990), 0-50 ft

  • GeoMatrix (1990), 50-150 ft

  • GeoMatrix (1990), >150 ft

  • GeoMatrix (1990), 150-300 ft

  • GeoMatrix (1990), >300 ft

  • Idriss (1990), Clay

  • Idriss (1990), Sand

  • Imperial Valley Soils, 0-300 ft

  • Imperial Valley Soils, >300 ft

  • Iwasaki, 0.25 atm

  • Iwasaki, 1.0 atm

  • Peninsular Range, Cohesionless 0-50 ft

  • Peninsular Range, Cohesionless 50-500 ft

  • Seed & Idriss, Sand Mean

  • Seed & Idriss, Sand Upper

  • Seed & Idriss, Sand Lower

Darendeli (2001) Model

The Darendeli model provides normalized modulus reduction and damping curves:

\[\frac{G}{G_{max}} = \frac{1}{1 + (\gamma/\gamma_r)^a}\]
\[\xi = \xi_{min} + \frac{\xi_{max} - \xi_{min}}{1 + (\gamma_r/\gamma)^b}\]

Parameters depend on: - Plasticity index (PI) - Confining stress (σ’) - Over-consolidation ratio (OCR) - Number of loading cycles

Menq (2003) Model

The Menq model provides modulus reduction and damping curves for gravelly soils using a modified hyperbolic formulation:

\[\gamma_r = \frac{0.12 \, C_u^{-0.6} \, (\sigma_m'/p_a)^{0.5 \, C_u^{-0.15}}}{100}\]
\[a = 0.86 + 0.1 \log_{10}(\sigma_m'/p_a)\]

Parameters depend on: - Uniformity coefficient (\(C_u\)) - Mean grain diameter (\(D_{50}\)) - Mean effective stress (\(\sigma_m'\)) - Number of loading cycles

Wang and Stokoe (2022) Model

The Wang and Stokoe model uses a two-parameter modified hyperbolic form with hierarchical levels of accuracy depending on available input data:

\[\frac{G}{G_{max}} = \frac{1}{\left(1 + \left(\gamma/\gamma_{mr}\right)^a\right)^b}\]

Three soil group classifications are supported: - Clean sand and gravel (FC ≤ 12%) - Nonplastic silty sand (FC > 12%, nonplastic) - Clayey soil (FC > 12%, plastic)

Parameters depend on: - Mean effective stress (\(\sigma_m'\)) - Void ratio - Fines content - Uniformity coefficient or plasticity index (group-dependent)

Alemu et al. (2025) Model

The Alemu et al. model provides curves for transitional silts, using the Wang and Stokoe (2022) modified hyperbolic backbone with a Hardin–Drnevich damping component:

\[\frac{G}{G_{max}} = \frac{1}{\left(1 + \left(\gamma/\gamma_{mr}\right)^A\right)^B}\]
\[\xi = \xi_{min} + \frac{E_1}{100} \frac{\gamma/\gamma_D}{1 + (\gamma/\gamma_D)^{E_6}}\]

Valid for: \(0 \le PI \le 32\), \(10 \le p' \le 125\) kPa, \(1 \le OCR \le 9.1\).

Parameters depend on: - Plasticity index (PI) - Over-consolidation ratio (OCR) - Mean effective stress (\(p'\)) - Fines content

User-Defined Curves

PyStrata allows specification of custom modulus reduction and damping curves from laboratory data.

Implementation in PyStrata

Nonlinear soil properties are handled through the SoilType class with NonlinearCurve objects that define the strain-dependent curves.

# Darendeli model for clay
soil_type = pystrata.site.DarendeliSoilType(
    plas_index=30,
    stress_mean=100,  # kPa
    unit_wt=18.0,
)

# Menq model for gravel
soil_type = pystrata.site.MenqSoilType(
    unit_wt=20.0,
    coef_unif=10,
    diam_mean=5,  # mm
    stress_mean=101.3,  # kPa
)

# Wang and Stokoe model for clean sand
soil_type = pystrata.site.WangSoilType(
    soil_group="clean_sand_and_gravel",
    unit_wt=19.0,
    stress_mean=100,  # kPa
    void_ratio=0.6,
)

# Alemu et al. model for transitional silt
soil_type = pystrata.site.AlemuEtAlSoilType(
    unit_wt=18.0,
    plas_index=15,
    ocr=1.5,
    stress_mean=50,  # kPa
)