Laterally Loaded Pile

Problem Statement

Note

To view this project in FLAC3D, use the menu command Help ► Examples…. Choose “Structure/Pile/LaterallylLoaded” and select “LaterallyLoaded.f3prj” to load. The main data files used are shown at the end of this example. The remaining data files can be found in the project.

A vertical pile is subjected to a lateral displacement at its top. The pile is pushed in one direction, then the loading is reversed and the pile is pushed in the opposite direction. This loading cycle is performed for the case of no normal gap present, and then for 100% of the gap effective. The results demonstrate the response of the pile structural elements to lateral loading both with and without the effect of a gap between the pile and the medium. The top node of the pile is marked with the group name Top.

In the FLAC3D data file, the pile (composed of 8 pile elements) is created in the center of the soil block such that the top pile node is one meter above the soil surface (see Figure 1). We wish to apply to the top node a constant lateral velocity of 1 × 10-8 that will move the node along the diagonal of the soil block. This direction is described by a vector of (1,1,0) in the global system. We specify this nodal velocity condition with the structure node initialize velocity (0.707e-8,0.707e-8,0) range group 'Top' command.

We must also specify the appropriate velocity-fixity condition at this node with the structure node fix command, which requires specification of fixity directions in the node-local system, not the global system. Because the top node is used by a pile element, its node-local system will be oriented such that the \(x\)-axis is aligned with the pile axis, and the \(yz\)-axes lie in the pile cross-sectional plane. In our model, the node-local system of the top node is oriented such that the \(x\)-axis points in the negative global \(z\)-direction, the \(y\)-axis points in the positive global \(y\)-direction, and the \(z\)-axis points in the positive global \(x\)-direction. The orientation of the node-local system can be visualized with the “Pile” plot item by setting the “System” attribute to “Node”.

Note that this orientation is set automatically at the start of a set of cycles, or when the model cycle 0 command is executed. Therefore, we fix the lateral velocity to remain constant with the commands

struct node fix velocity-y range group 'Top'  ; fix velocities in lateral plane, top node
struct node fix velocity-z range group 'Top'

We wish to monitor the applied load acting at the top node and plot this value versus the displacement of the top node. If the loading is applied in a quasi-static fashion, then the applied load acting at the top node will equal the shear force acting at the top end of the top pile element. The shear forces are expressed in the pile element coordinate system (see Pile Sign Conventions). In order to obtain the shear force acting in the diagonal direction in which the load is being applied, we must rotate the \(y\)-axis of the pile element system such that it lies along this diagonal using the direction-y property.

The applied lateral load can then be monitored with the structure pile history command:

struct pile history name='force' force-y position (5.5,5.5,12) ; shear force at top
../../../../../_images/laterallyloaded-geom.png

Figure 1: Soil block and vertical pile.

The \(x\)- and \(y\)-components of the applied displacement can be monitored with separate structure node history commands; however, we wish to monitor the lateral displacement occurring along the diagonal. To do this, we use the FISH function lateralDisp, which accesses the \(x\)- and \(y\)-components of the displacement using the struct.node.disp.global function.

For this problem, the cohesion and friction of the normal coupling spring are set to 0.01 MN/m and zero, respectively. The no-gap case is run by specifying coupling-gap-normal off in the structure pile property command. The full-gap case is run by specifying coupling-gap-normal on. Figure 2 shows the normal load at the pile top versus displacement for the no-gap case, and Figure 3 shows the results for the full-gap case. During the lateral loading, the limiting normal force is the same for both cases. However, the normal load versus displacement histories are different. In the model with a full gap, it is necessary to close the gap before the force with opposite direction is generated. The pile is unloaded when it returns to its initial position.

../../../../../_images/laterallyloaded-nogap-chart.png

Figure 2: Shear load at top of pile versus lateral displacement for no gap.

../../../../../_images/laterallyloaded-fullgap-chart.png

Figure 3: Shear load at top of pile versus lateral displacement for full gap.

