Skip to content

Hypo-IGS

Hypoplasticity combined with the intergranular-strain (IGS) extension. The model uses the classical hypoplastic sand backbone and augments it with an internal intergranular-strain tensor to improve the small-strain stiffness, stiffness degradation after strain reversals and cyclic response. In numgeo-ACT it is exposed as a separate model class so that the IGS parameters can be calibrated directly against monotonic and cyclic laboratory tests.

At a glance

  • Class: ACT.models.hypoplasticity_igs
  • numgeo name: Hypo-IGS
  • Parameters with search bounds: 13
  • Imported as: from ACT.models import hypoplasticity_igs

Default search bounds

These are the built-in lower/upper bounds used when a parameter is optimized. Override any of them with set_bounds.

Parameter Lower Upper Description
phic 25 45 critical-state friction angle in degrees
hs 1e-3 45 granulate hardness in GPa
n 0.1 0.5 compression exponent
ed 0.36 1.0 minimum void-ratio factor \(e_{d0}\)
ec 0.5 1.5 critical void-ratio factor \(e_{c0}\)
fei 1.05 1.25 maximum-to-critical void-ratio factor \(e_{i0}/e_{c0}\)
alpha 0.0 0.5 pyknotropy / density exponent
beta 0.1 6.0 barotropy exponent
mR 2.0 10.0 IGS stiffness factor after strain reversal
mT 1.1 10.0 IGS stiffness factor for continued loading
R 4.9e-5 2.0e-4 size of the intergranular-strain locus
betaR 0.05 1.4 IGS degradation parameter
chi 0.4 7.0 IGS degradation exponent

Setting parameters

Assign initial / fixed parameter values with set(...):

from ACT.models import hypoplasticity_igs

model = hypoplasticity_igs()
model.set(phic=32.0, fei=1.15, ec=0.9, ed=0.55, hs=4.0, n=0.27)

Full set signature

set(phic=None,fei=None,ec=None,ed=None,hs=None,n=None,alpha=None,beta=None,
    mR=None,mT=None,R=None,betaR=None,chi=None,
    phantom_E=None, phantom_nu=None, pmin=None, integrator=None)

Available set parameters: phic, fei, ec, ed, hs, n, alpha, beta, mR, mT, R, betaR, chi, phantom_E, phantom_nu, pmin, integrator.

Choosing free parameters

Narrow the search interval of selected parameters, then list the ones to optimize in globals.setup:

model.set_bounds(phic=[30.0, 38.0], ec=[0.75, 1.05], ed=[0.45, 0.70], hs=[0.5, 15.0])
globals.setup(Model=model, Free_parameter=["phic", "ec", "ed", "hs", "n", "alpha", "beta"], ...)

Parameters that accept a set_bounds override: phic, fei, ec, ed, hs, n, alpha, beta, mR, mT, R, betaR, chi.

Dependent mT option

Hypo-IGS has one special calibration mode for the intergranular-strain stiffness parameters. If mR is included in Free_parameter but mT is not included, ACT does not use the initial value of mT as an independent fixed value. Instead, the effective value is calculated during every numgeo back-calculation as

\[ m_T = 0.7\,m_R . \]

This mode is useful when only the reversal stiffness factor should be optimized and the continued-loading stiffness factor should follow a fixed ratio. The dependency is now also reflected in the text log and PDF report: mT is shown with status dependent, and the reported initial and final mT values are computed from the corresponding mR values.

from ACT.models import hypoplasticity_igs
from ACT import globals

model = hypoplasticity_igs()
model.set(mR=3.0, mT=99.0)   # mT is ignored in the dependent mode below

globals.setup(
    Model=model,
    Free_parameter=["mR", "R", "betaR", "chi"],
    # ... experimental tests, weights and path ...
)

# During ACT calibration and reporting, the effective value is mT = 0.7*mR.

If both mR and mT are included in Free_parameter, both parameters are optimized independently. If only mT is included, mR remains fixed and the usual constraint mT <= mR is checked.

Initial state variables

Hypo-IGS writes the usual void-ratio state variable and initial intergranular-strain components. The default igsmode='classic' initializes the IGS tensor in the same spirit as the classical intergranular-strain extension. For isotropic compression and cyclic triaxial tests, the initial IGS magnitude is distributed isotropically; for oedometric and simple-shear tests the vertical component is initialized directly. A custom initial state supplied by the experimental test definition overrides this default.

Reading & updating single parameters

model.update("mR", 5.0)        # set one parameter
x = model.get_parameter("mR")  # read one parameter

See the models overview for the common interface shared by all models, and Optimization for how the free parameters are searched.