# Elastic Beam (Buckling)

Problem Statement

Note

To view this project in FLAC3D, use the menu command . The main data file is shown at the end of this example.

This example demonstrates the buckling behavior of an axially loaded beam with small initial deflection. The beam rests on a base and is fixed in lateral translation at its ends. A global system of coordinates is defined with the \(z\)-axis pointing upward, oriented along the axis of the beam, and with origin at the base of the beam. The beam initial shape is defined by the equation found in Massonnet (1960):

where \(l\) is beam length, and \(f_0\) is maximum initial deflection.

The additional deflection taken by the beam under an axial load, \(P\), is predicted from linear stability analysis by the equation

where \(P_{cr}\) is the minimum critical load for buckling.

The minimum critical load is defined as

where \(E\) is Young’s modulus, and \(I\) is the moment of inertia for lateral flexion.

The additional deflection at the center of the beam \(f\) is thus

For this example, the beam is 200 m long, and the maximum amplitude of initial deflection is 1 cm (or 0.005% of the beam length). Young’s modulus \((E)\) is 257 MPa, and the moment of inertia for lateral flexion \((I_y)\) is 5.333 m^{4}. The properties \(\{ A, I_z, J, \nu \}\) are not relevant for this problem; however, they are needed as input for the FLAC3D model. The beam is modeled with 20 elements, translation is fixed in all directions at the base, and in the \(x\) and \(y\) directions at the top. An axial load is applied in increments at the beam top until the critical load is reached. After each increment, the model is cycled to mechanical equilibrium and the load deflection is recorded in a table.

The beam deflection is seen to increase beyond measure as the load converges to the minimum critical value, as expected and shown in Figure 1. A comparison between the analytical solution and numerical prediction for additional deflection at the center of the beam is presented in Figure 2. There is an excellent match between the numerical prediction and the analytical solution.

Reference

Massonnet, C. E. Résistance Des Matériaux. Sciences Et Lettres, Liége (1960).

Data File

**AxialBuckling.dat**

```
; Axial loading of a beam with small initial deflection.
; Load versus additional deflection at beam half length:
model new
fish automatic-create off
model title 'Elastic Beam (Buckling)'
; Create a beam of 20 elements with a sin wave initial deflection in x
fish define createBeam
local p2 = vector(0,0,0)
loop local z (10,200,10)
local p1 = p2
p2 = vector(math.sin(math.pi*z/200)/100,0,z)
command
*structure beam create by-line [p1] [p2] id 1 ...
element-type euler-bernoulli
end_command
end_loop
end
[createBeam]
; Setup properties and boundary conditions
model large-strain on
structure beam cmodel assign elastic
structure beam property young 2.57e8 cross-sectional-area 4 ...
direction-y (0,1,0) moi-y 5.33 moi-z 5.333 ...
torsion-constant 0.0 poisson 0.3
structure node fix velocity range position-z 0
structure node fix velocity-x velocity-y range position-z 200
; create history
structure node history displacement-x position (0,0,100)
structure node history displacement-y position (0,0,100)
; define loading sequence, in a table as a fraction of the critical load
table 'seq' add (1,.1) (2,.2) (3,.3) (4,.4) (5,.5) (6,.6) (7,.7) (8,.8) ...
(9,.9) (10,.92) (11,.94) (12,.96) (13,.97) (14,.98) (15,.99)
; Apply Each load in sequence, and record deflection after equilibrium
fish define loadDeflection
local endNode = struct.node.near(0,0,200)
local midNode = struct.node.near(0,0,100)
local Pcr = (math.pi/200)^2 * 2.57e8 * 5.333
loop local i (1,table.size('seq'))
local load = table('seq',i) * Pcr
struct.node.apply(endNode,3) = -load
io.out('Loading step '+string(i))
command
model solve convergence 5e-4
end_command
local pos = struct.node.pos(midNode)
pos->z = 0
local deflect = math.mag(pos) - 0.01
local x = 0.01/(Pcr/load - 1)
table('def',deflect) = load
table('anal',x) = load
command
model save ['load'+string(load*100/Pcr)]
end_command
end_loop
end
[loadDeflection]
model save 'AxialBuckling'
```

Was this helpful? ... | Itasca Software © 2024, Itasca | Updated: Sep 26, 2024 |