FLAC3D Theory and Background • Constitutive Models
Drained and Undrained Triaxial Tests of Weald Clay using CASM
Note
The project file for this example is available to be viewed/run in FLAC3D. The project’s main data files are shown at the end of this example.
The Clay-and-Sand model is used to simulate the isotropiccaly consolidated triaxial drained (CD) and undrained (CU) tests under normally consolidated (NC) condition (OCR = 1) and overly consolidated (OC) condition (OCR = 14.4) for Weald Clay. The input parameters are based on Yu (1998) except the potential-exponent is now 2.15 to use the modified version by Arroyo and Gens (2021). The material properties are summarized in the table:
critical-state-1
\(\Gamma\)
1.06
critical-state-2
\(\lambda\)
0.093
ratio-critical
\(M\)
0.9
pressure-reference
\(p_{ref}\)
100 (kPa)
kappa
\(\kappa\)
0.025
poisson
\(\nu\)
0.3
potential-exponent
\(m\)
2.15
yield-exponent
\(n\)
4.5
spacing-ratio
\(R\)
2.714
For the NC case, the initial isotropic consolidation pressure is 207 kPa, with the initial condition \(OCR_0\) = 1.0 or \(e_0\) = 0.632. For the OC case, the initial isotropic consolidation pressure is 34.5 kPa, with the initial condition \(OCR_0\) = 14.44 or \(e_0\) = 0.617.
Drained Condition
Figure 1 to Figure 4 present the results of drained cases for both NC and OC clays.
break

Figure 1: Simulation of \(q\) vs. axial strain for drained triaxial tests for \(OCR_0\) = 1.0 and \(p_0\) = 207 kPa.

Figure 2: Simulation of volumetric strain vs. axial strain for drained triaxial tests for \(OCR_0\) = 1.0 and \(p_0\) = 207 kPa.

Figure 3: Simulation of \(q\) vs. axial strain for drained triaxial tests for \(OCR_0\) = 14.44 and \(p_0\) = 34.5 kPa.

Figure 4: Simulation of volumetric strain vs. axial strain for drained triaxial tests for \(OCR_0\) = 14.44 and \(p_0\) = 34.5 kPa.
Undrained Condition
Figure 5 to Figure 8 present the results of undrained cases for both NC and OC clays.

Figure 5: Simulation of \(q\) vs. axial strain for undrained triaxial tests for \(OCR_0\) = 1.0 and \(p_0\) = 207 kPa.

Figure 6: Simulation of excess pore pressure vs. axial strain for undrained triaxial tests for \(OCR_0\) = 1.0 and \(p_0\) = 207 kPa.

Figure 7: Simulation of \(q\) vs. axial strain for undrained triaxial tests for \(OCR_0\) = 14.44 and \(p_0\) = 34.5 kPa.

