Supported Tunnel

Problem Statement

Note

To view this project in 3DEC, use the menu command Help ► Examples…. Choose “3DEC/ ExampleApplications/ Supported_tunnel” and select “Supported_tunnel.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 shows how to create a simple supported tunnel in fractured rock. The joints are simulated using the Discrete Fracture Network (DFN) logic, and the tunnel is supported using hybrid bolts.

3DEC Model

Model Geometry

The 3DEC model is shown in Figure 1. The model is built by first creating a 20x10x20 m brick and then making cuts to define the region of interest in the center. Three cuts are also made in the y direction to define the stages of tunnel excavation.

The tunnel is created by importing a dxf and using the command block cut geometry.

A DFN is generated with a power-law size distribution with an exponent of 3. The minimum and maximum fracture sizes are 0.5 m and 20 m respectively.

Tetrahedral zones are generated with an edge length of 0.25 m in the region of interest and 0.5 m outside of that.

../../../../_images/supportedtunnel-blocks.png

Figure 1: Zoned blocks making up the tunnel model.

Properties

The zones are assigned the Mohr-Coulomb material model with the following properties:

vf v fc cr5 tygy v Friction, \(\phi\) = 30^{circ}
Tension, \(T\) = 0

Model Solving

Initial State

All boundaries were fixed and the following initial compressive stress was applied:

\(\sigma_{xx}\) = 40 MPa \(\sigma_{xx}\) = 30 MPa \(\sigma_{xx}\) = 10 MPa

The model was then solved to initial equilibrium.

Excavation and Support

The first two meters of the tunnel are excavated and the model is solved. Hybrid bolts are then added with a spacing of approximately 0.5 m the bolts in the side walls were assigned a length of 2 m, and the bolts in the roof had a length of 4 m. No bolts were installed in the floor. A total of 11 bolts were used for each round of excavation (see Figure 2).

Dowel segments are automatically generated where each bolt crosses a joint. The dowel length is set to 5 cm.

../../../../_images/supportedtunnel-support.png

Figure 2: Hybrid bolts installed adfter the first round of excavation.

After installation of the bolts, another 2 m of tunnel is excavated and the model is solved. This is repeated three more times to excavate and support the entire 10 m length of the tunnel.

Results and Discussion

The 3DEC simulation yields displacement as shown in Figure 3. Figure 4 shows the axial forces in the hybrid bolts and Figure 5 shows the shear forces in the dowels. The support is successful at stabilizing the tunnel and the model reached equilibrium after each stage of excavation.

../../../../_images/supportedtunnel-disp.png

Figure 3: Displacements in the tunnel after excavation.

../../../../_images/supportedtunnel-bolts.png

Figure 4: Axial forces in the hybrid bolts.

../../../../_images/supportedtunnel-dowels.png

Figure 5: Shear forces in the dowels.

Data Files

tunnel-1.dat

model new
model random 10000
model large-strain on

model domain extent -20 20 -20 20 -20 20

block tolerance 1e-3
block create brick -10 10 -5 5 -10 10

; define region of interest
; construction joints have id of 99
block cut joint-set origin 0 0 -5 joint-id 99
block cut joint-set origin 0 0 5 joint-id 99
block cut joint-set dip 90 dip-dir 90 origin 5 0 0 joint-id 99
block cut joint-set dip 90 dip-dir 90 origin -5 0 0 joint-id 99

geometry import 'tunnel.dxf'

block cut geometry 'tunnel' joint-id 99

block group 'tunnel' range geometry-space 'tunnel' count odd

; define excavation rounds
block cut joint-set dip 90 origin 0 -3 0 spacing 2 joint-id 99

block join

; add fractures in region of interest
block group 'center' slot 'construction' range pos-x -5 5 pos-z -5 5
block hide range group 'center' not

fracture template create "dfn-template" size power-law 3 size-limits 0.5 20
fracture generate dfn "dfn1" template "dfn-template" fracture-count 30000

block cut dfn name "dfn1"

; generate zones - smaller in region of interest
block zone generate edgelength 0.25
block hide off
block zone generate edgelength 0.5

