Skip to main content Link Search Menu Expand Document (external link)

SANISAND-F

Table of contents

  1. Parameters
    1. Optional parameters
  2. Bounds
  3. Constraints
  4. Usage
  5. Constitutive Equations
  6. References

Parameters

  • $p_{atm}$ - key: patm - provided in kPa, in most cases $p_{atm}=100$ kPa is valid.
  • $M_e$ - key: Me
  • $M_c$ - key: Mc
  • $\lambda_c$ - key: lambdac
  • $e_0$ - key: e0
  • $\xi$ - key: xi
  • $G_0$ - key: G0
  • $\nu$ - key: nu
  • $m$ - key: m
  • $n_b$ - key: nb
  • $h_1$ - key: h1
  • $h_2$ - key: h2
  • $c_0$ - key: c0
  • $c_h$ - key: ch
  • $n_d$ - key: nd
  • $A_0$ - key: A0
  • $e_A$ - key: eA
  • $r$ - key: r
  • $F_{in}$ - key: Fin
  • $n_{F,11}$ - key: nF11
  • $n_{F,22}$ - key: nF22
  • $n_{F,33}$ - key: nF33

The numgeo input key for the SANISAND-F model is:

*Mechanical = Sanisand-f
patm, ec0, lambda, xsi, Mc, Me, m, G0
nu, ch, nb, A0, nd, h1, h2, c0
eA, r, Fin, nF11, nF22, nF33

Optional parameters

Optional parameters offer advanced users more flexibility in choosing amongst different implementation strategies. None of these parameters is mandatory. To change the default values of one or more optional parameters use the keyword *Optional mechanical parameter followed by one ore more of the parameters listed below (default values are given with the keyword):

  • bulk_water, 0.0 - Bulk modulus of pore water $K^w$ for locally undrained simulations $tr(\dot{\boldsymbol{\varepsilon}})=0$. For any value of $K^w > 0$ the rate of pore water pressure is calculated as follows $\dot{p}^w = - K^w tr(\dot{\boldsymbol{\varepsilon}}) (1+e)/e$. The constitutive behaviour is governed by the effective stress $\boldsymbol{\sigma} = \boldsymbol{\sigma}^{tot}-p^w \boldsymbol{\delta}$, where $\boldsymbol{\sigma}^{tot}$ is the total stress and $\boldsymbol{\delta}$ is the Kronecker delta.
  • integration, 1 - Method for numerical integration. 1 = Modified-Euler, 2 = Forward Euler
  • min_pressure, 0.01 - Minimum mean effective stress in kPa (compression = positive).
  • tol_stress, 1d-4 - Tolerance for stress error in modified-Euler scheme (ignored for Forward Euler)
  • minimum_dh, 1d-6 - Modified Euler: Minimum size of subincrement, Forward Euler: target strain increment for the calculation of number of subincrements
  • tangent_stiffness, 2 - When the contribution of the constitutive model $J=\dfrac{\partial \sigma}{\partial \varepsilon}$ to the element stiffness is computed. 1 = tangent stiffness (evaluated at the end of the increment for the updated stress state, default), 2 = “consistent” stiffness (evaluated at the end of each subincrement, a weighted average is returned to the element).
  • jacobi, 1 - 1 = elastic jacobi, 2 = elaso-plastic tangent
  • tol_yield, 1d-9 - Tolerance for yield surface. Default is $10^{-9}$
  • drift_correction, 0 - Method for drift correction: 0 = map yield surface by adjusting $\boldsymbol{\alpha}$, 1 = projection along deviatoric plane, else = OpenSees drift correction
  • drift_maxiter, 50 - Maximum number of iterations for drift correction (only for the OpenSees drift correction, ignored otherwise).
  • maximum_voidratio, 0.0- Maximum allowed void ratio $e^{max}$ (off per default). If active (for any value larger than zero), $e=min(e,e^{max})$ is enforced.
  • minimum_voidratio, 0.0- Minimum allowed void ratio $e^{min}$ (off per default). If active (for any value larger than zero), $e=max(e,e^{min})$ is enforced.
  • update_alpha, 1 - Method for the update of $\boldsymbol{\alpha}_\text{ini}$ according to Section Constitutive Equations

Bounds

