You are on page 1of 58

LIBRARY OF FISH FUNCTIONS 3-1

3 LIBRARY OF FISH FUNCTIONS

This section contains a library of FISH functions that have been written for general application in
UDEC analysis. The functions can be used for various aspects of model generation and solution,
including generation, plotting, assigning material properties and solution control.
The FISH function files are contained in file “FISH.ZIP” in compressed format in the “FISHBOWL”
directory. Individual files can be decompressed by typing the command
pkunzip fish filename.fis

in which filename corresponds to one of the filenames described on the following pages.
The general procedure to implement these FISH functions is performed in three steps.
1. The FISH file is first called by the UDEC data file with the command
call filename.fis

2. Next, FISH variables, if given at the top of the function file, must be set in the data file
with the command
set var1 = value var2 = value ...
where var1, var2, etc. are the variable names that must be set to specified values.

3. Finally, the FISH function is invoked by entering the function name that follows directly
after the DEF command in the FISH file. The name does not have to be given if a fishcall
is used within the file.

The FISH functions interact with UDEC in various ways. You should turn to Section 2.2.3 for a
description of the different types of linkages between FISH and UDEC.

UDEC Version 4.0


3-2 FISH in UDEC

Table 3.1 General utility FISH functions

Filename Command Purpose Variables SET Other .150 Function


(.FIS) before use Required (.FIS)

BOUNB bounb finds boundary blocks

BOUNG boung finds boundary gridpoints

BOUNZ bounz finds boundary zones

PRSTRUC pr_struc prints selected structural


b_space
element variables

PS3D ps3d computes 3D principal stresses

set_zero
SPEED speed
calculates speed of calculations
on your computer

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS 3-3

Table 3.2 Plotting FISH functions

Filename Command Purpose Variables SET Other .150 Function


(.FIS) before use Required (.FIS)

calculates displacement magnitude


DISPMAG disp_mag
at grid point to generate contour plot

history qs calculates stress points p and q x_zone


PQ history ps to generate a p-q diagram y_zone

UDEC Version 4.0


3-4 FISH in UDEC

Table 3.3 Solution control FISH functions

Filename Command Purpose Variables SET Other .150 Function


(.FIS) before use Required (.FIS)

high_unbal
control to minimize inertial low_unbal
SERVO servo
response to applied conditions high_val
zonk gradually extracts region of
ZONK relax zones to simulate excavation

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS 3-5

Table 3.4 Special purpose FISH functions

Filename Command Purpose Variables SET Other .150


(.FIS) before use Function
Required
(.FIS)

DER derivative finds the derivative of a table


der_in der_out
of values

erf finds the error function of e_val e_val


ERFC e_val
erfc complimentary error

EXPINT exp_int finds the exponential integral


e_val
of e_val

FFT fftransform finds the fast Fourier transform


fft_in fft_out
power spectrum of a table of values

c_x1
FROOT froot finds the root of a function c_x2
bracketed in an interval func
val

INT integrate finds the integral value of a


int_in int_out
table of values

LUDA ludcmp solves systems of equations using


int_in int_out
LU-decomposition

acc_in sd_out
spectrum sv_out sa_out
SPEC finds the response spectrum
of an accelerogram pmin pmax
damp n_point

UDEC Version 4.0


3-6 FISH in UDEC

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS BOUNB.FIS/BOUNG.FIS/BOUNZ.FIS - 1

Finding Boundary Blocks, Gridpoints and Zones


It is often useful to identify which blocks, gridpoints or zones lie along the external boundary or
internal boundaries of a model. This allows the user to perform operations on these gridpoints or
zones directly, rather than search the entire grid whenever these entities must be identified. For
example, it may be necessary to monitor tunnel closure or calculate stresses and displacements at
the outer boundary.
Three FISH functions, bounb, boung and bounz, which identify gridpoints or zones which
lie along external or internal boundaries, are available. When “BOUNB.FIS,” “BOUNG.FIS” or
“BOUNZ.FIS” is called, the addresses, gridpoints or zones that are on a boundary are printed.
Note: If blocks have only two zones, bounz may report extra zones on boundary in the corners.
In the example data file “BOUN.DAT,” boundary blocks are identified using “BOUNB.FIS.”
Data File “BOUNG.DAT”
new
block 0 0 0 9 9 9 9 0
split 0 3 9 3
split 0 6 9 6
split 3 0 3 9
split 6 0 6 9
delete 3 6 3 6
gen quad 10
; force the generation of the boundary corner list
bound stress 0,0,0
; force the generation of the interior boundary corner list
boun int stress 0,0,0
;
; Find gridpoints on boundaries
;ca boung.fis
;boung
;
; Find zones on boundaries
;ca bounz.fis
;bounz
;
; Find blocks on boundaries
ca bounb.fis
bounb
ret

UDEC Version 4.0


BOUNB.FIS/BOUNG.FIS/BOUNZ.FIS - 2 FISH in UDEC

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS DER.FIS - 1

Finding the Derivative of a UDEC Table


The FISH file “DER.FIS” integrates the values of a table and returns another table. The input table
is specified with the der in argument, and the output table is specified with the der out argument.
The function calculates the slopes between points in the input table and locates the value midway
between the points on the output table. Therefore, there will be n-1 points in the resulting table if
there are n points in the source table.
Figure 1 shows the result of taking the derivative of a simple cosine wave. Table 1 is the input data,
and Table 2 is the output. The input data are read using the TABLE 1 read test01.his command to
copy the data into a table.

Data File “DER.DAT”


new
title
Example of DERIVATIVE FISH function
table 1 read test01.his
;
ca der.fis
;
set der in 1 der out 2
derivative
;
plot hold table 1 2

JOB TITLE : Example of DERIVATIVE FISH function

UDEC (Version 4.00)


1.00

LEGEND 0.80

18-Aug-04 9:57
cycle 0 0.60
time 0.000E+00 sec
0.40
table plot
-1.00E+00<tab 1> 1.00E+00
-1.00E+00<tab 2> 1.00E+00 0.20
Vs.
0.00E+00<X value> 1.88E+01
0.00

-0.20

-0.40

-0.60

-0.80

-1.00
0.00 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60 1.80 2.00
Itasca Consulting Group, Inc. (e+001)
Minneapolis, Minnesota USA

Figure 1 Derivative of a UDEC table (table 1 is a cosine wave; table 2 is


the derivative)

UDEC Version 4.0


DER.FIS - 2 FISH in UDEC

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS DISPMAG.FIS - 1

Plotting Displacement Magnitude Contours