;; new zoning logic
;block hide off
;block zone size edgelength 0.25 range group 'center'
;block zone size edgelength 0.5 range group 'center' not
;block zone gcm2 min-edge 0.25 max-edge 0.5

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

block zone cmodel assign mohr-coulomb
block zone prop dens 2500 young 1e9 poiss 0.25
block zone prop cohesion 1e7 friction 35 tension 1e6

; make construction joints elastic
block contact jmodel assign elastic 
block contact prop stiff-norm 1e11 stiff-shear 1e11 

; make joints mohr-coulomb
block contact jmodel assign mohr range dfn-3dec 'dfn1'
block contact prop stiff-norm 1e10 stiff-shear 1e10 friction 30 ...
  range dfn-3dec 'dfn1'

; default contact props
block contact material-table default prop stiff-norm 1e10 ...
  stiff-shear 1e10 friction 30

model save 'zoned'

tunnel-2.dat

model rest 'zoned'

; initial state
block insitu stress -40e6 -30e6 -10e6 0 0 0

; boundary conditions
block gridpoint apply vel 0 0 0 range pos-x -10
block gridpoint apply vel 0 0 0 range pos-x 10
block gridpoint apply vel 0 0 0 range pos-z -10
block gridpoint apply vel 0 0 0 range pos-z 10
block gridpoint apply vel-y 0 range pos-y -5
block gridpoint apply vel-y 0 range pos-y 5
model solve convergence 1

model save 'initial'

tunnel-exc.dat

model restore 'initial'

block gridpoint ini dis 0 0 0

block excavate range group 'tunnel' pos-y -5 -3
model solve

model save 'exc-1'

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

fish def add_cables(ypos)

  ; left side
  command
    sel hybrid create by-line (-1,[ypos],-0.5) (-3,[ypos],-0.5) ...
	  prop 1 segments 10 dowel-length 0.05
    sel hybrid create by-line (-1,[ypos],0) (-3,[ypos],0) ...
	  prop 1 segments 10 dowel-length 0.05
    sel hybrid create by-line (-1,[ypos],0.5) (-3,[ypos],0.5) ...
	  prop 1 segments 10 dowel-length 0.05
  end_command
  
  ; right side
  command
    sel hybrid create by-line (1,[ypos],-0.5) (3,[ypos],-0.5) ...
	  prop 1 segments 10 dowel-length 0.05
    sel hybrid create by-line (1,[ypos],0) (3,[ypos],0) ...
	  prop 1 segments 10 dowel-length 0.05
    sel hybrid create by-line (1,[ypos],0.5) (3,[ypos],0.5) ...
	  prop 1 segments 10 dowel-length 0.05
  end_command
    
  ; top
  loop i (1,5)
    local angle = math.pi/6.0*float(i)
    p1x = math.cos(angle)
    p1z = 1.0 + math.sin(angle)
    p2x = 4.0*math.cos(angle)
    p2z = 1.0+4.0*math.sin(angle)
    command
       sel hybrid create by-line [(p1x,ypos,p1z)] [(p2x,ypos,p2z)] ...
	     prop 1 segments 10 dowel-length 0.05
    end_command
  end_loop
end

[add_cables(-4)]

sel hybrid prop 1 cross-sectional-area 181e-6 young 98.6e11 yield-tension 5e6 ...
   grout-stiffness 1.12e9 grout-cohesion 1.75e9

; dowel properties
sel hybrid prop 1 dowel-stiffness 2e10 dowel-yield 5e5 dowel-strainlimit 0.1

block excavate range group 'tunnel' pos-y -3 -1
model solve

model save 'exc-2'

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

[add_cables(-2)]

block excavate range group 'tunnel' pos-y -1 1
model solve elastic

model save 'exc-3'

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

[add_cables(0)]

block excavate range group 'tunnel' pos-y 1 3
model solve

model save 'exc-4'

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

[add_cables(2)]

block excavate range group 'tunnel' pos-y 3 5
model solve

model save 'exc-5'