Calibrating Constitutive Models from Experimental Data
📽 Slides: Open presentation
Forward problem: given parameters \(\boldsymbol{\theta}\), compute response \(\mathbf{y} = \mathcal{M}(\boldsymbol{\theta})\).
Inverse problem: given observed data \(\mathbf{y}^\text{obs}\), find \(\boldsymbol{\theta}^*\) such that \[ \boldsymbol{\theta}^* = \arg\min_{\boldsymbol{\theta}} \mathcal{J}(\boldsymbol{\theta}), \qquad \mathcal{J}(\boldsymbol{\theta}) = \|\mathbf{y}^\text{obs} - \mathcal{M}(\boldsymbol{\theta})\|^2. \]
Challenges: non-uniqueness, ill-posedness, expensive forward model.
| Test | Primary measurement | Model parameters identified |
|---|---|---|
| Uniaxial tension/compression | \(\sigma\)–\(\varepsilon\) curve | \(E\), \(\sigma_y\), \(H_\text{iso}\) |
| Cyclic loading | Hysteresis loop | Kinematic hardening \(c\), \(\gamma\) |
| Creep | \(\varepsilon(t)\) at const. \(\sigma\) | \(\tau_i\), \(E_i\) (viscoelastic) |
| Biaxial / bulge | 2D stress state | Anisotropy, yield locus shape |
| Digital Image Correlation (DIC) | Full-field strain | Spatial distribution of parameters |
Local sensitivity: how much does output change with a small parameter perturbation? \[ S_{ij} = \frac{\partial y_i}{\partial \theta_j} \quad (\text{sensitivity matrix } \mathbf{S}) \]
Computed by:
Gradient-based:
Gradient-free:
Bayesian:
Weighted least squares: \[ \mathcal{J}(\boldsymbol{\theta}) = \sum_k w_k\left(\frac{y_k^\text{obs} - y_k^\text{sim}(\boldsymbol{\theta})}{\sigma_k}\right)^2 \]
where \(\sigma_k\) is the measurement uncertainty at data point \(k\).
Include regularization for ill-posed problems: \[ \mathcal{J}_\text{reg} = \mathcal{J} + \lambda\|\boldsymbol{\theta} - \boldsymbol{\theta}_0\|^2 \quad (\text{Tikhonov}) \]
from scipy.optimize import least_squares
import numpy as np
def residual(params, eps_exp, sig_exp):
E, sigma_y, H = params
sig_sim = j2_stress_strain(E, sigma_y, H, eps_exp)
return sig_sim - sig_exp
result = least_squares(
residual,
x0=[200e3, 300, 1000], # initial guess [MPa]
bounds=([100e3, 100, 0], # lower bounds
[300e3, 1000, 50000]), # upper bounds
args=(eps_data, sig_data),
method='trf',
verbose=2
)Not all parameters are simultaneously identifiable from a single experiment:
Identifiability analysis: check rank of sensitivity matrix \(\mathbf{S}^T\mathbf{S}\) — rank deficiency signals non-unique parameters.
Remedy: design multi-test campaigns, use heterogeneous stress states (notched specimens + DIC).
After calibration:
The V&V process is governed by standards (ASME V&V 10, 20) in engineering applications.
Report confidence intervals on the identified parameters, not just point estimates.
Constitutive Models — Technion | Website