UCS Test with Fragmentation

Note

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

Problem Description

This example describes how to conduct a simple Unconfined Compressive Strength test on a bonded block model (BBM) with a square cross-section. The model simulates an assembly of bonded blocks cut by a Discrete Fracture Network. The fragments resulting from the compression test are computed and visualized.

3DEC Model

The bonded-block model is constructed by creating a 6x6x10 m block and then zoning it with tetrahedral zones with an edge length of 0.5 m. The zones are then exported as blocks. The existing model is cleared with a cmd:\(model.new\) command and the tetrahedral blocks are imported.

0.5 m is cut away from the four vertical edges. This is done because the tetrahedral zoning tends to produce aligned zones along the edge faces and can yield unrealistically high strengths due to the “crystalline” packing of blocks along the edges.

A Discrete Fracture Network (DFN) is then created with a power-law size distribution and a minimum and maximum fracture diameter of 0.5 and 10 m respectively. The DFN and an utline of the generated blocks is shown in Figure 1.

../../../../_images/fragment-dfn.png

Figure 1: The DFN used to cut the model.

The model is then cut by the DFN. The resulting blocks are shown in Figure 2

../../../../_images/fragment-blocks.png

Figure 2: Blocks making up the model.

The model is then zoned and joint properties are assigned. The joints between the tetrahedral blocks are assigned a relatively high strength, while the joints inside of the DFN fractures are given a lower strength as shown in table.

Table 1: Joint Properties

Property

inter-block

DFN

Normal stiffness

50 GPa/m

50 GPa/m

Shear stiffness

10 GPa/m

10 GPa/m

Cohesion

1 MPa

0

Friction

30^{circ}

30^{circ}

Tension

0.1 MPa

0

The joints with low strength that lie inside of the DFN fractures are shown in Figure 3

../../../../_images/fragment-joints.png

Figure 3: DFN joints in the model.

The zones are assumed to be elastic with a Young’s modulus of 1 GPa and a Poisson’s ratio of 0.25.

Loading and Monitoring

The block is loaded by applying a constant velocity of 0.1 m/s to the gridpoints on the top and bottom of the block. Axial stress is calculated by summing the vertical (z) reaction forces of all the top and bottom gridpoints and dividing by twice the cross-sectional area. The axial strain is simply the sum of displacement of the top and bottom gridpoints divided by the original length.

The model is then cycled for 10,000 steps. The model solve command is not used because the model will never reach equilibrium.

Results and Discussion

The 3DEC simulation yields a stress-strain curve as shown in Figure 4. The sample behaves in a fairly brittle manner as expected with a peak strength of 3.2 MPa.

The resulting fragments are shown in Figure 5. A fragment is defined as a collection of blocks connected together by intact bonds (joints that have not failed in tension or shear). Separate fragments are separated by joints with broken bonds. The fragments suggest an axial splitting type mechanism, which is commonly observed in UCS tests in brittle rock.

../../../../_images/fragment-ss.png

Figure 4: Axial stress versus axial strain in the UCS test.

../../../../_images/fragment-fragments.png

Figure 5: Fragments at the end of the UCS test.

Data Files

fragment.dat

; fname: fragment.dat
;
; Illustrate how the Fragment logic can be used
; to study the fragmentation of a Bonded Block Model.
;
;==================================================================
model new
model random 10001

; make model wider than we want so we can trim off the aligned edges
block create brick -3 3 -3 3 -5 5
block zone generate edgelength 0.5

block zone list poly
;
;===================================================================

model new
model random 10001
model large-strain on
model title 'Fragmentation of a Bonded Block Model'
model domain extent -6 6 -6 6 -10 10

; add DFN
fracture template create 'dfn1' size power-law 3 size-limit 0.5 10
fracture generate template 'dfn1' dfn 'realization_1' fracture-count 200

program call 'poly'

; trim off edges
block cut j-set dip 90 d-d 90 or 2.5 0 0
block delete range pos-x 2.5 3

block cut j-set dip 90 d-d 90 or -2.5 0 0
block delete range pos-x -3 -2.5

block cut j-set dip 90 d-d 0 or 0 2.5 0
block delete range pos-y 2.5 3

block cut j-set dip 90 d-d 0 or 0 -2.5 0
block delete range pos-y -3 -2.5

; cut DFN
block cut dfn name 'realization_1' jointset-id 99

; generate zones
block zone gen edgelength 0.25

; assign contact properties
block contact jmodel assign mohr
block contact prop stiffness-normal 5e10 stiffness-shear 1e10 ...
  friction 30 cohesion 1e6 tension 1e5

; Outside of DFN should be infinitely strong.
; Command not necessary in this case since fractures will stop
;   at tet block boundaries
;block contact prop coh 1e12 ten 1e12 range joint-set 99

; now set realistic strength for fractures
block contact prop coh 0 ten 0 range dfn-3dec 'realization_1'

block contact material-table default jmodel mohr
block contact material-table default property stiffness-normal 5e10 ...
  stiffness-shear 1e10 fric 30

; zone properties
block zone cmodel assign elastic
block zone prop dens 2000 young 1e9 poiss 0.25

; set up stress and strain histories
block gridpoint group 'top' range pos-z 5
block gridpoint group 'bottom' range pos-z -5

[global area = 5.0*5.0]
[global length = 10.0]

fish def zzstress
  ; compression positive, units MPa
  local top_reaction = 0.0
  local bottom_reaction = 0.0
  loop foreach gp block.gp.list
    if block.gp.group(gp) = 'top'
      top_reaction = top_reaction - block.gp.force.reaction.z(gp)
      local top_disp = block.gp.disp.z(gp)
    endif
    if block.gp.group(gp) = 'bottom'
      bottom_reaction = bottom_reaction + block.gp.force.reaction.z(gp)
    endif
  end_loop

  zzstress = 0.5e-6*(top_reaction + bottom_reaction)/area
  zzstrain = -2.0*top_disp/length
end

fish history zzstress
fish history zzstrain

block fragment compute
block fragment fill-group slot 'fragments-pre'
block fragment dump filename 'fragments-pre.txt'

model save 'initial'
;
;===============================================
model rest 'initial'
; boundary conditions
block gridpoint apply vel-z -0.1 range group 'top'
block gridpoint apply vel-z 0.1 range group 'bottom'

; initialize velocities
block gridpoint ini vel-z 0 grad 0 0 -0.02
model cycle 5000

model save 'ucs'

; now compute fragment information
block fragment compute 
block fragment fill-group slot 'fragments'
block fragment dump filename 'fragments.txt'

program return 
;================================================
; eof: fragment.dat

Appendix: Comparison with Version 7

For users of 3DEC Version 7.0, you will observe that the unconfined compressive strength of this modeled rock is significantly less than in Version 9. Two changes were made to Version 9 that produced this difference:

  1. A different method of computing gridpoint stiffnesses is used that causes models to reach equilibrium faster.

  2. Combined damping is now the default (rather than local). This also speeds solution to equilibrium in most cases.

These two factors together mean that the system responds more quickly to boundary conditions. In version 7, the system was slower to respond, so a much lower rate of loading should have been used to get accurate results. In version 9, the rate of loading used in this example is sufficiently slow that the system has time to adjust and form cracks, causing a lower peak stress.

Figure 36 shows a comparison of Version 7 results for different loading rates compared to the results from this example. You can see that the Version 9 results correpond to Version 7 results at a much lower rate of loading.

../../../../_images/fragment-ucs.png

Figure 6: Comparison of 3DEC Version 7 results for different loading rates, and the results from this example run in Version 9.