Sliding Wedge

  Problem Resources
Data Files Project: Open “SlidingWedge.prj” in PFC3D [1]

Introduction

In this example, a simple wedge stability analysis is performed. The critical friction angle is calculated using a bisection algorithm written in Python. The result is compared to the analytical solution.

PFC3D Model

The wedge is formed by the intersection of the planar surfaces with a cube. The sliding surfaces of the wedge are defined by:

  • F1: Dip = 40°, dip direction = 130°, Origin=(0,0,1)
  • F2: Dip = 60°, dip direction = 220°, Origin=(0,-0.25,1)

A rigid block defining the model “box” is first created. Then fractures are introduced using the command fracture create. Fractures are finite and have a disk shape. To guarantee their persistence within the model box, a large size is used, for instance 5m. The existing cubic block is then cut by these fractures using the command rblock cut.

The commands to create the model geometry are:

model new
model domain extent -2. 2. condition destroy
rblock create box -1. 1.
fracture create dip 40. dip-dir 130. position 0,0,1 size 5 
fracture create dip 60. dip-dir 220. position 0,-0.25,1 size 5  
rblock cut fractures 
pfc/rblock/test3d/verification_problems/sliding-wedge/p3d-rigid-blocks-sliding-wedge-ini.png

Figure 1: The initial system.

Boundary conditions consist of fixing all blocks except the wedge (block having the ID=2). The corresponding command is:

; Boundary conditions 
rblock fix velocity spin range id 6 not

A unique set of mechanical properties is applied to all contacts: zero cohesion, normal and shear stiffness = 1e7Pa/m, friction coefficient initially very large. The blocks have a density of 2000kg/m3 with a damping equal to 0.7 and are subjected to gravity. The corresponding commands are:

; Model Parameters 
rblock attribute density 2000.0 damp 0.7
contact cmat default model linear ...
                   property kn 1.e7 ks 1.e7 fric 1.e20
; Gravity
model gravity 0,0,-10.

Friction angle will be modified during the analysis in order to calculate the critical friction angle, for which the wedge is at limit equilibrium. Initially, the model is run to initial equilibrium with very large friction.

Analytical Solution

Analytical solution is deduced from [GoodmanShi1985].

For the case of a block sliding on two faces, we define \(N_1\) and \(N_2\) as the magnitudes of the normal forces acting on the two sliding faces.

(1)\[\begin{split}N_1 &= \frac{- (\mathbf{A} \times \mathbf{n_2}) \times (\mathbf{n_1} \times \mathbf{n_2})} {\|\mathbf{n_1} \times \mathbf{n_2}\|^2} \\ N_2 &= \frac{- (\mathbf{A} \times \mathbf{n_1}) \times (\mathbf{n_1} \times \mathbf{n_2})} {\|\mathbf{n_1} \times \mathbf{n_2}\|^2}\end{split}\]

where \(n_i\) is the normal to the block face directed towards the interior of the block and \(\mathbf{A}\) is the total externally applied force acting on the block (in this example the block’s weight).

The total shear force along the sliding direction is given by:

(2)\[T_{12} = \mathbf{A} \times \mathbf{s_{12}}\]

where \(s_{12}\) is the sliding direction calculated from the intersection of the two sliding faces:

(3)\[s_{12} = \frac{(\mathbf{n_1} \times \mathbf{n_2})} { \|\mathbf{n_1} \times \mathbf{n_2}\|^2} \text{sgn}((\mathbf{n_1} \times \mathbf{n_2}) \cdot \mathbf{A})\]

In the absence of cohesion in the joint, and supposing the same angle of friction on both sliding faces, the safety factor can be calculated as

(4)\[F_s = \frac{(N_1+N_2) \tan{\phi}} {T_{12}}\]

The critical friction angle to have stability (minimum factor of safety of 1) can thus be deduced. In this example the critical friction angle is 33.36°. This value is computed using the Python script in the file analytical_fric.py.

Numerical Analysis

Starting from the system in equilibrium under gravity loading with very large friction, the friction angle of the two sliding faces is modified in order to find the minimum critical angle for which the block is stable, using a bisection algorithm written in Python. Every time the friction angle is changed the model is run to equilibrium with a maximum number of steps (maximum of 10000).

The block is considered stable for a given friction angle if the equilibrium (an average ratio of unbalanced forces 1e-6) is reached for a number of cycles inferior to the maximum. Otherwise the block is considered unstable. A python cycle in the bisection algorithm consists in restoring the initial state, testing the stability for a given friction angle – middle of the current interval of values– and dividing this interval by 2 based on the stability result. The solution of the critical friction angle is reached when the computation interval is inferior to a minimum (here we set 0.001).

Running this algorithm, we get a critical friction angle of 33.398°, thus an error of 0.128% comparing to the analytical solution.

References

[GoodmanShi1985]Goodman, R. E. and Shi, G.,”Block Theory and its Application to Rock Engineering,” Prentice-Hall, London (1979).

Endnote

[1]These files may be found in PFC3D under the “verification_problems/rigid_blocks/sliding_wedge” folder in the Examples dialog (Help —> Examples on the menu). If this entry does not appear, please copy the application data to a new directory. (Use the menu commands Tools —> Copy App Data …. See the “Copy Application Data” section for details.)