Additional information about the system behavior can be learned by studying the model at the end of the first stage of loading, when the initial applied displacement is 0.4 mm. At this stage, the upper portion of the pile is compressing the soil in the (1,1,0) direction, while the lower portion of the pile is compressing the soil in the minus (1,1,0) direction. The plots of nodal displacement, bending moment in the pile, and stress and yield state of the normal coupling springs (see Figure 4 and Figure 5) confirm this loading mode and indicate that the normal coupling springs above and below the load-reversal point are yielding. The normal stress is zero over the top element, because the top node is above the soil surface. From Figure 4 it can be seen that the normal stress at the yielding nodes equals 3.185 kPa. This equals normal cohesion, \(c_s\), divided by perimeter, \(p\), as it should. The pile responses can also be accessed via FISH.

../../../../../_images/laterallyloaded-stress.png

Figure 4: Stress and yield state of normal coupling springs (undeformed and deformed by 5000 magnification, end of first loading stage, gap on).

../../../../../_images/laterallyloaded-moment.png

Figure 5: Moment distribution (undeformed and deformed by 5000 magnification, end of first loading stage, gap on).

Data File

LaterallyLoaded.dat

model new
model large-strain off
model title "Laterally loaded pile"
; Create zones
zone create brick size 8 8 8 edge=11
zone face skin ; Label model boundaries
; Assign material model and properties
zone cmodel assign elastic
zone prop bulk=5e9 shear=1e9 density=2000
; Boundary conditions
zone face apply velocity-normal 0 range group 'East' or 'West'
zone face apply velocity-normal 0 range group 'North' or 'South'
zone face apply velocity-normal 0 range group 'Bottom'
; Initial conditions
model gravity 10
zone initialize-stresses ratio 0.6,0.4
model solve ratio-local 1e-4 ; Should be instant
; =======================================================
; Create a pile in the center of the soil block
struct pile create by-line (5.5,5.5,12.0) (5.5,5.5,4.0) segments=8
struct node group 'Top' range position-z 12 ; Tag top node
struct pile property young=8.0e10 poisson=0.30 cross-sectional-area=0.7854 ...
            moi-polar=9.82e-2 moi-y=4.91e-2 moi-z=4.91e-2 ...
            perimeter=3.14 ...
            coupling-stiffness-shear=1.3e11 coupling-cohesion-shear=1.0e10 ...
            coupling-friction-shear=0.0 coupling-stiffness-normal=1.3e09   ...
            coupling-cohesion-normal=1.0e04 coupling-friction-normal=0.0   ...
            coupling-gap-normal=off ...
            direction-y=(1,1,0)
            ; so that shear force Fy corresponds with diagonal direction
; =======================================================
; Fish function to find lateral displacement of top node
[global topNode = struct.node.near(5.5,5.5,12)]
fish define lateralDisp
    local disp = struct.node.disp.global(topNode)
    return math.sqrt(disp(1)^2 + disp(2)^2) * math.sgn(disp(1))
end
; =======================================================
struct pile history name='force' force-y component-id 1 ; shear force at top
fish history name='disp' lateralDisp  ; lateral displacement
; =======================================================
struct mechanical damping combined-local
struct node fix velocity-y range group 'Top' ; fix velocities in lateral plane,
                                             ; top node
struct node fix velocity-z range group 'Top' 
; move (+) diag-dir
struct node initialize velocity (0,0.707e-8,0.707e-8) local range group 'Top'
model save 'Initial'
; =======================================================
; Run no-gap case
; =======================================================
model cycle 40000  ; disp of +4e-4
model save 'NoGap-1'
; move (-) diag-dir
struct node initialize velocity (0,-0.707e-8,-0.707e-8) local range group 'Top'
model cycle 80000  ; disp of -8e-4
model save 'NoGap-2'
; move (+) diag-dir
struct node initialize velocity (0,0.707e-8,.707e-8) local range group 'Top'
model cycle 40000                                           ; disp of +4e-4
model save 'NoGap-Final'
; =======================================================
; Run full-gap case
; =======================================================
model restore 'Initial'
struct pile property coupling-gap-normal on
model cycle 40000  ; disp of +4e-4
model save 'FullGap-1'
; move (-) diag-dir
struct node initialize velocity (0,-0.707e-8,-0.707e-8) local range group 'Top'
model cycle 80000  ; disp of -8e-4
model save 'FullGap-2'
; move (+) diag-dir
struct node initialize velocity (0,0.707e-8,.707e-8) local range group 'Top'
model cycle 40000                                           ; disp of +4e-4
model save 'FullGap-Final'