The user may write a function to calculate a special grid variable for plotting. For example, when
the function disp mag is invoked, the displacement magnitudes are calculated at all gridpoints in
the model and stored in the FISH grid variable gp free. This array can then be plotted with the
PLOT command. By typing
plot gp free fill alias ’displacement magnitude’

a filled contour plot will be generated. Note that this function requires that one extra grid variable
be designated via the CONFIG extra command. The keyword alias is added to rename ex 1 to
displacement magnitude in the plot legend. Figure 1 shows the plot.

Data File “DISPMAG.DAT”

block 0 0 0 20 20 20 20 0
crack 0 3 20 3
gen quad 4
bound yvel 0.0 range 0 20 -.1 .1
prop mat 1 dens 1000 bulk 2e8 shear 1e8
prop jmat 1 jkn 1.33e7 jks 1.33e7 jfric 30.0
set grav 0 -10
damp auto
cyc 100
call dispmag.fis
disp mag
plot hold gp free fill alias ’displacement magnitude’
ret

UDEC Version 4.0


DISPMAG.FIS - 2 FISH in UDEC

JOB TITLE : Example of DERIVATIVE FISH function (*10^1)

UDEC (Version 4.00)

LEGEND 1.800

18-Aug-04 9:58
cycle 100
time 1.433E-01 sec
1.400
boundary plot
displacement magnitude
contour interval= 1.000E-03
1.000E-03 to 9.000E-03

1.000E-03 1.000
2.000E-03
3.000E-03
4.000E-03
5.000E-03
6.000E-03
0.600
7.000E-03
8.000E-03
9.000E-03

0.200

Itasca Consulting Group, Inc.


Minneapolis, Minnesota USA
0.200 0.600 1.000 1.400 1.800
(*10^1)

Figure 1 Contours of displacement magnitude

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS ERFC.FIS - 1

Error Function and Complementary Error Function


The file “ERFC.FIS” contains two FISH functions that calculate the error function:

 x
2
e−t dt
2
erf(x) = √
π 0

and complementary error function

 ∞
2
e−t dt
2
erfc(x) = √
π x

of a real variable x using the rational approximation in section 7.1.26 in Abramowitz and Stegun
(1970). The error magnitude is less than 1.5 × 10−7 . The value of x is defined by e val; the
functions erf and erfc return the corresponding function value. The following data file plots
functions erf and erfc in the interval [0, 1.5].

Data File “ERFC.DAT”


new
title ’Error and Complementary Error Functions’
ca erfc.fis suppress
def plot erf
local dx = 1.5/20.
local e val = -dx
local ii
loop ii (1,21)
e val = e val + dx
xtable(1,ii) = e val
ytable(1,ii) = erf(e val)
xtable(2,ii) = e val
ytable(2,ii) = erfc(e val)
end loop
end
@plot erf

plot hold table 1 2


ret

UDEC Version 4.0


ERFC.FIS - 2 FISH in UDEC

Reference
Abramowitz, M., and I. A. Stegun. Handbook of Mathematical Functions. New York: Dover
Publications, Inc., 1970.

JOB TITLE : Error and Complementary Error Functions

UDEC (Version 4.00)


1.00

LEGEND

18-Aug-04 10:03
cycle 0 0.80
time 0.000E+00 sec

table plot
0.00E+00<tab 1> 9.66E-01
3.39E-02<tab 2> 1.00E+00 0.60
Vs.
0.00E+00<X value> 1.50E+00

0.40

0.20

0.00
0.00 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60
Itasca Consulting Group, Inc.
Minneapolis, Minnesota USA

Figure 1 Error and complementary error functions

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS EXPINT.FIS - 1

Exponential Integral Function


The file “EXPINT.FIS” contains a FISH function which calculates the exponential integral function

 ∞ e−t
E1 (x) = dt
x t

of a real and positive variable x, using polynomial approximations in sections 5.1.53 and 5.1.54 in
Abramowitz and Stegun (1970). The error magnitude is less than 2 × 10−7 for x ≤ 1, and less than
5 × 10−5 for x > 1.
The value of x is defined by e val, and the function exp int returns the corresponding value of
E1 . The following data file plots function E1 in the interval [0,1.6].

Data File “EXPINT.DAT”


new
title ’Exponential Integral Function’
ca expint.fis suppress
def plot e1
local dx = 1.6/20.
local e val = 0.
local ii
loop ii (1,20)
e val = e val + dx
xtable(1,ii) = e val
ytable(1,ii) = exp int(e val)
end loop
end
@plot e1
plot table 1
ret

Reference
Abramowitz, M., and I. A. Stegun. Handbook of Mathematical Functions. New York: Dover
Publications, Inc., 1970.

UDEC Version 4.0


EXPINT.FIS - 2 FISH in UDEC

JOB TITLE : Exponential Integral Function

UDEC (Version 4.00)


2.20

LEGEND 2.00

18-Aug-04 10:06 1.80


cycle 0
time 0.000E+00 sec
1.60
table plot
8.63E-02<tab 1> 2.03E+00 1.40
Vs.
8.00E-02<X value> 1.60E+00
1.20

1.00

0.80

0.60

0.40

0.20

0.00
0.00 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60 1.80
Itasca Consulting Group, Inc.
Minneapolis, Minnesota USA

Figure 1 Exponential integral function

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS FFT.FIS - 1

Finding the Fast Fourier Transform Power Spectrum of a UDEC Table


The FISH file “FFT.FIS” performs a Fast Fourier Transform on a table of data, resulting in a power
spectrum that is output to another table. The input table is specified by the first argument, and the
output table is specified by the second argument.
There are several definitions for a power spectrum. The one used here is adapted from Press et al.
(1992). The power spectrum is a set of N/2 real numbers defined as

1
P0 = ∗ (|f0 |)2 (1)
N2

1
Pk = 2
∗ [(|fk |)2 + (|fN −k |)2 ] (2)
N

1
PN = ∗ (|f N |)2 (3)
2 N2 2

where: N is half the number of points in the original data field;


P is the power spectrum output;
f is the result of the Fast Fourier Transform of the original data; and
N
k varies from 0 to 2.

Note that an array, worka, is used to manipulate the table data. The array dimension (n point)
is defined from the following conditions: (1) to be greater than the number of elements in the input
table; and (2) to be a power of 2. (The array dimension need not be declared manually.) The fft
algorithm requires input data with a constant timestep. So, a timestep is calculated, and the data
are interpolated from the table and stored into the array for processing.
The following example verifies the fft FISH function. The history input is the sum of a sine wave
at 1 Hz and an amplitude of 1, a cosine wave at 5 Hz and an amplitude of 2, and a sine wave at 10 Hz
and an amplitude of 3. The combined history input is calculated by the FISH function cr tab.
The input is plotted in Figure 1. The power spectrum shown in Figure 2 consists of three sharp
peaks at 1, 5 and 10 Hz, with increasing peak values.

