Open Pit with Face Blocks
Problem Statement
Note
The project file for this example may be viewed/run in 3DEC.[1] The data files used are shown at the end of this example.
This example shows how to build a model with a complicated topography in two different ways; (1) import tetrahedral blocks from Griddle and join them, (2) import tetrahedral blocks from Griddle and turn them into zones.
When blocks are turned into zones, “face blocks” are added to each triangular face between groups to enable contact detection and force calculation. In this way, it is possible to create models with concave blocks.
Even with the addition of these face blocks, turning the blocks into zones yields significantly faster run times than joining.
3DEC Model
A 3DEC model is first created from the data file nomerge.dat. A griddle mesh is imported, and the blocks prior to joining are shown in Figure 1.
Blocks with the same group name are then joined. This leaves two major faults as shown in Figure 2.
The blocks are then zoned (one zone per block), zone and joint properties are assigned, boundary and initial conditions are applied and gravity is turned on. The model is then solved and the time taken to do the solve step is calculated. The displacements are shoown in Figure 3.
The same test is then run, but this time the blocks imported from Griddle are merged into a single big block if they have the same group name. Each tetrahedral block is turned into a zone. The resulting model looks the same as Figure 2, except now there are only 3 blocks, each with thousands of zones, rather than thousands of joined blocks, each with one zone.
The model is run to equilibrium and the time required is recorded. The time results will depend on the computer used, but generally the merged model will run 2-3 times faster than the jointed model.
The displacement results are shown in Figure 4. It is clear that the results are essentially the same as in Figure 3.
Data Files
nomerge.dat
model new
model large-strain on
;
program call 'Griddle-coarse'
;program call 'Griddle-fine'
;
block join range group '10001'
block join range group '10002'
block join range group '10003'
block zone generate edgelength 1000
;
block zone cmodel assign mohr-coulomb
block zone property density 2500 bulk 1e8 shear 0.6e8 cohesion 1e4 ...
friction 35 tension 1e2
block contact jmodel assign mohr
block contact property stiffness-normal 1e9 stiffness-shear 1e9 friction 30
block gridpoint apply velocity-x 0 range position-x -120
block gridpoint apply velocity-x 0 range position-x 2100
block gridpoint apply velocity-y 0 range position-y 1310
block gridpoint apply velocity-y 0 range position-y 3750
block gridpoint apply velocity 0 0 0 range position-z -500
model gravity 0 0 -10
block insitu topography ratio-x 0.5 ratio-y 0.5
model save 'nomerge-ini'
================================
model restore 'nomerge-ini'
block contact material-table default property stiffness-normal 1e9 ...
stiffness-shear 1e9 friction 30
fish define time_ini
time0 = time.clock
end
fish define duration
duration = 0.01*(time.clock-time0)
end
[time_ini]
model solve
fish list [duration]
merge.dat
model new
model large-strain on
block merge-start
;program call 'Griddle-fine'
program call 'Griddle-coarse'
block merge-finish
block contact generate-subcontacts
;
block zone cmodel assign mohr-coulomb
block zone property density 2500 bulk 1e8 shear 0.6e8 cohesion 1e4 ...
friction 35 tension 1e2
block contact jmodel assign mohr
block contact property stiffness-normal 1e9 stiffness-shear 1e9 friction 30
block gridpoint apply velocity-x 0 range position-x -120
block gridpoint apply velocity-x 0 range position-x 2100
block gridpoint apply velocity-y 0 range position-y 1310
block gridpoint apply velocity-y 0 range position-y 3750
block gridpoint apply velocity 0 0 0 range position-z -500
model gravity 0 0 -10
block insitu topography ratio-x 0.5 ratio-y 0.5
model save 'merge-ini'
================================
model restore 'merge-ini'
block contact material-table default property stiffness-normal 1e9 ...
stiffness-shear 1e9 friction 30
fish define time_ini
time0 = time.clock
end
fish define duration
duration = 0.01*(time.clock-time0)
end
[time_ini]
model solve
fish list [duration]
Endnote
Was this helpful? ... | Itasca Software © 2024, Itasca | Updated: Nov 20, 2024 |