Beam Analysis
© 1997 Waterloo Maple Inc.
NOTE: This worksheet solves for the deflection, slope, bending moment, shear forces of an elastic beam.
Introduction
restart:
This application solves for the deflection, slope, bending moment, shear forces of an elastic beam. A Beam Analysis program is provided which is very general and accomodates a wide variety of support conditions. It uses the principles of MacCauley or singularity functions. The program also demonstrates the power of the Maple programming language.
Some Useful Macros
The following maps common names to
appropriate singularity functions and simplify the definition of boundary
conditions.
dist_force := (x) -> Heaviside(x): #
distributed force
conc_force := (x) -> Dirac(x): #
concentrated force
conc_moment := (x) -> Dirac(1,x): #
concentrated moment
D2 := (x) -> D(D(x)): # short form for
2nd derivative
D1 := (x) -> D(x): # short form for 1st
derivative
The following subroutine solves for the deflection, slope, bending moment, shear forces of an elastic beam. The algorithm formulates the governing 4th order boundary value problem with McCauley forcing functions as the loading conditions, and appropriate boundary conditions for the supports. The BVP is then solved analytically using the method of superposition.
Inputs:
a set of
loading conditions using the concept of MacCauley functions
a set of
boundary conditions that specifies beam supports
Output:
a table
containing the desired solutions.
beam_analyze :=
proc(loadset,bcset)
local N,i,yy,th,m,v,q,de,outab;
# Form differential equation
de := EI*diff(y(x),x$4) =
sum(loadset[i],i=1..nops(loadset)):
dsolve({de} union bcset,y(x)): #
Solve boundary value problem
yy := rhs(%): # Extract
deflection
th := diff(yy,x): # Extract
slope
m := diff(yy,x$2): # Extract
moment
v := diff(yy,x$3): # Extract
shear
print(`Boundary Value Problem to
Solve is`);
print(lhs(de)=op(loadset),bcset);
outab[`deflection`]:=
simplify(yy):
outab[`slope`] := simplify(th):
outab[`moment`] := simplify(m):
outab[`shear`] := simplify(v):
outab:
end:
Problem Statement
The beam is simply supported and is loaded with a uniform distributed load across the whole beam, a distributed load beginning at x = a , a concentrated force at x = b, and a concentrated moment at x = c. Use the subroutine beam_analyze to solve this problem.
Loading and Supports
Define loading and supports (simply supported).
loads := {-w*dist_force(x-a),
-v*conc_force(x-b), m*conc_moment(x-c)}:
supports := {D2(y)(0) = 0,
D2(y)(L)=0,y(L)=0,y(0)=0}:
Parameter Values
External Load Locations and Magnitutes
Distributed force starts at x = a
and spans beam
Concentrated force at x = b
Concentrated moment at x = c
Distributed load: w N/m
Concentrated load: v N
Concentrated moment: m N.m
Material Stiffness: EI N.m^2
L:=10: a:=0: b:=2: c:=4: v:=500: w:=500: m:=10000: EI:=10^6:
Solve the problem:
sol := beam_analyze(loads,supports):
newsol:=convert(sol,table):
Post-Processing
plot(newsol[deflection], x=0..L, title=`Beam Deflection`, axes=BOXED);
Shear Force Diagram
plot(newsol[shear], x=0..L, title=`Shear Force Diagram`, axes=BOXED);
Bending Moment Diagram
plot(newsol[moment], x=0..L, title=`Bending Moment Diagram`, axes=BOXED);
Define Stiffness Relationship and Parameter Range
L:=10: a:=0: b:=2: c:=4: v:=500: w:=500: m:=10000: unassign('EI'):
sol := beam_analyze(loads,supports):
stiff:=convert(sol,table):
EIrange := 1e5 .. 2e6;
Deflection versus Stiffness
plot3d(stiff[deflection],x=0..10,EI=EIrange,axes=BOXED);
Bending Moments versus Stiffness
plot3d(stiff[moment],x=0..10,EI=EIrange,axes=BOXED);
Example Analysis Problems
Variable Distributed Load Analysis
Change the external distributed load
to be linearly dependent upon the location with the following criteria:
Distributed load: LHS=200 and
RHS=1000
Concentrated load: 5500 at x=2 m
Concentrated moment: none
PLOT the deflection and shear force diagrams:
L:=10: a:=0: b:=2: c:=0: v:=5500: w:=200+80*x: m:=0: EI:=10^6:
sol:=beam_analyze(loads,supports):
newsol:=convert(sol,table):
plot(newsol[deflection],x=0..L,title=`Beam Shear`,axes=BOXED);
plot(newsol[shear],x=0..L,title=`Beam Deflection`,axes=BOXED);
Observe the variation in deflection if the concentrated load varies from 0 to 10000. Remove the distributed load i.e. w=0.
newsol:=convert(eval(op(subs(L=10,a=0,b=2,c=0,w=0,m=0,EI=10^6,op(sol)))),table):
L:=10: a:=0: b:=2: c:=0: w:=0: m:=0: EI:=10^6: unassign('v'):
sol:=beam_analyze(loads,supports):
newsol:=convert(sol,table):
plot3d(newsol[deflection],x=0..10,v=0..10000,axes=BOXED);
Example Design Problems
Find Maximum Distributed Force allowing 1% Deflection
Given the following loading
conditions:
Distributed Load : starting at x
= 0 to x = 10
defl:=convert(eval(op(subs(L=10,a=0,b=0,c=0,v=0,m=0,EI=10^6,op(sol)))),table):
L:=10: a:=0: b:=0: c:=0: v:=0: m:=0: EI:=10^6: unassign('w'):
sol:=beam_analyze(loads,supports):
defl:=convert(sol,table):
maxdefl:=defl[slope]=0;
Max deflection will occur at mid span x = 5.
newdefl:=simplify(subs(x=5,defl[deflection])=-0.01*L);
maxforce:=eval(solve(newdefl,w)) * N;
Find Maximum Width of Beam for Given Height and Loads
Given the following loading
conditions:
Concentrated Load: 500 N at
mid-span
Max deflection: 1% of length
occurs at mid-span
height: 0.1 m
Find the Cross Sectional Square Area for an aluminum beam that will support a 1% deflection
cross:=convert(eval(op(subs(L=10,a=0,b=5,c=0,v=500,m=0,w=0,EI=Youngs*(base*height^3)/12,op(sol)))),table):
L:=10: a:=0: b:=5: c:=0: v:=500: m:=0: w:=0: EI:=Youngs*(base*height^3)/12:
sol:=beam_analyze(loads,supports):
cross:=convert(sol,table):
maxhgt:=solve(simplify(subs(x=5,height=.1,Youngs=69E9,cross[deflection])=-.01*L),base);
Change Beam Boundary conditions to Clamped-Clamped and resolve the previous design
Re-run the Beam_Analyze macro in order to determine the new general solution.
New support conditions are indicated as follows.
supports := {D(y)(0) = 0, D(y)(L)=0,y(L)=0,y(0)=0};
L:=10: a:=0: b:=5: c:=0: v:=500: m:=0: w:=0: EI:=Youngs*(base*height^3)/12:
Solve the problem
clamped := beam_analyze(loads,supports):
cross:=convert(clamped,table):
maxhgt:=solve(simplify(subs(x=5,height=.1,Youngs=69E9,cross[deflection])=-.01*L),base);