Per default, we use the following bounds for Sanisand-F:

  • $100 \leq p_{atm} \leq 100$ in kPa
  • $1.1 \leq M_c \leq 1.55$
  • $0.7 \leq M_e \leq 1.25$
  • $0.005 \leq \lambda_c \leq 0.25$
  • $0.6 \leq e_0 \leq 1.8$
  • $0.2 \leq \xi \leq 1.0$
  • $50 \leq G_0 \leq 200$ in kPa
  • $0.001 \leq \nu \leq 0.1$
  • $0.005 \leq m \leq 0.05$
  • $0.6 \leq n_b \leq 2.5$
  • $1.0 \leq h_1 \leq 20.0$
  • $1.0 \leq h_2 \leq 20.0$
  • $1.0 \leq c_0 \leq 10.0$
  • $0.3 \leq c_h \leq 1.1$
  • $0.5 \leq n_d \leq 4.0$
  • $0.2 \leq A_0 \leq 1.4$
  • $0.0 \leq e_A \leq 1.0$
  • $1.0 \leq r \leq 5.0$
  • $0.0 \leq F_{in} \leq 1.0$
  • $-1.0 \leq n_{F,11} \leq 1.0$
  • $-1.0 \leq n_{F,22} \leq 1.0$
  • $-1.0 \leq n_{F,33} \leq 1.0$

If you want to modify the bounds, e.g. to fine tune some parameters for the performance in cyclic tests, you can modify all of the above using the set_bounds function of the sanisand_f class:

...
# parameter from previous calibration
G0 = 126.03231709791712 
nue = 0.05 
h0 = 3.55966109923681 
# modify the bounds of G0 and m to be near the value from monotonic tests
model.set_bounds(G0=(0.25*G0,2.5*G0), m=(0.8*m,1.2*m), h0=(0.8*h0,1.2*h0))
...

Constraints

If either $M_c$ or $M_e$ or both are active during optimization, we enforce $M_e \leq M_c$ using a simple penalty approach.

Add additional constraint for $n_F$ !!

Usage

To access the SANISAND-F constitutive model for optimization, the sanisand_f module must first be imported from numgeo-ACT:

from ACT.sanisand_f import sanisand_f

Then (after some more steps to read in the experimental data and choose the constitutive model and the weighting factors) the sanisand_f class can be initialized:

model = sanisand_f()

In a next step we initialize some of the parameters of the SANISAND model:

model.set(p_atm = 100, e0 = 1.0, phic = 32, nF11 = -0.4085, nF22 = 0.8165, nF33 = -0.4085)

We initialize $p_{atm}=100$ kPa and $\varphi_{c}$ as the angle of repose obtained from laboratory tests, respectively.

By initializing $\varphi_c$ instead of $M_e$ and $M_c$, the slopes of the CSL in triaxial compression and triaxial extension are automatically initialized as $M_c = 6\sin(\varphi_c)/(3-\sin(\varphi_c))$ and $M_e = 6\sin(\varphi_c)/(3+\sin(\varphi_c))$. Of course $M_c$ and $M_e$ could have also been initialized (without obeying above equations for $M_c(\varphi_c)$ and $M_e(\varphi_c)$) instead of $\varphi_c$.

In the last step we specify which parameters we want to vary during optimization. In the present case we want to optimize all parameters of the SANISAND model influencing the models response during monotonic loading. For convenience, the reference pressure $p_{atm}$ is kept constant.

to_optimize = ['e0', 'lambdac', 'xi', 'G0', 'm', 'h1', 'h2', 'c0', 'ch', 'nb', 'A0', 'nd', 'nue', 'eA']

We have now successfully set up the SANISAND constitutive model for optimization by one of the implemented optimization algorithms $\rightarrow$ Optimization algorithms

Constitutive Equations

Will be added soon

References

[1] Y. F. Dafalias and M. T. Manzari, ‘Simple plasticity sand model accounting for fabric change effects’, Journal of Engineering mechanics, vol. 130, no. 6, pp. 622–634, 2004.

[2] K. Been and M. G. Jefferies, ‘A state parameter for sands’, Géotechnique, vol. 35, no. 2, pp. 99–112, Jun. 1985, doi: 10.1680/geot.1985.35.2.99.

[3] A. L. Petalas, Y. F. Dafalias, and A. G. Papadimitriou, ‘SANISAND-F: Sand constitutive model with evolving fabric anisotropy’, International Journal of Solids and Structures, vol. 188–189, pp. 12–31, Apr. 2020, doi: 10.1016/j.ijsolstr.2019.09.005.

[4] S. V. Bokkisa, J. Macedo, A. L. Petalas, and C. Arson, ‘Assessing static liquefaction triggering considering fabric anisotropy effects under the ACST framework’, Computers and Geotechnics, vol. 148, p. 104796, Aug. 2022, doi: 10.1016/j.compgeo.2022.104796.