You are on page 1of 14

# TRIAXIAL TEST ON A FACE-CENTERED CUBIC ARRAY OF RIGID PARTICLES

8-1

## 8 TRIAXIAL TEST ON A FACE-CENTERED CUBIC ARRAY OF RIGID

PARTICLES
8.1 Problem Statement
A triaxial test is carried out numerically on an octogonal assembly of spherical balls arranged in a
face-centered cubic pattern (see Cundall and Strack 1979). The test conditions and procedures
are similar to those of Rowes experimental laboratory experiment (Rowe 1962) on steel spheres,
to which the numerical results are compared.
The particles are assigned the following properties:
density
normal contact stiffness
shear contact stiffness
friction coefficient

2000
1.5 109
1.5 109
0.12278
20

[M/L3 ]
[M/T2 ]
[M/T2 ]
(7o )
[L]

## The confining pressure 2 has a magnitude of 5.0 104 [M/(LT2 )].

8.2 Experimental Data
Rowes triaxial sample is formed by a regular assembly of alternate layers of rigid balls. The layers,
octogonal in shape, are large or small with four or three balls per hexagon side, respectively. The
large layers at the extremities of the assembly are in contact with the end-platens which serve to
transmit the axial load to the balls. A rubber membrane is stretched around the outside of the
sample, and a vacuum is applied within the sample to generate the confining pressure 2 . The
sample is loaded by an axial stress 1 , and experimental values of the stress ratio
R=

1
2

(8.1)

## PFC 3D Version 3.0

8-2

Example Applications

## 8.3 PFC 3D Model

The geometry of the model is similar to Rowes ball assembly (see Figure 8.1). It consists of 13
large and 12 small layers (see Figures 8.2 and 8.3). A large layer contains 76 particles, and a small
one has 57, for a total of 1672 balls. A system of coordinate axes is selected with its origin at the
center of the bottom layer and the z-axis pointing to the center of the top layer.
The numerical experiment, which resembles a laboratory triaxial test with constant confining pressure and strain-controlled platens, consists of a compaction phase followed by a loading phase.
In the compaction phase, the velocity of the particles in the top and bottom layers is fixed at the
value zero, the friction coefficient is set at a low value, 1.0 105 , the confining pressure is applied
using the technique described below, and the model is cycled to equilibrium.
The rubber membrane is approximated by the ideal membrane represented in Figure 8.4, assumed
to be in contact with the boundary particles in the large layers only. Each large-layer boundary
ball is assigned a portion of the ideal membrane, delimited by dotted lines on the figure. The force
resulting from the application of the confining pressure on a membrane portion is evaluated and
applied to the corresponding ball, which is also prevented from rotating. (It is believed that the
rubber membrane used by Rowe has similarly constrained the physical assembly.) The applied
force components may be expressed as follows

Fx = Lx Lz 2
Fy = Ly Lz 2

(8.2)

## where Lx , Ly and Lz are the exposed lengths defined in Figure 8.4.

In the loading phase, the friction coefficient is set to the value of 0.12278 measured by Rowe in
his experiment, the confining pressure is kept constant, and the upper and lower layers are moved
toward each other at a constant velocity of magnitude 0.01 [L/T].
The numerical value of 1 is calculated by dividing the sum of the reaction forces at the center of
the balls in the top layer by the area outlined in Figure 8.5. The stress ratio R is then evaluated using
Eq. (8.1). The axial strain 1 is computed by dividing twice the magnitude of the displacement of
the bottom layer by the initial vertical distance between corresponding particle centers of top and
bottom layers. The values of R and 1 are monitored during cycling.

8-3

## 8.4 Results and Discussion

The results of the numerical experiment are presented in Figure 8.6. Also represented are two
available measures obtained experimentally by Rowe. The relative difference between numerical
and experimental values does not exceed 1.5%.
The use of fixed forces to represent the boundary pressure is only valid for small strains and
displacements, since the actual forces will vary as the geometry changes. The numerical experiment
is interrupted beyond a certain stage where the deformations become sufficiently large to make the
approximate method of applying the confining pressure unrealistic.
The data file ROWE.DAT was used to produce the numerical solution. In this file, various FISH
functions are invoked to generate large and small layers, apply confining pressure and calculate
stress ratio and axial strain.
8.5 References
Cundall, P. A., and O. D. L. Strack. The Distinct Element Method as a Tool for Research in
Granular Media, Part II, University of Minnesota, Dept. of Civil and Mineral Engineering, Report
to National Science Foundation, Grant ENG76-20771, 1979.
Rowe, P. W. The Stress Dilatancy Relation For Static Equilibrium of an Assembly of Particles in
Contact, Proc. Royal Society, 269(1339), 500-527 (1962).

