Example: Ring Support of a Jointed Tunnel

Problem Statement

Note

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

This is a simple example which demonstrates the use of FISH and the structure beam create command to place a set of 3 beam support rings inside a tunnel. The beam material properties are:

Table 1: Beam properties
area 0.03 m^2
modulus 200 GPa
Poisson’s ratio 0.3
density 2000 kg/m^3
moment of inertia 0.00064 m^4

The beams are initially rigidly connected to the rock.

Figure 1 shows the placement of the beam elements inside the tunnel, and Figure 2 illustrates the axial forces in the beams.

../../../../../_images/beams.png

Figure 1: Tunnel with beam elements

../../../../../_images/force.png

Figure 2: Axial forces in the beams after tunnel excavation.

The model is then run again but this time the beams are allowed to slide and separate from the rock. This is done by altering the link attach conditions and properties as shown in the data file below. For the assigned properties, some of the beam links reach their peak shear stress and start to slide during the simulation as shown in Figure 3.

../../../../../_images/beam-sliding.png

Figure 3: Failure condition of links in the local x-direction.

Data Files

beam.dat

model new
model random 10000
model large-strain on
; -------------------------------------------------------------------
; structural element example
; tunnel support with beam elements
; -------------------------------------------------------------------
;
model title
'Beam example'
;
block create brick -25 25  -25 25  -25 25
;
block cut joint-set  dip 30 dip-direction 90  num 5 spacing 10
;
block cut tunnel  face-1 -5 -100 0  -3.5 -100  3.5  0 -100  5  3.5 -100  3.5 &
           5 -100 0   3.5 -100 -3.5  0 -100 -5 -3.5 -100 -3.5 &
        face-2 -5  100 0  -3.5  100  3.5  0  100  5  3.5  100  3.5 &
           5  100 0   3.5  100 -3.5  0  100 -5 -3.5  100 -3.5 &
        group 'exc'
;
block delete range group 'exc'
;
block zone generate edgelength 6
;
; E = 50000 MPa, v=0.25
; dens = 2500 kg/m3
block zone cmodel assign elastic
block zone prop dens 0.0025  bulk 33333 shear 20000

block contact jmodel assign mohr
block contact prop stiffness-normal 10000 stiffness-shear 4000 coh 1e10 tens 1e1
block contact material-table default prop stiffness-normal 10000 stiffness-shear 4000 
;
block gridpoint apply vel-x 0 range pos-x -25
block gridpoint apply vel-x 0 range pos-x 25
block gridpoint apply vel-y 0 range pos-y -25
block gridpoint apply vel-y 0 range pos-y 25
block gridpoint apply vel-z 0 range pos-z -25
block gridpoint apply vel-z 0 range pos-z 25
;
block insitu stress -5 -5 -5 0 0 0
;
model gravity 0 0 -10

block hist dis-x pos 0,0,5
block hist dis-y pos 0,0,5
block hist dis-z pos 0,0,5
;

fish def make_beams
  local start = vector(0,-10,0)
  local axial_segments = 3
  local radial_segments = 8
  local radius = 5.0
  local axial_spacing = 10.0
  local mult_ = 2.0*math.pi/float(radial_segments)
  loop local axial (1,axial_segments)
    yy = start->y + (axial-1.0)*axial_spacing
    loop local i (1,radial_segments-1)
       xx = start->x + radius*math.cos(mult_*(i-1))
       zz = start->z + radius*math.sin(mult_*(i-1))
       xx_next = start->x + radius*math.cos(mult_*(i))
       zz_next = start->z + radius*math.sin(mult_*(i))
	   ; specify same id for all beams in a ring to 
	   ; ensure all beams are connected
       command
          struct beam create by-line ([xx] [yy] [zz]) ([xx_next] [yy] [zz_next]) id [axial]
       end_command
    end_loop
    ; last segment
    last_point = vector(start->x + radius,yy,start->z)
    command
      struct beam create by-line ([xx_next] [yy] [zz_next]) [last_point] id [axial]
    end_command
  end_loop
end
[make_beams]

struct beam property young 200000 poisson .3 cross-sectional-area .03 density 0.0025 ...
  moi-y 6.4e-4  moi-z = 6.4e-4 moi-polar = 0.0
  
model save 'beam-initial'
model cycle 1000
;
model save "beam"
;

beam-sliding.dat

; add sliding links between beam and rock
model restore 'beam-initial'

; set small strain so links aren't reset 
model large-strain off
  
; first cycle 1 to set up local coordinate system
model cycle 1

; set links to slide in shear direction and separate in normal direction
struct link attach x shear-yield
struct link attach y shear-yield
struct link attach z normal-yield

struct link property x stiffness 10e3 cohesion 1 friction 30
struct link property y stiffness 10e3 cohesion 1 friction 30
struct link property z stiffness 10e3 yield-tens 1
model cycle 1000
;
model save "beam-sliding"
;