Reference
Press, W. H., B. P. Flannery, S. A. Teukolsky and W. T. Vetterling. Numerical Recipes in C.
Cambridge: Cambridge University Press, 1992.

UDEC Version 4.0


FFT.FIS - 2 FISH in UDEC

Data File “FFT.DAT”

new
;
table 1 read test02.his
;
ca fft.fis
;
set fft in 1 fft out 2
fftransform
;
pl hold tab 1
pl hold tab 2

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS FFT.FIS - 3

JOB TITLE :

UDEC (Version 4.00)


6.00

LEGEND

18-Aug-04 10:08 4.00


cycle 0
time 0.000E+00 sec

table plot
2.00
-5.38E+00<tab 1> 5.47E+00
Vs.
1.17E-02<X value> 1.20E+01

0.00

-2.00

-4.00

-6.00
0.00 0.20 0.40 0.60 0.80 1.00 1.20 1.40
Itasca Consulting Group, Inc. (e+001)
Minneapolis, Minnesota USA

Figure 1 Sum of three input waves

JOB TITLE :
(e+001)
UDEC (Version 4.00)
1.00

LEGEND 0.90

18-Aug-04 10:08
cycle 0 0.80
time 0.000E+00 sec
0.70
table plot
0.00E+00<tab 2> 9.00E+00
Vs. 0.60
0.00E+00<X value> 2.13E+01

0.50

0.40

0.30

0.20

0.10

0.00
0.00 0.40 0.80 1.20 1.60 2.00 2.40
Itasca Consulting Group, Inc. (e+001)
Minneapolis, Minnesota USA

Figure 2 Power spectrum; power versus frequency in Hz

UDEC Version 4.0


FFT.FIS - 4 FISH in UDEC

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS FROOT.FIS - 1

Root of a Function in an Interval


The file “FROOT.FIS” contains a FISH function that calculates the root of a function f (x), known
to lie in the interval [a, b], using Brent’s method algorithm (Numerical Recipes, 1986).
The FISH function func must be specified. It returns the value of f for the argument x defined
by c x. The interval bounds a and b are assigned using c x1 and c x2, respectively. The root,
returned as froot, is refined until its accuracy is tol.
The following data file plots the function f (x) = tan x − x and marks its root located in the interval
[ π2 , 3π
2 ].

Reference
Press, W. H., B. P. Flannery, S. A. Teukolsky and W. T. Vetterling. Numerical Recipes: The Art
of Scientific Computing (FORTRAN Version). Cambridge: Cambridge University Press, 1986.

Data File “FROOT.DAT”