## PFC 3D Version 3.0

8-4

Example Applications

Figure 8.1

Figure 8.2

Figure 8.3

8-5

## PFC 3D Version 3.0

8-6

Example Applications

Lx=R
Ly=2R

Lx=2R
Ly=2R
Lx=2R
Ly=R

Lx=0
Ly=2R
y

Lx=2R
Ly=0

## (a) large layer exposed horizontal lengths

h= 2R

x
(b) large layer exposed vertical lengths

Figure 8.4

Figure 8.5

8-7

## Area used in calculation of axial load

PFC3D 3.00
Step 17000 13:55:23 Wed Mar 12 2003

2.4

History
3 rsr (FISH Symbol)
Linestyle
8.278e-001 <-> 2.391e+000

2.2

Vs.
2 e1 (FISH Symbol)
1.575e-004 <-> 2.914e-002

Table
1 UnNamed
Linestyle
2.300e+000 <-> 2.400e+000

2.0

1.8

1.6

1.4

1.2

1.0

0.8

0.6

0.4

0.2

0.0
0.0
Itasca Consulting Group, Inc.
Minneapolis, MN USA

Figure 8.6

0.5

1.0

1.5
x10^-2

2.0

2.5

3.0

results

## PFC 3D Version 3.0

8-8

Example Applications

## 8.6 Listing of Data Files

Example 8.1 ROWE.DAT
; FNAME: rowe.dat
;
; Numerical simulation of Rowe laboratory test
; Copyright Itasca Consulting Group
;
def c_rowe
; geometrical constants
; --- input--radb = 20
nls = 4
; # balls on side of large hexagon
n_sl = 12
; # small layers
conf_p = 5.e4
; lateral pressure
pzvel = 0.
; applied velocity
mzvel = 0.
; --- calculation--lc = 3. * radb * (nls - 1.)
; half length of large
;
(x,y)-square side
nlc = 3 * nls - 2
; # ball on large (x,y)-square side
sc = (nlc - 2) * radb
nau = 2 * (nls - 1)
hz = sqrt(2) * radb
; vertical distance between layers
numid = 0
zmin = hz * 0.5
zmax = (2 * n_sl - 0.5) * hz
zhi = 2. * zmax
llim = (nls - 2) * radb
l1
= (nls - 1) * radb * 2.
area = 2. * (l1 * lc + (lc + l1 * 0.5) * (lc - l1 * 0.5))
height = 2. * n_sl * hz
verdis = 0.
end
; --- generate large layer of balls
def g_large
yb = -lc
loop i (1,nlc)
xb = -lc
loop j (1,nlc)
if i < nls
if j > nls - i
if j < nau + i + 1
numid = numid + 1
command
ball id numid x xb y yb z zb rad radb

## TRIAXIAL TEST ON A FACE-CENTERED CUBIC ARRAY OF RIGID PARTICLES

8-9

end_command
end_if
end_if
else
if i > nau + 1
inv = i - nau - 1
if j > inv
if j < nlc - inv + 1
numid = numid + 1
command
ball id numid x xb y yb z zb rad radb
end_command
end_if
end_if
else
numid = numid + 1
command
ball id numid x xb y yb z zb rad radb
end_command
end_if
end_if
xb = xb + radb * 2.
end_loop
yb = yb + radb * 2.
end_loop
end
; --- generate small layer of balls
def g_small
yb = -sc
loop i (1,nlc-1)
xb = -sc
loop j (1,nlc-1)
if i < nls
if j > nls - i
if j < nau + i
numid = numid + 1
command
ball id numid x xb y yb z zb rad radb
end_command
end_if
end_if
else
if i > nau
inv = i - nau
if j > inv
if j < nlc - inv

## PFC 3D Version 3.0

8 - 10

Example Applications

numid = numid + 1
command
ball id numid x xb y yb z zb rad radb
end_command
end_if
end_if
else
numid = numid + 1
command
ball id numid x xb y yb z zb rad radb
end_command
end_if
end_if
xb = xb + radb * 2.
end_loop
yb = yb + radb * 2.
end_loop
end
; --- generate assembly of small and large layers --def g_pack
dz = hz / 4.
zb = 0
ninc = 0
loop k (1,n_sl)
g_large
z1 = zb - dz
z2 = zb + dz
command
ini c_index 0 range z z1 z2
end_command
zb = zb + hz
g_small
z1 = zb - dz
z2 = zb + dz
command
change c_index 1 range z z1 z2
end_command
zb = zb + hz
ninc = ninc + 1
end_loop
g_large
z1 = zb - dz
z2 = zb + dz
command
change c_index 0 range z z1 z2
end_command

