FEA Project Report - Alireza Khorshidi
FEA Project Report - Alireza Khorshidi
FEA Project Report - Alireza Khorshidi
Brown University
FEA Project
Finite Element Analysis of a Timoshenko Beam
Alireza Khorshidi
12/11/13
Introduction [1]: The theory of Timoshenko beam was developed early in the twentieth century
by the Ukrainian-born scientist Stephan Timoshenko. Unlike the Euler-Bernoulli beam, the
Timoshenko beam model accounts for shear deformation and rotational inertia effects.
Therefore, the Timoshenko beam can model thick (short) beams and sandwich composite beams.
The stiffness of the Timoshenko beam is lower than the Euler-Bernoulli beam, which results in
larger deflections under static loading and buckling. The limiting case of infinite shear modulus
will neglect the rotational inertia effects, and therefore will converge to the ordinary Euler-
Bernoulli beam.
Dimension Analysis: The variables in the problem are 𝑤, 𝜃, 𝑞, 𝐸, 𝐼, 𝐿, 𝐺, 𝐴 and there are two
independent variables. Therefore, I expect that the solution finally be a function in the following
form:
𝐼 𝐴 𝐸 𝑞
𝑤/𝐿 = 𝑓1 � 4 , 2 , , �, (1)
𝐿 𝐿 𝐺 𝐸𝐿
𝐼 𝐴 𝐸 𝑞 (2)
𝜃 = 𝑓2 � 4 , 2 , , �.
𝐿 𝐿 𝐺 𝐸𝐿
Theoretical Formulation [2]: In the Timoshenko theory, the displacement field is assumed to
be
1
𝜕𝑢𝑥
𝜀𝑥𝑥 = = −𝑦 𝜃 ′ (𝑥), 𝜀𝑦𝑦 = 0, 𝛾𝑥𝑦 = −𝜃(𝑥) + 𝑤 ′ (𝑥), (4)
𝜕𝑥
𝜈
𝜎𝑥𝑥 = −𝐸𝑦𝜃 ′ (𝑥), 𝜎𝑦𝑦 = −𝐸 𝑦 𝜃 ′ (𝑥), 𝜎𝑥𝑦 = 𝜅𝐺 𝛾𝑥𝑦 = 𝜅𝐺 �𝑤 ′ (𝑥) − 𝜃(𝑥)�.
1 − 𝜈2
(5)
1 1
𝜋 = � 𝜎𝑥𝑥 𝜀𝑥𝑥 𝑑𝑉 + � 𝜎𝑥𝑦 𝜀𝑥𝑦 𝑑𝑉 − � 𝑞(𝑥)𝑤(𝑥)𝑑𝑥 (6)
2 2
Substituting the expressions of strains and stresses into Eq. (6) yields
1 1
𝜋 = 2 ∫ 𝐸𝜀𝑥𝑥 2 𝑑𝑉 + 2 ∫ 𝜅𝐺𝛾𝑥𝑦 2 𝑑𝑉 − ∫ 𝑞(𝑥)𝑤(𝑥)𝑑𝑥 =
1 1
2
∫ ∫ 𝐸𝑦 2 (𝜃 ′ (𝑥))2 𝑑𝐴𝑑𝑥 + 2 ∫ ∫ 𝜅𝐺(−𝜃(𝑥) + 𝑤 ′ (𝑥))2 𝑑𝐴𝑑𝑥 − ∫ 𝑞(𝑥)𝑤(𝑥)𝑑𝑥.
𝐿 𝐿 𝐿
1 1
⇒ 𝜋 = 𝐸𝐼 � (𝜃 ′ (𝑥))2 𝑑𝑥 + 𝜅𝐺𝐴 � (−𝜃(𝑥) + 𝑤 ′ (𝑥))2 𝑑𝑥 − � 𝑞(𝑥)𝑤(𝑥)𝑑𝑥 (7)
2 0 2 0 0
𝐿 𝐿 𝐿
𝑑𝜃(𝑥) 𝑑𝛿𝜃 𝑑𝑤(𝑥) 𝑑𝛿𝑤
𝛿𝜋 = 𝐸𝐼 � 𝑑𝑥 + 𝜅𝐺𝐴 � �𝜃(𝑥) − � �𝛿𝜃 − � 𝑑𝑥 − � 𝑞(𝑥)𝛿𝑤𝑑𝑥
0 𝑑𝑥 𝑑𝑥 0 𝑑𝑥 𝑑𝑥 0 (8)
=0
2
Next the FEA interpolation for 𝑤(𝑥), 𝜃(𝑥), 𝛿𝑤, and 𝛿𝜃 should be introduced [3].
𝑤(𝑥) = � 𝑁 𝑎 𝑤 𝑎 , 𝜃(𝑥) = � 𝑁 𝑎 𝜃 𝑎 ,
𝑎 𝑎
(9)
𝛿𝑤 = � 𝑁 𝑏 𝛿𝑤 𝑏 , 𝛿𝜃 = � 𝑁 𝑏 𝛿𝜃 𝑏
𝑏 𝑏
𝐿 𝐿
𝑎
𝑑𝑁 𝑎 𝑑𝑁 𝑏
𝑏 𝑎 𝑎
𝑑𝑁 𝑎 𝑎 𝑏 𝑏
𝑑𝑁 𝑏
𝛿𝜋 = 𝐸𝐼𝜃 𝛿𝜃 � 𝑑𝑥 + 𝜅𝐺𝐴 � �𝑁 𝜃 − 𝑤 � �𝑁 𝛿𝜃 − 𝛿𝑤 𝑏 � 𝑑𝑥
0 𝑑𝑥 𝑑𝑥 0 𝑑𝑥 𝑑𝑥
(10)
𝐿
− 𝛿𝑤 𝑏 � 𝑞(𝑥)𝑁 𝑏 𝑑𝑥 = 0
0
𝐿 𝐿 𝐿
𝑑𝑁 𝑎 𝑑𝑁 𝑏 𝑎 𝑎
𝑑𝑁 𝑏
�𝜅𝐺𝐴 � 𝑑𝑥� 𝑤 + �−𝜅𝐺𝐴 � 𝑁 𝑑𝑥� 𝜃 = � 𝑞(𝑥)𝑁 𝑏 𝑑𝑥.
𝑎 (11a)
0 𝑑𝑥 𝑑𝑥 0 𝑑𝑥 0
𝐿 𝐿 𝐿
𝑑𝑁 𝑎 𝑏 𝑑𝑁 𝑎 𝑑𝑁 𝑏
�−𝜅𝐺𝐴 � 𝑁 𝑑𝑥� 𝑤 𝑎 + �𝜅𝐺𝐴 � 𝑁 𝑎 𝑁 𝑏 𝑑𝑥 + � 𝐸𝐼 𝑑𝑥 � 𝜃 𝑎 = 0. (11b)
0 𝑑𝑥 0 0 𝑑𝑥 𝑑𝑥
The above integrals should first be calculated using Gaussian quadrature scheme, and then
𝑲𝒖 = 𝑭, (12)
where 𝒖 = {𝑤 1 𝑤2 𝑤3 … 𝑤𝑁 𝜃1 𝜃2 … 𝜃 𝑁 }T .
Eqs. (11) has been implemented in a Matlab code. The code is self-explanatory, and is given in
3
Results:
The Timoshenko beam subjected to uniform load distribution with different boundary conditions
has been already solved analytically. The table below summarized the analytical results [4]; in
this table 𝜈 is the displacement, and the subscripts E and T correspond to Euler-Bernouli beam
Timoshenko beam is solved with FEA and analytically. The below table compare the results:
4
Table 2: Displacements of the simply supported Timoshenko beam
The next example is the cantilever beam with the same loading, material properties, and
geometries as the previous example. One hundred elements have been used for this example.
The maximum displacement at the end of the beam is 0.3906. For the limiting case of 𝜅 → ∞,
the special case of Euler-Bernoulli beam is obtained. In this example, the maximum
5
displacement of the Euler-Bernoulli beam is calculated as 0.3750. And so, the shear deformation
In the FEA code, first two Gaussian points were used for all integrations. However, the
convergence was relatively slow, and therefore, I finally ended up with two integration points for
the bending part of the stiffness matrix and one integration point for the shear part of the stiffness
matrix.
References:
[1] http://en.wikipedia.org/wiki/Timoshenko_beam_theory
visco-elastic behavior.
6
Appendix: The Matlab code used for the above calculations is given below:
function Bending_of_Timoshenko_Beam_V3
%................................................................
clc;
clear all
%Distributed load
q = -1000;
% Mesh
nelm = 100;
ncoords=linspace(0,L,nelm+1); % node coordinates
7
% solution
%displacements=solution(TotalDofs,prescribedDof,stiffness,resid);
activeDof=setdiff((1:TotalDofs)', (prescribedDof));
U=stiffness(activeDof,activeDof)\resid(activeDof);
displacements=zeros(TotalDofs,1);
displacements(activeDof)=U;
% displacements
disp('Displacements and Rotations:')
%displacements=displacements1;
jj=1:TotalDofs; format
[jj' displacements]
end
%
%================= STIFFNESS MATRIX AND RESIDUAL VECTOR
================================
%
% This function computes the stiffness matrix and residual vector for
% Timoshenko beam
%
function [stiffness,resid]=...
GlobalStiffnessAndResidual(TotalDofs,nelm,connect,nnodes,q,EI,kappa,h,G,L)
stiffness=zeros(TotalDofs);
resid=zeros(TotalDofs,1);
8
N = shapefunctions(xi);
dNdxi = shapefunctionderivs(xi);
%
% Convert shape function derivatives:derivatives wrt global coords
%
dNdx=dNdxi*dxidx;
%
% Compute B matrix
%
B=zeros(2,2*ndof);
B(1,ndof+1:2*ndof) = dNdx(:);
%
% Compute K matrix and residual vector
%
stiffness(elmdof,elmdof) = stiffness(elmdof,elmdof) + transpose(B)*B*w(intpt)*dett*EI;
resid(indice) = resid(indice) + N*q*dett*w(intpt);
end
end
%
% Shear contribution for stiffness matrix
%
% Integration points and wieghts for shear
integrationpoints=[0];
w=[2];
%
% Loop over elements
%
for e=1:nelm
indice=connect(e,:);
elmdof=[ indice indice+nnodes];
ndof=length(indice);
%
% Loop over the integration points
%
for intpt=1:size(w,2) ;
%
% Compute shape functions && derivatives wrt local coords
%
xi=integrationpoints(intpt);
N = shapefunctions(xi);
dNdxi = shapefunctionderivs(xi);
%
% Convert shape function derivatives:derivatives wrt global coords
%
dNdx=dNdxi*dxidx;
%
% Compute B matrix
%
9
B=zeros(2,2*ndof);
B(2,1:ndof) = dNdx(:);
B(2,ndof+1:2*ndof) =- N;
%
% Compute K matrix
%
stiffness(elmdof,elmdof) = stiffness(elmdof,elmdof) + kappa*h*G*transpose(B)*B*w(intpt)*dett;
end
end
end
%
%================= SHAPE FUNCTIONS ==================================
%
% Calculates shape functions for various element types
%
function N = shapefunctions(xi)
N = zeros(2,1);
%
% 1D elements
%
N(1) = 0.5*(1.-xi(1));
N(2) = 0.5*(1.+xi(1));
end
%
%================= SHAPE FUNCTION DERIVATIVES ======================
%
function dNdxi = shapefunctionderivs(xi)
dNdxi = zeros(1,2);
%
% 1D elements
%
dNdxi(1) = -0.5;
dNdxi(2) = +0.5;
end
%
%
10