title
Root of a function in an interval
ca froot.fis
def func
func = tan(c x0) - c x0
end
def itis root
; find the root of function func
; in the interval ] pi/2, 3pi/2 [
; with accuracy tol
c x1 = 1.01 * pi/2.
c x2 = 0.99 * 3.*pi/2.
tol = 1.e-4
plot func
root = froot
c x0 = root
xtable(2,1) = root
ytable(2,1) = func
end
def plot func
; calculate func at 20 points in the interval and
; store the values in table 1
dx = (c x2 - c x1)/20.
c x0 = c x1
loop ii (1,20)
c x0 = c x0 + dx
xtable(1,ii) = c x0

UDEC Version 4.0


FROOT.FIS - 2 FISH in UDEC

ytable(1,ii) = func
end loop
end
itis root
plot hold table 1 line 2 cross
ret

JOB TITLE : Root of a function in an interval


(e+001)
UDEC (Version 4.00)
2.00

LEGEND
1.60
18-Aug-04 10:11
cycle 0
time 0.000E+00 sec
1.20
table plot
-7.58E+00<tab 1> 1.65E+01
1.32E-04<tab 2> 1.32E-04 X X X
Vs. 0.80
1.74E+00<X value> 4.67E+00

0.40

0.00

-0.40

-0.80
1.50 2.00 2.50 3.00 3.50 4.00 4.50 5.00
Itasca Consulting Group, Inc.
Minneapolis, Minnesota USA

Figure 1 Function and its root in an interval

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS HOEK.FIS - 1

Adapting the Mohr-Coulomb Model to a Hoek-Brown Failure Surface


The FISH routines in “HOEK.FIS” adapt the Mohr-Coulomb model in UDEC to approximate the
nonlinear failure surface for a Hoek-Brown material (Hoek and Brown 1982). The Hoek-Brown
failure criterion is based on a nonlinear relation between major and minor principal stresses, σ1 and
σ3 :


σ1 = σ3 − −σ3 σc m + σc2 s (1)

where σc is the unconfined compressive strength of the intact rock, m and s are material constants
of the rock mass, and compressive stresses are negative (UDEC convention).
For a given value of σ3 , a tangent to the function (Eq. (1)) will represent an equivalent Mohr-Coulomb
yield criterion in the form:

σ1 = Nφ σ3 − σcM (2)

where Nφ = 1+sin φ
1−sin φ = tan2 ( φ2 + 45◦ ).

By substitution, σcM is:

σcM = σ1 + σ3 Nφ

= −σ3 + −σ3 σc m + σc2 s − σ3 Nφ

= −σ3 (1 − Nφ ) + −σ3 σc m + σc2 s (3)

σcM is the apparent uniaxial compressive strength of the rock mass for that value of σ3 .
The tangent to the function (1) is defined by

∂σ1 σc m
Nφ (σ3 ) = = 1 +  (4)
∂σ3 2 −σ3 · σc m + s σc2

The cohesion (c) and friction angle (φ) can then be obtained from Nφ and σcM :

UDEC Version 4.0


HOEK.FIS - 2 FISH in UDEC


φ = 2 tan−1 Nφ − 90◦ (5)

σM
c = c (6)
2 Nφ

The comparison of the Mohr-Coulomb linear approximation to the Hoek-Brown yield surface is
shown in the figure. These equivalent c and φ are a good approximation of the nonlinear yield
surface for values of the minor principal stress that are close to the given σ3 . The FISH function
cfi calculates the value of c and φ for each zone every ns steps. Thus, as σ3 changes, the values
of c and φ will also change. It is noted that the instantaneous values of c and φ calculated in this
way closely match those calculated using Hoek’s (1990) expressions based on normal and shear
stress.
Hoek and Brown (1982) also define constants mr and sr for properties of a broken rock mass. If
failure occurs, m and s are changed to mr and sr to represent sudden post-failure response. A
progressive strain-softening behavior could be modeled by replacing the Mohr-Coulomb model
with the strain-softening model.
The Hoek-Brown parameters, σc , m, s, mr and sr are set in “HOEK.FIS” via the variables hb sc,
hb mmi, hb ssi, hb mmr and hb ssr, respectively, through the SET command. The FISH
function, cfi, is called to update cohesion, friction and tension variables in the Mohr-Coulomb
model. The dilation angle may be specified using the variable hoek psi (use hoek psi = f i for
an associated flow rule — see example below). Note that, if σ3 becomes tensile, the yield surface
remains linear with the slope Nφ (σ3 ) defined at σ3 = 0.
The user controls the update process by specifying ns and nsup through the SET command. ns
defines the number of steps taken before cfi is called to update properties. nsup defines the total
number of times cfi is to be called. ns × nsup corresponds to the total number of steps in the
UDEC run. The default for ns, if not specified, is 5. This may require variation depending on the
nonlinearity of the failure surface.
A triaxial compression test on a Hoek-Brown material sample is provided below as an example
application of this routine. The test is strain-controlled, and an associated flow rule is selected, for
the numerical simulation.

References
Hoek, E. “Estimating Mohr-Coulomb Friction and Cohesion Values from the Hoek-Brown Failure
Criterion,” Int. J. Rock Mech. Min. Sci. & Geomech. Abstr., 27(3), 227-229 (1990).
Hoek, E., and E. T. Brown. Underground Excavations in Rock. London: IMM, 1982.

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS HOEK.FIS - 3

Figure 1 Linear approximation of the Hoek-Brown failure criterion

Data File “HOEK.DAT”


new
title
Triaxial test on a Hoek-Brown material

round = .001
block 0 0 0 2.2 0.5 2.2 0.5 0
gen quad .2
zone model mohr
bound stress -5 0 0 range .499 5.01 -.1 2.3
bound xvel 0.0 range -.01 .01 0 20
bound yvel .05 range 0 .5 -0.1 0.1
bound yvel -.05 range 0 .5 2.19 2.21
zone bulk 666.67 shear 400 tension 1e10
prop mat 1 dens 2e-3
prop jmat 1 jkn 133 jks 133
insitu stress -5 0 -5 szz -5
hist syy .25 1.1
label hist 1
YY - Stress
hist sxx .25 1.1
label hist 2

UDEC Version 4.0


HOEK.FIS - 4 FISH in UDEC

XX - Stress
hist szz .25 1.1
hist ydisp 0 2.2
label hist 4
Y - Displacement
hist xdisp 1.0 1.1

call block.fin
call zmat.fin
call hoek.fis
def hoek psi
hoek psi = fi ;associated flow rule
end

set hb mmi=1.0 hb mmr=1.0


set hb ssi=0.00753 hb ssr=0.00753
set hb sc=50.0
set nsup= 1200 ns=10 ; note, UDEC will cycle nsup*ns times

supsolve

plot hold his 1 2 vs -4


plot hold bou disp
ret
JOB TITLE : Triaxial test on a Hoek-Brown material
(e+001)
UDEC (Version 4.00)
-0.40

LEGEND
-0.60
18-Aug-04 10:13
cycle 12000
-0.80
time 6.762E-01 sec

history plot
-1.00
YY - Stress
XX - Stress
Vs.
-1.20
0.00E+00<time> 6.76E-01

-1.40

-1.60

-1.80

-2.00

-2.20
0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00
Itasca Consulting Group, Inc. (e-001)
Minneapolis, Minnesota USA

Figure 2 Stresses versus top vertical displacement

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS HOEK.FIS - 5

JOB TITLE : Triaxial test on a Hoek-Brown material


2.200
UDEC (Version 4.00)

LEGEND

1.800
18-Aug-04 10:13
cycle 12000
time 6.762E-01 sec

boundary plot
displacement vectors 1.400
maximum = 4.508E-02

0 2E -1
1.000

0.600

0.200

Itasca Consulting Group, Inc.


Minneapolis, Minnesota USA
-0.600 -0.200 0.200 0.600 1.000 1.400

Figure 3 Displacement vectors at end of simulation

UDEC Version 4.0


HOEK.FIS - 6 FISH in UDEC

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS INT.FIS - 1

Finding the Integral of a UDEC Table


The FISH file “INT.FIS” integrates the values of a table and returns another table. The ID number
of the input table is the first argument, and the output table is the second argument. If the new
output table already exists, all data points in it will be deleted and overwritten with the new values.
If the output table does not exist, one is created.
The function integrates using the trapezoidal rule, with the same number of points in the result
tables as are in the source tables. The function assumes an integration constant of zero.
The figure shows the result of a simple cosine wave integration. Table 1 is the input data, and Table
2 is the output data. The input data are read using the cr tab function to create the data and copy
it into a table.

Data File “INT.DAT”

new
title
Example of INTEGRATE FISH function
;
table 1 read test01.his
;
ca int.fis
;
set int in 1 int out 2
integrate
;
plot hold table 1 2

UDEC Version 4.0


INT.FIS - 2 FISH in UDEC

JOB TITLE : Example of INTEGRATE FISH function

UDEC (Version 4.00)


1.00

LEGEND 0.80

18-Aug-04 10:16
cycle 0 0.60
time 0.000E+00 sec
0.40
table plot
-1.00E+00<tab 1> 1.00E+00
-1.00E+00<tab 2> 1.00E+00 0.20
Vs.
0.00E+00<X value> 1.88E+01
0.00

-0.20

-0.40

-0.60

-0.80

-1.00
0.00 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60 1.80 2.00
Itasca Consulting Group, Inc. (e+001)
Minneapolis, Minnesota USA

Figure 1 Simple cosine wave integration

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS LUDA.FIS - 1

Matrix Inversion via LU-Decomposition


A pair of FISH functions, ludcmp and lubksb, can be used to solve the system of equations,

Ax = b (1)

where A is a given square matrix of size n, b is a given vector of size n, and x is the desired solution
vector of size n. The FISH function ludcmp performs an LU-decomposition on the matrix A. The
FISH function lubksb performs the back-substitution operation to produce the solution vector x.
Both of these functions implement the algorithm described in Press et al. (1986).
An example problem demonstrating the use of the two FISH functions is provided in the data file
below. The size of the matrix is passed as an argument to make random data.
Reference
Press, W. H., B. P. Flannery, S. A. Teukolsky and W. T. Vetterling. Numerical Recipes: The Art
of Scientific Computing (FORTRAN Version). Cambridge: Cambridge University Press, 1986.

Data File “LUDA.DAT”


new

; Test LU-decomposition FISH functions on random matrices.


;
new
def luda setup
lu nn = 8 ; define dimensions of matrices
end
;
luda setup
;
def make random data
array aa(lu nn,lu nn) indx(lu nn) bb(lu nn) ; needed by LUDA functions
array xx(lu nn) ; just used locally
;--- fill aa for test
loop i (1,lu nn)
loop j (1,lu nn)
aa(i,j) = urand
end loop
end loop
;--- set "unknowns"
loop i (1,lu nn)
xx(i) = float(i)
xtable(1,i) = float(i)
ytable(1,i) =xx(i)

UDEC Version 4.0


LUDA.FIS - 2 FISH in UDEC

end loop
;--- multiply by matrix to get r.h.s.
loop i (1,lu nn)
sum = 0.0
loop j (1,lu nn)
sum = sum + aa(i,j) * xx(j)
end loop
bb(i) = sum
ii = out(’ b(’+string(i)+’) = ’+string(sum))
end loop
end;--- look at results ---
def look
loop i (1,lu nn)
xtable(2,i) = float(i)
ytable(2,i) = bb(i)
ii = out(’ x(’+string(i)+’) = ’+string(bb(i)))
end loop
end
;
call luda.fis ; support functions for LU-decomposition
;
set log on
make random data ; Right-hand sides ...
ludcmp
lubksb
look ; Following list should correspond to original vector of x values
; ===================================================================
label table 1
Set values
label table 2
Calculated values
pl tab 1 2 cross
return

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS LUDA.FIS - 3

JOB TITLE :

UDEC (Version 4.00)


9.00

LEGEND
8.00
18-Aug-04 10:18
cycle 0
time 0.000E+00 sec 7.00

table plot
Set values
Calculated values XXX 6.00
Vs.
1.00E+00<X value> 8.00E+00
5.00

4.00

3.00

2.00

1.00
1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00
Itasca Consulting Group, Inc.
Minneapolis, Minnesota USA

Figure 1 Comparison of “unknowns”

UDEC Version 4.0


LUDA.FIS - 4 FISH in UDEC

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS PQ.FIS - 1

P-Q Stress Diagram


Often, the user may wish to print or plot problem variables that are not directly accessible through
the UDEC HISTORY command. It is quite simple for the user to write a FISH function which will
calculate the desired variable directly in UDEC.
The data file “PQ.DAT” illustrates the use of FISH to calculate the stress point p,q and plot a p-q
diagram via the HISTORY and PLOT commands. The generalized stress components p and q are
expressed in terms of principal stresses, as follows:

1
p = − (σ1 + σ2 + σ3 )
3
1
q = √ (σ1 − σ2 )2 + (σ2 − σ3 )2 + (σ1 − σ3 )2 (1)
2

Note that p is an effective pressure, defined in terms of the effective principal stresses.

Data File “PQ.DAT”

block 0 0 0 20 10 20 10 0
gen quad 4
call pq.fis
set x zon = 2.5
set y zon = 10.0
bound xvel 0.0 range -.01 .01 0 20
bound yvel 0.01 range 0 10 -.1 .1
bound yvel -0.01 range 0 10 19.9 20.1
prop mat 1 dens 2000 bulk 2e8 shear 1e8
prop jmat 1 jkn 1.33e7 jks 1.33e7 jfric 30.0
damp auto
hist qs
hist ps
cyc 100
bound yvel 0.0 range 0 10 -.1 .1
bound yvel 0.0 range 0 10 19.9 20.1
bound xvel -.01 range 9.9 10.1 -.1 20.1
cyc 300
plot hold his 1 vs his 2
ret

UDEC Version 4.0


PQ.FIS - 2 FISH in UDEC

JOB TITLE :
(e+005)
UDEC (Version 4.00)
1.20

LEGEND

18-Aug-04 10:19 1.00


cycle 400
time 8.165E-01 sec

history plot
0.80
0.00E+00<hist 1> 1.08E+05
Vs.
0.00E+00<time> 8.16E-01

0.60

0.40

0.20

0.00
0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00
Itasca Consulting Group, Inc. (e-001)
Minneapolis, Minnesota USA

Figure 1 p-q plot

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS PRSTRUC.FIS - 1

Printing Selected Structural-Element Variables


The user can select specific variables to be printed from a UDEC model even though they may not
be directly available from the PRINT command. This can be done by accessing the data structure in
UDEC directly, as described in Section 4. For example, the user may wish to print maximum and
minimum stresses associated with structural elements for the case of structural elements installed
on a regular spacing in the out-of-plane direction. The structural element variables stored by UDEC
are scaled axial, shear forces and moments. In order to determine the actual forces and moments
in the beams, the UDEC forces and moments must be multiplied by the spacing. Actual axial
stresses are then derived using actual moment of inertia and area of the beam cross-section. (See
Section 1.5.1 in Special Features for further discussion on scaling a 2D UDEC model to simulate
a 3D problem with regularly spaced structural elements.)
The FISH function “PRSTRUC.FIS” calculates the actual extreme values of axial stresses at the
midpoint of beams, assuming a regular spacing defined by b space, and a cross-sectional height
specified by b height. (Note that the beam formulation in UDEC assumes a linear variation of
moment along the beam element.) The function calls the file “STR.FIN” to access values in the
offsets associated with the structural-element data structure. The file is contained in the “\FISH\4-
ProgramGuide” directory. The actual minimum and maximum axial stresses for each beam element
are then printed in a list.
The following data file illustrates the application of “PRSTRUC.FIS.”

Data File “PRSTRUC.DAT”

round 0.05
block -8 -8 -8 8 8 8 8 -8
crack -3 -8 -3 8
crack 3 -8 3 8
crack -8 3 8 3
crack -8 -3 8 -3
del -3 3 -3 3
crack -1 3 1.5 8
crack 1 3 -1.5 8
fix -8 8 -8 0
fix -8 8 5 8
; rock properties
prop m=1 d=0.0027 k=2e3 g=1e3 jkn=1e4 jks=1e4 jfric=10 jcoh=0 jtens=0
;
; structural liner properties
struct gen xc 0 yc 0 np 20 thick 0.1 mat 10
prop mat=10 st d=0.000025
prop mat=10 st ymod=210000 st prat=0.15
prop mat=10 st yield=40 st yresid=40 st ycomp 40
prop mat=10 if kn=1e4 if ks=1e4 if tens=0 if fric=50 if coh=0
;

UDEC Version 4.0


PRSTRUC.FIS - 2 FISH in UDEC

; gravity load
set grav 0 -10
;
hist unbal
hist ydis 0 3
hist yvel 0 3
;
; Case 1 : elastic analysis
step 3000
set echo off
call prstruc.fis
set echo on
set b space 5 b height=0.5
set log pr struc.log
set log on
pr struc
set log off
ret
;
win -3.5 3.5 -.5 6.5
save wedge1.sav
plot block struct mom yrev fill disp
;
; Case 2 : yield strength = residual strength = 18 MPa
prop mat=10 st yield=18 st ycomp=40 st yresid=18
step 30000
save wedge2.sav
plot block struct mom yrev fill disp
;
; Case 3 : yield strength = 18 MPa residual strength = 16.7 MPa
rest wedge1.sav
prop mat=10 st yield=18 st ycomp=40 st yresid=16.7
step 30000
win -3.5 3.5 -.5 6.5
plot block struct mom yrev fill disp
save wedge3.sav
;
; Case 4 : elastic analysis with double layer of liner
rest wedge0.sav
; structural liner properties
struct gen xc 0 yc 0 np 100 thick 0.1 mat 10
struct gen xc 0 yc 0 np 100 thick 0.1 mat 10
prop mat=10 st d=0.000025
prop mat=10 st ymod=21000 st prat=0.15
prop mat=10 st yield=40 st yresid=40 st ycomp 40
prop mat=10 if kn=1e4 if ks=1e4 if tens=0 if fric=50 if coh=0

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS PRSTRUC.FIS - 3

;
; gravity load
set grav 0 -10
;
hist unbal
hist ydis 0 3
hist yvel 0 3
;
step 30000
win -3.5 3.5 -.5 6.5
save wedge4.sav
plot hold block struct mom yrev fill disp

The printout from this example is shown below.

ID F-axial Str-min Str-max


---- ------------- ------------- -------------
21 -1.4970e-002 -1.5989e+000 1.8983e+000
20 -2.1724e-002 -2.3551e+000 2.7896e+000
19 -2.1665e-002 -6.3307e-001 1.0664e+000
18 -2.1521e-002 -4.3104e+000 4.7408e+000
17 -2.1379e-002 -8.4729e+000 8.9004e+000
16 -3.1229e-001 -1.5687e+002 1.6312e+002
15 -3.6439e-001 -1.4175e+002 1.4904e+002
14 -3.6438e-001 -1.3902e+002 1.4631e+002
13 -3.0223e-001 -2.4301e+002 2.4906e+002
12 -3.6446e-001 -1.3974e+002 1.4703e+002
11 -3.6452e-001 -1.4163e+002 1.4892e+002
10 -3.1296e-001 -1.5663e+002 1.6289e+002
9 -2.1468e-002 -8.2438e+000 8.6731e+000
8 -2.1567e-002 -4.3870e+000 4.8184e+000
7 -2.1784e-002 -6.9586e-001 1.1315e+000
6 -2.1844e-002 -2.3977e+000 2.8346e+000
5 -1.5158e-002 -1.6446e+000 1.9478e+000
4 -3.9704e-003 -3.6153e-001 4.4094e-001
3 -3.9493e-003 -1.0047e-002 8.9032e-002
2 -3.9337e-003 -1.7863e-002 9.6537e-002
1 -3.9451e-003 -3.5794e-001 4.3684e-001

UDEC Version 4.0


PRSTRUC.FIS - 4 FISH in UDEC

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS PS3D.FIS - 1

Computing the 3D Principal Stresses


Keywords sig1 and sig2 (utilized in printing and plotting) correspond to the two-dimensional major
and minor principal stresses, respectively. As stated in Section 1 in the Command Reference, they
refer to stresses in the xy-plane only. However, the out-of-plane stress szz may be the major or
minor principal stress if the full three-dimensional stress tensor is considered.
The FISH function ps3d computes the major stress, taking into account the out-of-plane stress,
and places it in the z free zone variable.

Data File “PS3D.DAT”

block 0 0 0 20 20 20 20 0
crack 0 3 20 3
gen quad 4
bound yvel 0.0 range 0 20 -.1 .1
insitu szz -3e4
prop mat 1 dens 1000 bulk 2e8 shear 1e8
prop jmat 1 jkn 1.33e7 jks 1.33e7 jfric 30.0
set grav 0 -10
damp auto
cyc 100

call ps3d.fis

ps3d
plot hold boun z extra inv fill alias ’major principal stress’

UDEC Version 4.0


PS3D.FIS - 2 FISH in UDEC

JOB TITLE : (*10^1)

UDEC (Version 4.00)

LEGEND 1.800

18-Aug-04 10:47
cycle 100
time 1.433E-01 sec
1.400
boundary plot
major principal stress
contour interval= 1.000E+04
-1.000E+05 to -4.000E+04

-1.000E+05 1.000
-9.000E+04
-8.000E+04
-7.000E+04
-6.000E+04
-5.000E+04
0.600
-4.000E+04

0.200

Itasca Consulting Group, Inc.


Minneapolis, Minnesota USA
0.200 0.600 1.000 1.400 1.800
(*10^1)

Figure 1 Major principal stress contours

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS SERVO.FIS - 1

Servo Control
A servo-control function is used to minimize the influence of inertial effects on the response of the
model. The FISH file “SERVO.FIS” shows how the applied vertical velocities can be adjusted as
a function of the maximum unbalanced force in the model. By preventing the unbalanced force
from getting too high (i.e., controlling the inertial effects), the user has better control over model
behavior.
The control is specified by setting the upper limit for unbalanced force, high unbal, and lower
limit, low unbal, with the SET command. The loading velocity is also controlled by specifying
an upper limit (high vel). A command is not issued for this function because it is automatically
invoked at every calculation step through the WHILE STEPPING FISH command.
This function is demonstrated for the problem of a triaxial compression test of a strain-softening
material (data file “SERVO.DAT”). The stress-strain response of the specimen indicates a weakening
of the material after the peak strength is reached. The servo-control of the applied velocity allows
for an analysis with minimal inertial effects.
Note that FISH functions are built into the data file to calculate the average vertical stress, sigmav,
and average vertical strain, ev, in order to generate the stress-strain plot shown in Figure 1.
The servo-control function will need to be modified for different types of loading.
Data File “SERVO.DAT”
; Triaxial test of strain-softening material
; with controlled velocity
title
Triaxial test of strain-softening material

round .001
bl 0 0 0 10 5 10 5 0
gen quad 1
zone model ss
ca boucnr.fin
call servo.fis
bound -.1 .1 0 10 xvel = 0
bound 4.9 5.1 0 10 stress -1e6,0,-1e6
bound 0 5 9.9 10.1 yvel -1e-2
bound 0 5 -.1 .1 yvel 1e-2
prop mat 1 den 2500
zone bulk 2e8 she 1e8 co 2e6 fric 45 ten 1e6 dil 10
zone ftab 1 ctab 2 dtab 3
table 1 0 45 .05 42 .1 40 1 40
table 2 0 2e6 .05 1e6 .1 5e5 1 5e5
table 3 0 10 .05 3 .1 0
insitu stress -1e6,0,-1e6 szz -1e6
def sigmav

UDEC Version 4.0


SERVO.FIS - 2 FISH in UDEC

sum=0.0
z count = 0
i b = block head
loop while i b # 0
i z = b zone(i b)
loop while i z # 0
sum = sum - z syy(i z)
i z = z next(i z)
z count = z count + 1
end loop
i b = b next(i b)
end loop
sigmav = sum/z count
end

def ev
ev = (gp ydis(i gb)-gp ydis(i gt))/(gp y(i gt)-gp y(i gb))
end
def set lim
i gt = gp near(0,10)
i gb = gp near(0,0)
end
set lim

hist sigmav
label hist 1
Axial Stress
hist ev
label hist 2
Axial Strain
hist yvel 0 0
label hist 3
Vertical Velocity
hist unbal
label hist 4
Maximum Unbalanced Force

set high unbal=5e4


set low unbal=2e4
set high vel= 2
step 6000
save servo.sav
plot hold his 1 vs 2
plot hold his 4
plot hold his 3
ret

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS SERVO.FIS - 3

JOB TITLE : Triaxial test of strain-softening material


(e+007)
UDEC (Version 4.00)
1.80

LEGEND
1.60
18-Aug-04 10:49
cycle 6000
1.40
time 3.569E+00 sec

history plot
1.20
Axial Stress
Vs.
Axial Strain
1.00

0.80

0.60

0.40

0.20

0.00
0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00
Itasca Consulting Group, Inc. (e-002)
Minneapolis, Minnesota USA

Figure 1 Axial stress versus axial strain for a triaxial test with strain-
softening material with controlled velocity

JOB TITLE : Triaxial test of strain-softening material


(e+005)
UDEC (Version 4.00)
4.50

LEGEND
4.00
18-Aug-04 10:49
cycle 6000
3.50
time 3.569E+00 sec

history plot
3.00
Maximum Unbalanced Force
Vs.
0.00E+00<time> 3.57E+00
2.50

2.00

1.50

1.00

0.50

0.00
0.00 0.50 1.00 1.50 2.00 2.50 3.00 3.50 4.00
Itasca Consulting Group, Inc.
Minneapolis, Minnesota USA

Figure 2 Unbalanced force history for a triaxial test with strain-softening


material with controlled velocity

UDEC Version 4.0


SERVO.FIS - 4 FISH in UDEC

JOB TITLE : Triaxial test of strain-softening material


(e-001)
UDEC (Version 4.00)
2.80

LEGEND
2.40
18-Aug-04 10:49
cycle 6000
time 3.569E+00 sec
2.00
history plot
Vertical Velocity
Vs.
0.00E+00<time> 3.57E+00 1.60

1.20

0.80

0.40

0.00
0.00 0.50 1.00 1.50 2.00 2.50 3.00 3.50 4.00
Itasca Consulting Group, Inc.
Minneapolis, Minnesota USA

Figure 3 Vertical velocity history for a triaxial test with strain-softening


material with controlled velocity

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS SPEC.FIS - 1

Finding the Response Spectrum of an Acceleration History in a UDEC Table


The FISH file “SPEC.FIS” finds the displacement response spectrum, the pseudo-velocity response
spectrum and the pseudo-acceleration response spectrum of an input acceleration stored in a UDEC
table. The ID number of the input table is defined by the acc in argument, and the three output
tables are identified by the sd out, sv out and sa out arguments. If any of the output tables
currently exist, they will be deleted and overwritten by the new results.
The damping constant for the response analysis is specified by the dmp argument. The calculation
is only approximate for damped responses — the higher dmp is, the less accurate the response.
The range of periods over which the spectrum is calculated by the pmin and pmax arguments, and
the number of points in the output tables are defined by the n point argument.
This routine can take considerable time to execute. If Ni is the number of input points and Np is the
number of points in the output, then the number of calculations increases as Np × Ni × log(Ni ).
This formulation tends to give somewhat distorted results for periods approaching zero. However,
improving the accuracy for small periods increases the calculation time.
The algorithm was adapted from Craig (1981). As an example of its use, a simple sine wave
was input into a UDEC table as an input acceleration. The function was then executed from a
period of 0.5 to 2, with 50 points, in the output tables (see “SPEC.DAT”). Figure 1 shows the input
acceleration generated — a sine wave with a period of 1.0. Figures 2 through 4 show the various
response spectrums generated, displaying the expected peaks at a period of 1.0.
Reference
Craig, Jr., R. R. Structural Dynamics — An Introduction to Computer Methods. New York: John
Wiley and Sons, 1981.

UDEC Version 4.0


SPEC.FIS - 2 FISH in UDEC

Data File “SPEC.DAT”

def cr tab
i = 0
p2 = 2.*pi
loop while i <= num point
xx=end time*float(i)/float(num point)
i = i+1
yy = sin(xx*p2/per1)
table(1,xx) = yy
end loop
end

set num point 250 end time 3.0


set per1 1.0

cr tab

; ATTENTION: spec.fis uses a temporary set-up for erasing table

ca spec.fis
set pmin = 0.5
set pmax = 2.
set dmp = 0.
set acc in = 1
set sd out = 2
set sv out = 3
set sa out = 4
set n point = 50
spectra
;
label table 1
input acceleration
label table 2
displacement response
label table 3
pseudo-velocity response
label table 4
pseudo-acceleration response
; flac:
plot hold table 1 line
plot hold table 2 line
plot hold table 3 line
plot hold table 4 line
; 3dec and udec:
; plot hold table 1

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS SPEC.FIS - 3

; plot hold table 2


; plot hold table 3
; plot hold table 4
ret

UDEC Version 4.0


SPEC.FIS - 4 FISH in UDEC

JOB TITLE :

UDEC (Version 4.00)


1.00

LEGEND 0.80

18-Aug-04 10:56
cycle 0 0.60
time 0.000E+00 sec
0.40
table plot
input acceleration
Vs. 0.20
0.00E+00<X value> 3.00E+00

0.00

-0.20

-0.40

-0.60

-0.80

-1.00
0.00 0.50 1.00 1.50 2.00 2.50 3.00 3.50
Itasca Consulting Group, Inc.
Minneapolis, Minnesota USA

Figure 1 Input acceleration

JOB TITLE :
(e-001)
UDEC (Version 4.00)
2.80

LEGEND
2.40
18-Aug-04 10:56
cycle 0
time 0.000E+00 sec
2.00
table plot
displacement response
Vs.
5.00E-01<X value> 2.00E+00 1.60

1.20

0.80

0.40

0.00
0.40 0.60 0.80 1.00 1.20 1.40 1.60 1.80 2.00
Itasca Consulting Group, Inc.
Minneapolis, Minnesota USA

Figure 2 Displacement response spectrum

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS SPEC.FIS - 5

JOB TITLE :

UDEC (Version 4.00)


1.60

LEGEND
1.40
18-Aug-04 10:56
cycle 0
time 0.000E+00 sec 1.20

table plot
pseudo-velocity response
Vs. 1.00
5.00E-01<X value> 2.00E+00

0.80

0.60

0.40

0.20

0.00
0.40 0.60 0.80 1.00 1.20 1.40 1.60 1.80 2.00
Itasca Consulting Group, Inc.
Minneapolis, Minnesota USA

Figure 3 Pseudo-velocity response spectrum

JOB TITLE :
(e+001)
UDEC (Version 4.00)
1.00

LEGEND
0.90
18-Aug-04 10:57
cycle 0
0.80
time 0.000E+00 sec

table plot
0.70
pseudo-acceleration respons
Vs.
5.00E-01<X value> 2.00E+00
0.60

0.50

0.40

0.30

0.20

0.10
0.40 0.60 0.80 1.00 1.20 1.40 1.60 1.80 2.00
Itasca Consulting Group, Inc.
Minneapolis, Minnesota USA

Figure 4 Pseudo-acceleration response spectrum

UDEC Version 4.0


SPEC.FIS - 6 FISH in UDEC

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS SPEED.FIS - 1

Runtime Test
The calculation speed of UDEC can be determined with the FISH file “SPEED.FIS.” The clock is
first set to zero with the function set zero. After stepping, the calculation speed is printed by typing
print speed

The speed is measured in zone-steps per second. The data file “SPEED.DAT” illustrates the use of
these functions.

Data File “SPEED.DAT”


block 0 0 0 20 20 20 20 0
crack 0 3 20 3
gen quad 4
bound yvel 0.0 range 0 20 -.1 .1
prop mat 1 dens 1000 bulk 2e8 shear 1e8
prop jmat 1 jkn 1.33e7 jks 1.33e7 jfric 30.0
set grav 0 -10
damp auto
call speed.fis
set num zones = 144
set zero
cyc 100
print speed
cyc 200
print speed
cyc 400
print speed
ret

UDEC Version 4.0


SPEED.FIS - 2 FISH in UDEC

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS ZONK.FIS - 1

Gradual Unloading of Void Regions


The FISH function “ZONK.FIS” detects a void within a model and slowly relaxes the forces around
the void region. This facility is useful for simulating a gradual excavation in elasto-plastic material.
The influence of transients on material failure is minimized; the solution is more “static.”
The boundary of the extracted region is detected and modified by specifying the FISH function
zonk. The forces are then relaxed by specifying the function relax.
The example data file “ZONK.DAT” illustrates the use of “ZONK.FIS” to simulate a gradual
excavation in Mohr-Coulomb material.
Data File “ZONK.DAT”
new
round 0.01
block -50 -30 -50 70 60 70 60 -30
jset 45 0 1000 0 0 0 5 0
; Generate cavern
crack -9.57 0 9.57 0
crack -9.57 0 -9.57 28.5
crack 9.57 0 9.57 28.5
arc 3.25 28.5 9.57 28.5 60 6
arc -3.25 28.5 -9.57 28.5 -60 6
arc 0 22.871 0 35.691 30 3
arc 0 22.871 0 35.691 -30 3
arc 10.522 30.424 -3.66078 35.307522 29 3
arc -10.522 30.424 3.66078 35.307522 -29 3
crack -9.57 28 9.57 28
crack -9.57 25.5 9.57 25.5
crack -9.57 23.0 9.57 23.0
crack -9.57 20.5 9.57 20.5
crack -9.57 18.0 9.57 18.0
crack -9.57 15.5 9.57 15.5
crack -9.57 13.0 9.57 13.0
crack -9.57 10.5 9.57 10.5
crack -9.57 8.00 9.57 8.00
crack -9.57 5.50 9.57 5.50
crack -9.57 3.00 9.57 3.00
crack -9.57 1.00 9.57 1.00
gen edge 15

change cons 3
Prop m=1 bulk=3.9e9 shear=2.8e9 dens=2500 coh=3.45e6 fric 30 dil 0 ten 1e10
Prop jmat=1 jkn=10e9 jks=1e9 jfric=40 jcoh=0.4e6 ; Crack 1
bound yr 69 71 stress -3.95e6 0 -7.89e6
bound yr -31 -29 yvel 0
bound xr -51 -49 xvel 0

UDEC Version 4.0


ZONK.FIS - 2 FISH in UDEC

bound xr 59 61 xvel 0
set grav 0 -10
insitu stress -3.95e6 0 -9.5e6 ygrad 0 0 23000
insitu szz=-3.95e6 ;
hist unbal
solve ratio 1e-4
save stage0.sav

call zonk.fis

del xr -4.2 3.9 yr 28 35.25 ;


del reg -9.57 28 -8.5 33 -4. 35 -3.25 28
del reg 3.75 28 3.5 35.5 8.5 33 9.57 28
del -10 10 0 28
;
; must fix points and cycle once to get reaction forces
;
boun int -10 10 0 37 xvel 0 yvel 0
cycle 1
;
hist sxx 12.5 20.0
hist xdis 12.5 20.0

zonk
relax
save stage1.sav

label hist 2
XX - Stress
label hist 3
X - Displacement
pl hist -2 vs -3
ret

UDEC Version 4.0


LIBRARY OF FISH FUNCTIONS ZONK.FIS - 3

JOB TITLE :
(e+006)
UDEC (Version 4.00)
4.00

LEGEND

18-Aug-04 12:38 3.50


cycle 4110
time 3.045E+00 sec

history plot
3.00
XX - Stress
Vs.
X - Displacement

2.50

2.00

1.50

1.00
0.00 0.20 0.40 0.60 0.80 1.00 1.20 1.40 1.60 1.80
Itasca Consulting Group, Inc. (e-002)
Minneapolis, Minnesota USA

Figure 1 Horizontal stress vs displacement at history point

UDEC Version 4.0


ZONK.FIS - 4 FISH in UDEC

UDEC Version 4.0

You might also like