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;
patmis 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.