Skip to content

Sanisand-2

A SANISAND variant with a parameterization tailored for efficient calibration. It retains the critical-state bounding-surface structure of SANISAND while exposing a compact set of bounded parameters.

At a glance

  • Class: ACT.models.sanisand2
  • numgeo name: Sanisand-2
  • Material parameters: 16 (15 optimisable; patm is fixed)
  • Imported as: from ACT.models import sanisand2

Units and angles

Enter patm in kPa. The other 15 material parameters, including G0, are dimensionless coefficients or ratios. The optional convenience input phic is in degrees; ACT converts it to radians to derive Mc and Me, and it is not itself a material or free parameter.

Default search bounds

These are the built-in lower/upper bounds. patm is a fixed reference value, not a search dimension; override adjustable intervals with set_bounds.

Parameter Lower Upper Description
patm 100. 100. atmospheric reference pressure
e0 0.6 1.8 reference void ratio
lambdac 0.005 0.25 slope of the critical-state line
xi 0.2 1.0 critical-state line exponent
G0 50 200 shear-modulus constant
nue 0.001 0.1 Poisson's ratio
m 0.005 0.05
Mc 1.1 1.55 critical stress ratio in triaxial compression
Me 0.7 1.25 critical stress ratio in triaxial extension
nb 0.6 2.5 bounding-surface parameter
h0 1 20 plastic-modulus / hardening parameter
ch 0.3 1.1
nd 0.5 4.0 dilatancy-surface parameter
A0 0.2 1.4 dilatancy parameter
zmax 1 60 maximum fabric (dilatancy)
cz 50 1e4 fabric-evolution parameter

Setting parameters

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

from ACT.models import sanisand2

model = sanisand2()
model.set(patm=..., e0=..., lambdac=..., xi=..., G0=..., nue=...)

Full set signature

set(patm=None, e0 = None, lambdac = None, xi = None, G0 = None, nue = None, m = None, Mc = None, Me=None, nb = None, h0 = None, ch = None, nd = None, A0 = None, zmax = None, cz = None, phic = None)

Available set parameters: patm, e0, lambdac, xi, G0, nue, m, Mc, Me, nb, h0, ch, nd, A0, zmax, cz, phic.

Choosing free parameters

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

model.set_bounds(e0=[0.6, 1.8], lambdac=[0.005, 0.25], xi=[0.2, 1.0])
globals.setup(Model=model, Free_parameter=["e0", "lambdac", "xi", "G0", "nue"], ...)

Keep patm=100.0 fixed. Its default interval has zero width and is rejected by the optimisers when listed in Free_parameter.

Parameters that accept a set_bounds override: patm, e0, lambdac, xi, G0, nue, m, Mc, Me, nb, h0, ch, nd, A0, zmax, cz.

Reading & updating single parameters

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

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