Figure 8: Simulation of excess pore pressure vs. axial strain for undrained triaxial tests for \(OCR_0\) = 14.44 and \(p_0\) = 34.5 kPa.
References
Arroyo, M. and Gens, A. Computational analyses of Dam I failure at the Corrego de Feijao mine in Brumadinho. Final Report for VALE SA. (2021)
Yu, H.S. CASM: a unified state parameter model for clay and sand. International Journal for Numerical and Analytical Methods in Geomechanics, 22(8), 612-753 (1998).
Data File
main datafile:
program call "drained_nc.dat"
program call "drained_oc.dat"
program call "undrained_nc.dat"
program call "undrained_oc.dat"
program call "check.dat"
drained-nc datafile:
model new
; Drained Triaxial Compression Test, Normally Consolidated Sample
model large-strain off
zone create brick size 1 1 1
zone cmodel assign clay-and-sand
;
zone property critical-state-1 1.06
zone property critical-state-2 0.093
zone property pressure-reference 100.0
zone property kappa 0.025
zone property ratio-critical 0.9
zone property yield-exponent 4.5
zone property potential-exponent 2.15
zone property spacing-ratio 2.714
zone property poisson 0.3
zone property ocr-initial 1.0
;
[global cell = -207.0]
zone initialize stress xx [cell] yy [cell] zz [cell]
zone face apply stress-xx [cell] range position-x 1
zone face apply stress-yy [cell] range position-y 1
zone property stress-initial [tensor(cell,cell,cell,0,0,0)]
;
[global zvel = -1e-6]
zone face apply velocity-z [zvel] range position-z 1
zone face apply velocity-x 0 range position-x 0
zone face apply velocity-y 0 range position-y 0
zone face apply velocity-z 0 range position-z 0
;
[global zn = zone.near(0.5,0.5,0.5)]
[global gp = gp.near(1.0,1.0,1.0)]
fish define q1
local str = zone.stress.eff(zn)
global q1 = str->xx - str->zz
global p1 = -(str->xx + str->yy + str->zz)/3. - zone.pp(zn)
global e1 = -gp.disp.z(gp)*100.
global ev = zone.strain.vol.inc(zn)*100
end
;
fish history name '1' q1
fish history name '2' p1
fish history name '3' e1
fish history name '4' ev
;
history interval 200
model solve-static cycles 200000
model save "WealdClay-NC-Drained"
drained-oc datafile:
model new
; Drained Triaxial Compression Test, Overly Consolidated Sample
model large-strain off
zone create brick size 1 1 1
zone cmodel assign clay-and-sand
;
zone property critical-state-1 1.06
zone property critical-state-2 0.093
zone property pressure-reference 100.0
zone property kappa 0.025
zone property ratio-critical 0.9
zone property yield-exponent 4.5
zone property potential-exponent 2.15
zone property spacing-ratio 2.714
zone property poisson 0.3
zone property ocr-initial 14.44
;
[global cell = -34.5]
zone initialize stress xx [cell] yy [cell] zz [cell]
zone face apply stress-xx [cell] range position-x 1
zone face apply stress-yy [cell] range position-y 1
zone property stress-initial [tensor(cell,cell,cell,0,0,0)]
;
[global zvel = -1e-6]
zone face apply velocity-z [zvel] range position-z 1
zone face apply velocity-x 0 range position-x 0
zone face apply velocity-y 0 range position-y 0
zone face apply velocity-z 0 range position-z 0
;
[global zn = zone.near(0.5,0.5,0.5)]
[global gp = gp.near(1.0,1.0,1.0)]
fish define q1
local str = zone.stress.eff(zn)
global q1 = str->xx - str->zz
global p1 = -(str->xx + str->yy + str->zz)/3. - zone.pp(zn)
global e1 = -gp.disp.z(gp)*100.
global ev = zone.strain.vol.inc(zn)*100
end
;
fish history name '1' q1
fish history name '2' p1
fish history name '3' e1
fish history name '4' ev
;
history interval 200
model solve-static cycles 200000
model save "WealdClay-OC-Drained"
undrained-nc datafile:
model new
; Undrained Triaxial Compression Test, Normally Consolidated Sample
model large-strain off
zone create brick size 1 1 1
zone cmodel assign clay-and-sand
;
zone property critical-state-1 1.06
zone property critical-state-2 0.093
zone property pressure-reference 100.0
zone property kappa 0.025
zone property ratio-critical 0.9
zone property yield-exponent 4.5
zone property potential-exponent 2.15
zone property spacing-ratio 2.714
zone property poisson 0.3
zone property ocr-initial 1.0
;
[global cell = -207.0]
zone initialize stress xx [cell] yy [cell] zz [cell]
zone property stress-initial [tensor(cell,cell,cell,0,0,0)]
;
model configure fluid-flow
zone fluid property effective-cutoff -1e20
zone fluid property porosity 0.3 fluid-modulus 6e4
zone fluid property pore-pressure-generation on
;
[global zvel = -1e-6]
zone face apply velocity-z [zvel] range position-z 1
zone face apply velocity-x 0 range position-x 0
zone face apply velocity-y 0 range position-y 0
zone face apply velocity-z 0 range position-z 0
zone face apply stress-xx [cell] range position-x 1
zone face apply stress-yy [cell] range position-y 1
;
[global zn = zone.near(0.5,0.5,0.5)]
[global gp = gp.near(1.0,1.0,1.0)]
fish define q1
local str = zone.stress.eff(zn)
global q1 = str->xx - str->zz
global pp = zone.pp(zn)
global p1 = -(str->xx + str->yy + str->zz)/3. - pp
global e1 = -gp.disp.z(gp)*100.
global ev = zone.strain.vol.inc(zn)*100
end
;
fish history name '1' q1
fish history name '2' p1
fish history name '3' e1
fish history name '4' ev
fish history name '5' pp
;
history interval 200
model solve-static cycles 200000
model save "WealdClay-NC-Undrained"
undrained-oc datafile:
model new
; Undrained Triaxial Compression Test, Overly Consolidated Sample
model large-strain off
zone create brick size 1 1 1
zone cmodel assign clay-and-sand
;
zone property critical-state-1 1.06
zone property critical-state-2 0.093
zone property pressure-reference 100.0
zone property kappa 0.025
zone property ratio-critical 0.9
zone property yield-exponent 4.5
zone property potential-exponent 2.15
zone property spacing-ratio 2.714
zone property poisson 0.3
zone property ocr-initial 14.44
;
[global cell = -34.5]
zone initialize stress xx [cell] yy [cell] zz [cell]
zone property stress-initial [tensor(cell,cell,cell,0,0,0)]
;
model configure fluid-flow
zone fluid property effective-cutoff -1e20
zone fluid property porosity 0.3 fluid-modulus 6e4
zone fluid property pore-pressure-generation on
;
[global zvel = -1e-6]
zone face apply velocity-z [zvel] range position-z 1
zone face apply velocity-x 0 range position-x 0
zone face apply velocity-y 0 range position-y 0
zone face apply velocity-z 0 range position-z 0
zone face apply stress-xx [cell] range position-x 1
zone face apply stress-yy [cell] range position-y 1
;
[global zn = zone.near(0.5,0.5,0.5)]
[global gp = gp.near(1.0,1.0,1.0)]
fish define q1
local str = zone.stress.eff(zn)
global q1 = str->xx - str->zz
global pp = zone.pp(zn)
global p1 = -(str->xx + str->yy + str->zz)/3. - pp
global e1 = -gp.disp.z(gp)*100.
global ev = zone.strain.vol.inc(zn)*100
end
;
fish history name '1' q1
fish history name '2' p1
fish history name '3' e1
fish history name '4' ev
fish history name '5' pp
;
history interval 200
model solve-static cycles 200000
model save "WealdClay-OC-Undrained"
Was this helpful? ... | Itasca Software © 2024, Itasca | Updated: Jun 07, 2025 |