## TRIAXIAL TEST ON A FACE-CENTERED CUBIC ARRAY OF RIGID PARTICLES

8 - 11

end
; --- apply confining pressure --def c_press
nump = 0
loop while bp # null
bid = b_id(bp)
xval = b_x(bp)
yval = b_y(bp)
zval = b_z(bp)
fac = 2. * hz * conf_p
if zval < zmin
fac = fac * 0.5
end_if
if zval > zmax
fac = fac * 0.5
end_if
if abs(yval) > lc - zmin then
if abs(xval) > llim then
fxval = -radb * sgn(xval) * fac
fyval = -radb * sgn(yval) * fac * 2.
nump = nump + 1
command
ini xforce fxval range id bid bid
ini yforce fyval range id bid bid
fix xspin yspin zspin range id bid bid
end_command
else
fxval = 0.
fyval = -radb * sgn(yval) * fac * 2.
nump = nump + 1
command
ini xforce fxval range id bid bid
ini yforce fyval range id bid bid
fix xspin yspin zspin range id bid bid
end_command
end_if
else
if abs(xval) > lc - zmin
if abs(yval) > llim then
fxval = -radb * sgn(xval) * fac * 2.
fyval = -radb * sgn(yval) * fac
nump = nump + 1
command
ini xforce fxval range id bid bid
ini yforce fyval range id bid bid

## PFC 3D Version 3.0

8 - 12

Example Applications

## fix xspin yspin zspin range id bid bid

end_command
else
fxval = -radb * sgn(xval) * fac * 2.
fyval = 0.
nump = nump + 1
command
ini xforce fxval range id bid bid
ini yforce fyval range id bid bid
fix xspin yspin zspin range id bid bid
end_command
end_if
else
line = -abs(xval) -abs(yval) + (nls + nlc - 2.) * radb - hz
if line < 0
fxval = -radb * sgn(xval) * fac * 2.
fyval = -radb * sgn(yval) * fac * 2.
nump = nump + 1
command
ini xforce fxval range id bid bid
ini yforce fyval range id bid bid
fix xspin yspin zspin range id bid bid
end_command
end_if
end_if
end_if
bp = b_next(bp)
end_loop
end
def check
loop while bp # null
xval = b_x(bp)
yval = b_y(bp)
zval = b_z(bp)
xapp = b_xfap(bp)
yapp = b_yfap(bp)
zapp = b_zfap(bp)
command
print xval yval zval
print xapp yapp zapp
end_command
bp = b_next(bp)
end_loop
end
def stress_rat

## TRIAXIAL TEST ON A FACE-CENTERED CUBIC ARRAY OF RIGID PARTICLES

8 - 13

while_stepping
f1 = 0.
loop while bp # null
if b_z(bp) > zmax
f1 = f1 + b_zfob(bp)
end_if
bp = b_next(bp)
end_loop
rsr = f1 / (area * conf_p)
end
def strain_mes
while_stepping
verdis = verdis + pzvel * tdel
e1 = 2. * verdis / height
end
def c_t
c_t = tdel
end
; --- generate geometrical constants--c_rowe
; --- create ball assembly --g_pack
; --- property set up --ini den 2000 kn 1.5e9 ks 1.5e9
; --- fix top and bottom layers --fix z range z 0 zmin
fix z range z zmax zhi
;--- compaction phase --ini fric 1e-5
ini zvel 0. range z 0 zmin
ini zvel 0. range z zmax zhi
c_press
cyc 600
; --- histories --hist c_t
hist e1
hist rsr
set log on
; --- loading phase --set hist_rep 100
set pzvel 0.01
set mzvel -0.01
ini fric 0.12278
; 7 degrees
ini zvel pzvel range z 0 zmin
ini zvel mzvel range z zmax zhi

## PFC 3D Version 3.0

8 - 14

Example Applications

cyc 16400
save rowe.sav
hist dump 1,2,3
his write 1,2,3 file rowe.his
;
table 1 0.8e-2,2.4 2.8e-2,2.3 ; experimental data
plot create his_plot
plot add his 3 vs 2 xmin=0.0 xmax=3.0e-2 ymin=0 ymax=2.5
plot add table 1 red mark xmin=0.0 xmax=3.0e-2 ymin=0 ymax=2.5
plot show
;
return
; EOF: rowe.dat