Skip to content

Constitutive models

numgeo-ACT can calibrate thirteen constitutive models, spanning the hypoplastic, IGS, ISA, SANISAND, high-cycle-accumulation, Ta-Ger and Hardening Soil families. Every model is a Python class in ACT.models and implements the parameter and numgeo hooks used by the optimisers. Configuration conveniences are mostly consistent, with documented model-specific exceptions.

Supported models

Model Class name string Free parameters Family / use
Hypoplasticity hypoplasticity Hypoplasticity 14 Classical sand hypoplasticity (von Wolffersdorff) with intergranular strain
Hypo-ISA hypoplasticity_isa Hypo-ISA 16 Hypoplasticity with Intergranular Strain Anisotropy for small-strain and cyclic loading
Hypo-IGS hypoplasticity_igs Hypo-IGS 13 Hypoplasticity with intergranular strain for small-strain and cyclic loading
ISA-SAND ISA ISA-SAND 21 ISA-based sand model
HCA-Sand HCA_sand HCA_sand 15 High-cycle accumulation (explicit) model
Sanisand sanisand Sanisand 15 SANISAND critical-state bounding-surface model
Sanisand-2 sanisand2 Sanisand-2 15 SANISAND variant
Sanisand-F sanisand_f Sanisand-F 17 SANISAND with fabric / memory-surface extension
Sanisand-MSf sanisand_msf Sanisand-MSf 28 SANISAND with semifluidized-state extension
Ta-Ger ta_ger Ta-Ger 11 Ta-Ger sand model
Mod-Ta-Ger mod_ta_ger Mod-Ta-Ger 14 Self-contained Ta-Ger fabric extension
Hardening Soil hardening_soil Hardening-Soil-MN 14 Stress-dependent double-hardening plasticity with Matsuoka–Nakai failure
Hardening Soil Bricks hardening_soil_bricks Hardening-Soil-MN-Bricks 16 Hardening Soil with BRICK small-strain stiffness

The free parameters column gives how many parameters can be optimized (i.e. have a search bound). You choose which subset to actually optimize via the Free_parameter list in globals.setup; the rest stay fixed at the values you set. The SANISAND counts exclude the atmospheric reference pressure, whose default lower and upper bounds are both 100 kPa.

Models map to numgeo

Each model's name string corresponds to the constitutive model implementation in numgeo. When numgeo-ACT writes the numgeo material for a simulation, it uses this name. The calibration therefore reflects the same model you will use in your boundary-value problems. See the numgeo material reference for the model formulations.

Units and angles are model-specific

ACT experimental sheets use kPa for stress and a fraction or percent for strain as stated on the sheet reference. Material conventions are not uniform: classical Hypoplasticity and base Sanisand convenience angles use radians, whereas Hypo-ISA, Hypo-IGS, SANISAND variants, Ta-Ger and Hardening Soil use degrees in their ACT defaults. Granulate hardness hs is entered in GPa. Check the explicit Units and angles note on the selected model page before setting values or bounds.

Model interface

The optimiser-facing methods are shared across the model classes:

Method Purpose
set(...) assign parameter values (initial / fixed)
update(parameter, value) set a single parameter by name
get_parameter(parameter) read a single parameter by name
list_parameter_all() list every parameter of the model
list_parameter_optimize(free) list the parameters being optimized
list_parameter_fixed(free) list the parameters held fixed
parameter_bounds(free_parameter) the bounds of the free parameters
write_numgeo_material(...) write the numgeo material definition
write_numgeo_initial_state_variables(...) write the initial state variables

Most classes additionally provide set_bounds(...) to override individual search intervals. The base sanisand class is the exception: it has 16 built-in parameter-bound entries returned by parameter_bounds(...), but the p_atm entry is fixed and the class has no public set_bounds(...) method. Its convenience input phic derives M_c and M_e and is not itself an independent bounded parameter. See the Sanisand page before configuring that model.

The constructor of every model accepts three output directories (with sensible defaults):

model = hypoplasticity_isa(
    out_dir="./results/",     # final results
    out_dir2="./run_tmp/",    # temporary run files
    out_dir3="./run_final/",  # final run files
)

Typical use in a calibration

from ACT.models import sanisand2

model = sanisand2()                       # defaults + default bounds are pre-set
model.set(G0=120, Mc=1.30, lambdac=0.03)  # initial / fixed values
model.set_bounds(G0=[80, 160], Mc=[1.1, 1.5])  # narrow some search intervals

# read / write single parameters
model.update("nb", 1.2)
print(model.get_parameter("nb"))

Then list the free parameters in setup:

globals.setup(
    Model=model,
    Free_parameter=["G0", "Mc", "lambdac", "nb", "h0", "cz"],
    ...,
)

Choosing a model

Each model page documents the model's purpose, search bounds, configuration methods and parameters available for optimisation:

Hypoplastic family

Hypoplasticity · Hypo-IGS · Hypo-ISA · ISA-SAND: incrementally nonlinear models with intergranular-strain / ISA extensions for small-strain and cyclic behaviour.

Critical-state-line helper

Critical-state-line calibration: Bauer and Li-Wang CSL fitting from direct \(p\)-\(e\) data, oedometric compression data or Bolton-generated points.

SANISAND family

Sanisand · Sanisand-2 · Sanisand-F · Sanisand-MSf: critical-state bounding-surface plasticity for sands, including fabric and semifluidized extensions for liquefaction.

High-cycle accumulation

HCA-Sand: explicit accumulation model for very large numbers of load cycles, calibrated against HCA tests.

Ta-Ger family

Ta-Ger · Mod-Ta-Ger: the Ta-Ger sand model and its fabric-extended variant.

Hardening Soil family

Hardening Soil and Hardening Soil Bricks: stress-dependent stiffness, shear and cap hardening, with an optional BRICK small-strain extension.