FLAC3D Theory and Background • Constitutive Models
Drained Triaxial Tests of Erksak Sand 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) tests for Erksak Sand. Three tests are selected: very dense sample with initial \(e_0\) = 0.59 and \(p_0\) = 130 kPa, medium dense sample with initial \(e_0\) = 0.677 and \(p_0\) = 60 kPa, and loose sample with initial \(e_0\) = 0.82 and \(p_0\) = 200 kPa.
The input parameters are based on Yu (1998). The material properties are summarized in the table:
critical-state-1
\(\Gamma\)
0.8167
critical-state-2
\(\lambda\)
0.0135
ratio-critical
\(M\)
1.2
pressure-reference
\(p_{ref}\)
100 (kPa)
kappa
\(\kappa\)
0.005
poisson
\(\nu\)
0.3
potential-exponent
\(m\)
2.0
yield-exponent
\(n\)
4.0
spacing-ratio
\(R\)
6792
break

Figure 1: Simulation of \(q/p\) vs. axial strain for drained triaxial tests for \(e_0\) = 0.59 and \(p_0\) = 130 kPa.

Figure 2: Simulation of volumetric strain vs. axial strain for drained triaxial tests for \(e_0\) = 0.59 and \(p_0\) = 130 kPa.

Figure 3: Simulation of \(q/p\) vs. axial strain for drained triaxial tests for \(e_0\) = 0.677 and \(p_0\) = 200 kPa.

Figure 4: Simulation of volumetric strain vs. axial strain for drained triaxial tests for \(e_0\) = 0.677 and \(p_0\) = 200 kPa.

Figure 5: Simulation of \(q/p\) vs. axial strain for drained triaxial tests for \(e_0\) = 0.82 and \(p_0\) = 60 kPa.

Figure 6: Simulation of volumetric strain vs. axial strain for drained triaxial tests for \(e_0\) = 0.82 and \(p_0\) = 60 kPa.
References
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_loose.dat"
program call "drained_medium.dat"
program call "drained_dense.dat"
program call "check.dat"
drained_dense datafile:
model new
; Drained Triaxial Compression Test, Very Dense Sample
model large-strain off
zone create brick size 1 1 1
zone cmodel assign clay-and-sand
;
zone property critical-state-1 0.8167
zone property critical-state-2 0.0135
zone property pressure-reference 100.0
zone property kappa 0.005
zone property ratio-critical 1.2
zone property yield-exponent 4
zone property potential-exponent 2
zone property spacing-ratio 6792
zone property poisson 0.3
zone property void-initial 0.59
;
[global cell = -130.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 ev
local str = zone.stress(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
global eta = q1/p1
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' eta
;
history interval 200
model solve-static cycles 50000
model save "ErksakSand-Dense-Drained"
drained_medium datafile:
model new
; Drained Triaxial Compression Test, Medium Dense Sample
model large-strain off
zone create brick size 1 1 1
zone cmodel assign clay-and-sand
;
zone property critical-state-1 0.8167
zone property critical-state-2 0.0135
zone property pressure-reference 100.0
zone property kappa 0.005
zone property ratio-critical 1.2
zone property yield-exponent 4
zone property potential-exponent 2
zone property spacing-ratio 6792
zone property poisson 0.3
zone property void-initial 0.677
;
[global cell = -60.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 ev
local str = zone.stress(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
global eta = q1/p1
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' eta
;
history interval 200
model solve-static cycles 50000
model save "ErksakSand-Medium-Drained"
drained_loose datafile:
model new
; Drained Triaxial Compression Test, Loose Sample
model large-strain off
zone create brick size 1 1 1
zone cmodel assign clay-and-sand
;
zone property critical-state-1 0.8167
zone property critical-state-2 0.0135
zone property pressure-reference 100.0
zone property kappa 0.005
zone property ratio-critical 1.2
zone property yield-exponent 4
zone property potential-exponent 2
zone property spacing-ratio 6792
zone property poisson 0.3
zone property void-initial 0.82
;
[global cell = -200.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 ev
local str = zone.stress(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
global eta = q1/p1
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' eta
;
history interval 200
model solve-static cycles 50000
model save "ErksakSand-Loose-Drained"
Was this helpful? ... | Itasca Software © 2024, Itasca | Updated: Jun 07, 2025 |