Open Pit with Face Blocks

Problem Statement

Note

To view this project in 3DEC, use the menu command Help ► Examples…. Choose “3DEC/ ExampleApplications/ Faceblock_pit” and select “faceblock_pit.prj” to load. The main data files used are shown at the end of this example. All data files are found in the project.

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.

../../../../_images/fbpit-blocks-unjoined.png

Figure 1: Blocks in the pit model before joining.

../../../../_images/fbpit-blocks.png

Figure 2: Blocks in the pit model after joining.

../../../../_images/fbpit-disp-nomerge.png

Figure 3: Displacements in the pit model with joined blocks at initial equilibrium.

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.

../../../../_images/fbpit-disp-merge.png

Figure 4: Displacements in the pit model with merged blocks at initial equilibrium.

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 gen edge 1000
;
block zone cmodel assign mohr-coulomb
block zone prop dens 2500 bulk 1e8 shear 0.6e8 coh 1e4 fric 35 ten 1e2

block contact jmodel assign mohr
block contact prop stiff-norm 1e9 stiff-shear 1e9 fric 30

block gridpoint apply vel-x 0 range pos-x -120
block gridpoint apply vel-x 0 range pos-x 2100
block gridpoint apply vel-y 0 range pos-y 1310
block gridpoint apply vel-y 0 range pos-y 3750
block gridpoint apply vel 0 0 0 range pos-z -500

model grav 0 0 -10

block insitu topo ratio-x 0.5 ratio-y 0.5

model save 'nomerge-ini'

================================

model rest 'nomerge-ini'

block contact mat-tab default prop stiff-norm 1e9 stiff-shear 1e9 fric 30


fish def time_ini
  time0 = time.clock
end

fish def 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 gen-sub

;
block zone cmodel assign mohr-coulomb
block zone prop dens 2500 bulk 1e8 shear 0.6e8 coh 1e4 fric 35 ten 1e2

block contact jmodel assign mohr
block contact prop stiff-norm 1e9 stiff-shear 1e9 fric 30

block gridpoint apply vel-x 0 range pos-x -120
block gridpoint apply vel-x 0 range pos-x 2100
block gridpoint apply vel-y 0 range pos-y 1310
block gridpoint apply vel-y 0 range pos-y 3750
block gridpoint apply vel 0 0 0 range pos-z -500

model grav 0 0 -10

block insitu topo ratio-x 0.5 ratio-y 0.5

model save 'merge-ini'

================================

model rest 'merge-ini'

block contact mat-tab default prop stiff-norm 1e9 stiff-shear 1e9 fric 30

fish def time_ini
  time0 = time.clock
end

fish def duration
  duration = 0.01*(time.clock-time0)
end

[time_ini]

model solve

fish list [duration]