Skip to content

Weighting of tests

When a calibration honours several tests — and several quantities within each test — numgeo-ACT needs to know how to balance them. This is controlled by a weights structure: a nested dictionary that assigns a weight to each test type and to each compared quantity within it. Sensible defaults are used unless you pass your own via the Weights argument of globals.setup.

Two levels of weighting

  1. Global level — splits the total weight between monotonic and cyclic behaviour. By default each receives one half:

    Group Default weight
    monotonic 0.5
    cyclic 0.5
  2. Per-test level — within each test type, weights distribute the importance across the individual curves/quantities being compared (these must sum to 1).

Default per-test weights

The defaults below are what numgeo-ACT uses if you do not supply your own. They reflect typical good practice; adjust them to emphasize the behaviour most relevant to your application.

Key Default Meaning
eps1-q axial strain vs. deviatoric stress
eps1-epsV axial strain vs. volumetric strain
penalty-peak-q-eps1 0 penalty on the deviatoric-stress peak
cutoff-triaxCD-expdata-after-max-q True ignore experimental data after peak \(q\)
Key Default Meaning
eps1-q ½ axial strain vs. deviatoric stress
eps1-p ½ axial strain vs. mean stress
p-eta 0 stress ratio vs. mean stress
Key Default Meaning
p-q 0 stress path
eps1-q 0 stress–strain
N-pw ½ pore pressure vs. cycles
N-eps1 0 axial strain vs. cycles
pmin ½ minimum mean pressure
Nru 0 cycles to a pore-pressure ratio
penalty-hull 1000 penalty for leaving the admissible region
Nru_Factor 0.8 pore-pressure-ratio level (e.g. \(N_{80}\))
penalty-critical-state-line 0 penalty relative to the CSL
Key Default Meaning
N-eps1_acc 0 accumulated axial strain vs. cycles
N-eps_acc 1 accumulated total strain vs. cycles
N-epsv_acc 0 accumulated volumetric strain vs. cycles
N-epsq_acc 0 accumulated deviatoric strain vs. cycles
N-pw_acc 0 accumulated pore pressure vs. cycles
N-eps_ampl 0 strain amplitude vs. cycles
Key Default Meaning
N-eps1_acc 0 accumulated axial strain vs. cycles
N-eps_acc 0 accumulated total strain vs. cycles
N-epsv_acc 0 accumulated volumetric strain vs. cycles
N-epsq_acc 0 accumulated deviatoric strain vs. cycles
N-pw_acc 1 accumulated pore pressure vs. cycles
N-eps_ampl 0 strain amplitude vs. cycles
Key Default Meaning
N-ru 1 pore-pressure ratio vs. cycles
N-gamma, N-tau, N-stressN, N-strainDA, N-ru_acc, gamma-tau, stressN-tau, stressN 0 further optional planes
penalty-critical-state-line 0 penalty relative to the CSL

Scaling

A global switch scale_max_min (default True) scales the compared planes to a common range for the triaxial and cyclic test types, so quantities of different magnitude contribute comparably to the objective.

Validation

Before a calibration runs, the weights are validated: for each active test type the relevant per-quantity weights must sum to 1 (a small tolerance is allowed). If they do not, numgeo-ACT reports which test's weights are inconsistent and stops — so a misconfigured weighting is caught immediately rather than silently skewing the result.

Customizing the weights

Start from the defaults and adjust only what you need:

from ACT.utilities import weights

w = weights.initialize()          # nested dict with the defaults above

# emphasize the volumetric response in drained triaxial tests
w["triaxCD"]["eps1-q"]    = 1./2.
w["triaxCD"]["eps1-epsV"] = 1./2.   # the two must still sum to 1

# shift the global balance towards cyclic behaviour
w["global"]["monotonic"] = 0.4
w["global"]["cyclic"]    = 0.6

globals.setup(..., Weights=w)

Turn quantities on and off

Setting a per-quantity weight to 0 removes that curve from the objective; giving it a larger share emphasizes it. This is how you tell the optimizer what matters for your material and application — for instance weighting pore-pressure accumulation heavily when calibrating for liquefaction.