Skip to content

ISA-SAND

An ISA-based sand model formulated around critical-state concepts. It combines an isotropic compression law and a critical-state line with the ISA intergranular-strain mechanism. Its parameters cover monotonic strength, dilatancy and cyclic behaviour.

At a glance

  • Class: ACT.models.ISA
  • numgeo name: ISA-SAND
  • Parameters with search bounds: 21
  • Imported as: from ACT.models import ISA

Units and angles

phic is an optional convenience input in radians; it derives Mc and is not one of the 21 bounded material parameters. ACT writes the primary ISA-SAND values without a unit conversion, so retain the model's calibrated parameter convention and the ACT workbook's kPa stress convention. Do not reuse similarly named values from another model without checking its formulation.

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
lambdai 0.01 0.5 slope of the isotropic compression line
npi 0.5 1.0
nei 1.0 3.0
ei0 0.6 1.6 maximum void ratio at p=0
lambdac 0.001 0.5 slope of the critical-state line
npc 0.0 1.0
ec0 0.6 1.6 critical void ratio at p=0
Mc 0.6 1.6 critical stress ratio in triaxial compression
nu 0.1 0.37 Poisson's ratio
nd 0.1 4.5 dilatancy-surface parameter
fb0 1.1 2
cd 80 1000
rf 0 4
zf 30 100
zmax0 1 50
cz 1 10000 fabric-evolution parameter
epsf 0 0.05
mR 1. 15. intergranular-strain stiffness factor (reversal)
R 1e-5 5e-4 size of the elastic / intergranular-strain locus
beta 0.01 2. barotropy exponent
chi 0.1 30. intergranular-strain evolution exponent

Setting parameters

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

from ACT.models import ISA

model = ISA()
model.set(lambdai=..., npi=..., nei=..., ei0=..., lambdac=..., npc=...)

Full set signature

set(lambdai=None, npi = None, nei = None, ei0 = None, lambdac = None, npc = None, ec0 = None, Mc = None, nu=None, nd = None, fb0 = None, cd = None, rf = None, zf = None, zmax0 = None, cz = None, epsf = None, phic = None, mR = None, R = None, beta = None, chi = None)

Available set parameters: lambdai, npi, nei, ei0, lambdac, npc, ec0, Mc, nu, nd, fb0, cd, rf, zf, zmax0, cz, epsf, phic, mR, R, beta, chi.

Choosing free parameters

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

model.set_bounds(lambdai=[0.01, 0.5], npi=[0.5, 1.0], nei=[1.0, 3.0], ei0=[0.6, 1.6])
globals.setup(Model=model, Free_parameter=["lambdai", "npi", "nei", "ei0", "lambdac", "npc"], ...)

Parameters that accept a set_bounds override: lambdai, npi, nei, ei0, lambdac, npc, ec0, Mc, nu, nd, fb0, cd, rf, zf, zmax0, cz, epsf, mR, R, beta, chi.

Reading & updating single parameters

model.update("lambdai", value)   # set one parameter
x = model.get_parameter("lambdai")  # read one parameter

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