Skip to content

HCA-Sand

The high-cycle accumulation (HCA) model of Niemunis, Wichtmann & Triantafyllidis. Rather than resolving every load cycle, the HCA model computes the accumulation of strain (or stress) as an explicit function of the number of cycles, the strain amplitude, the void ratio, the mean pressure and the cyclic preloading. It is calibrated against HCA tests and is the tool of choice for very large cycle numbers (e.g. offshore foundations).

At a glance

  • Class: ACT.models.HCA_sand
  • numgeo name: HCA_sand
  • Parameters with search bounds: 15
  • Imported as: from ACT.models import HCA_sand

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
CN1 1e-5 1e-2 cyclic strain-accumulation parameter
CN2 5e-3 2 cyclic strain-accumulation parameter
CN3 0. 5e-4 cyclic strain-accumulation parameter
Campl 1. 3. amplitude-function parameter
Ce 0.2 1. void-ratio-function parameter
Cp -5e-2 1. pressure-function parameter
Cy 1 5. cyclic-preloading-function parameter
patm 0. 1e5 atmospheric reference pressure
eref 0.2 2. reference void ratio
epsampl_ref 1e-5 1e-2 reference strain amplitude
Abulk 500 2e3 bulk-modulus parameter
abulk 1. 3. bulk-modulus parameter
nbulk 0.2 0.8 bulk-modulus exponent
nu 0.25 0.48 Poisson's ratio
phi 0.3491 0.62832 friction angle (radians)

Setting parameters

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

from ACT.models import HCA_sand

model = HCA_sand()
model.set(CN1=..., CN2=..., CN3=..., Campl=..., Ce=..., Cp=...)

Full set signature

set(CN1=None,CN2=None,CN3=None,Campl=None,Ce=None,Cp=None,Cy=None,patm=None,eref=None,epsampl_ref=None,Abulk=None,abulk=None,nbulk=None,nu=None,phi=None)

Available set parameters: CN1, CN2, CN3, Campl, Ce, Cp, Cy, patm, eref, epsampl_ref, Abulk, abulk, nbulk, nu, phi.

Choosing free parameters

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

model.set_bounds(CN1=[1e-5, 1e-2], CN2=[5e-3, 2], CN3=[0., 5e-4], Campl=[1., 3.])
globals.setup(Model=model, Free_parameter=["CN1", "CN2", "CN3", "Campl", "Ce", "Cp"], ...)

Parameters that accept a set_bounds override: CN1, CN2, CN3, Campl, Ce, Cp, Cy, patm, eref, epsampl_ref, Abulk, abulk, nbulk, nu, phi.

Reading & updating single parameters

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

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