0% found this document useful (0 votes)
62 views

CEE 471, Fall 2019: HW9 Solutions

This document provides the solutions to homework problem 1. It considers a thin plate subjected to a point load. A finite element discretization is used to approximate the displacement field over the plate. Shape functions are defined for each triangular element. The strain-displacement relationships are derived and the strain energy integral is evaluated for the linear elastic problem by splitting the integral over each triangular element.

Uploaded by

Jonathan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views

CEE 471, Fall 2019: HW9 Solutions

This document provides the solutions to homework problem 1. It considers a thin plate subjected to a point load. A finite element discretization is used to approximate the displacement field over the plate. Shape functions are defined for each triangular element. The strain-displacement relationships are derived and the strain energy integral is evaluated for the linear elastic problem by splitting the integral over each triangular element.

Uploaded by

Jonathan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

CEE 471, Fall 2019: HW9 Solutions

Bhavesh Shrimali, Aditya Kumar


Department of Civil and Environmental Engineering, University of Illinois, Urbana–Champaign, IL 61801, USA

Problem 1:
We consider a thin plate as shown in Figure (1) of width w, length l and height h made out of a
material with Young’s modulus E and Poisson’s ratio ν. It is fixed to the ground and subjected to a point
load P = P e1 on its upper right corner.

P = P e1

e

l=1 e

w=1

Clamped: u = 0

Figure 1: Thin plate of interest

Recall that the potential energy of an linear elastic isotropic material is given by
Z   Z
λ 2
E{u} = µ trε2 + (trε) dV − t · u dS, (1)
Ω0 2 ∂Ω0

when of body-forces are not considered. As the Poisson’s ratio is zero, εi3 = 0 for i=1,2,3. Hence we
construct a 2D finite-element approximation of the displacement field
Ne X
X Nn
u (X) = θ(e) (X) un(e) Nn(e) (X) ,
e=1 n=1

Ne X
X Nn
v (X) = θ(e) (X) vn(e) Nn(e) (X) . (2)
e=1 n=1
The scalars Ne and Nn denote the total number of elements and the number of nodes per element, while
(e) (e)
un and vn are the horizontal and vertical displacements of node n of element E(e) . θ(e) corresponds to
the characteristic function for element E(e) and is given by
(
(e) 1 if X ∈ E(e)
θ (X) = ,
0 otherwise

Email addresses: bshrima2@illinois.edu (Bhavesh Shrimali), akumar51@illinois.edu (Aditya Kumar)


(e)
while Nn is the shape function associated with node n of element E(e) .
The element discretization for the problem of interest is presented Figure (2), hence Ne = 3, Nn = 3.
For such triangular elements with linear interpolation of the nodal displacements, the shape function
(e)
Nn (x, y) is expressed as
Nn(e) (x, y) = a1 + a2 x + a3 y,
where the parameters a1 , a2 and a3 are determined for each node n through
    
(e) (e)
1 x1 y1 a1 u1
    
 1 x(e) y (e)   a2  =  u2 
 2 2    ,
(e) (e)
1 x3 y3 a3 u3

(e) (e) (e) (e) (e) (e)


with uk = δkn and the coordinates of the three nodes of element E(e) , x1 , y1 , x2 , y2 , x3 and y3 .
Using the nodal numbering indicated on Figure (2), the shape functions read as

• Element E(1)
(1) y (1) 2x (1) 2x y
N1 (x, y) = 1 − , N2 (x, y) = and N3 (x, y) = − +
l w w l

• Element E(2)
(2) x y (2) x y (2) y
N1 (x, y) = 1 − − , N2 (x, y) = − and N3 (x, y) =
w 2l w 2l l

• Element E(3)
(3) y (3) 2x y (3) 2x
N1 (x, y) = 1 − , N2 (x, y) = −2 + + and N3 (x, y) = 2 − .
l w l w

Figure 2: Nodal and degree of freedom numbering

Note that the numbering of nodes is done in an anticlockwise manner. This is important to maintain
a positive jacobian. Now making use of the fixed boundary condition at y = 0, we prescribe the following
values
(1) (1) (2) (2) (2) (2) (3) (3)
u1 = v1 = u1 = v1 = u2 = v2 = u1 = v1 = 0
and denote for simplicity
(1) (1) (1) (2) (3) (1) (2) (3) (3) (3)
α1 = u3 , α2 = v3 , α3 = u2 = u3 = u3 , α4 = v2 = v3 = v3 , α5 = u2 and α6 = v2 .
2
Here we have made use of the condition of displacement continuity at all nodes among different elements.
Then the displacement field becomes
       
2x y 2x y 2x 2x y
u (x, y) = − + α1 + α3 θ(1) + α3 θ(2) + 2 − α3 + −2 + + α5 θ(3)
w l w l w w l
and
       
2x y 2x y 2x 2x y
v (x, y) = − + α2 + α4 θ(1) + α4 θ(2) + 2 − α4 + −2 + + α6 θ(3) ,
w l w l w w l
where the argument of the indicator functions has been dropped for convenience. It follows that
∂u α3 − α1 (1) α5 − α3 (3)
ε11 = =2 θ +2 θ , (3)
∂x w w
∂v α2 (1) α4 (2) α6 (3)
ε22 = = θ + θ + θ , (4)
∂y l l l
     
1 ∂u ∂v α1 α4 − α2 α3 (2) α5 α6 − α4
ε12 = + = + θ(1) + θ + + θ(3) . (5)
2 ∂y ∂x 2l w 2l 2l w
In this problem it is sufficient to spell out
 2 h
α3 − α1 (1) α5 − α3 (3) α2 (1) α4 (2) α6 (3) i2
tr ε2 = 2 θ +2 θ + θ + θ + θ
w w l l l
    2
α1 α4 − α2 (1) α3 (2) α5 α6 − α4 (3)
+2 + θ + θ + + θ , (6)
2l w 2l 2l w
Eν E
as λ = = 0 MPa and µ = = 5 MPa.
(1 + ν) (1 − 2ν) 2 (1 + ν)
It must be noticed first that in Expression (6) the terms of the form θ(i) (x, y)θ(j) (x, y) with i 6= j are
zero over any subvolume in Ω0 . Hence they do not contribute to the integral over Ω0 in Equation (1).
Also note that terms of the form θ(i) (x, y)θ(i) (x, y) are equal to θ(i) (x, y). Then upon splitting the integral
over Ω0 in Equation (1) onto the sum of the integrals over each element E(e) and recognizing that the
respective integrants are constant, we have
"  2 #  2 
R (α3 − α1 )2
α 2
2 α1 α 4 − α2 (1) α3 + 2α4 2
Ω0
2
tr ε dV = 4 + 2 +2 + |E | + |E(2) |
w2 l 2l w 2l2
"  2 #
(α5 − α3 )2 α42 α5 α6 − α4
+ 4 + 2 +2 + |E(3) |,
w2 l 2l w

1
wlh and |E(2) | = 2|E(1) |.
where |E(e) | denotes the volume of element E(e) . They are |E(1) | = |E(3) | =
4
As far as the traction term in energy is concerned, we simply have from Equation (1)
Z
t · u dS = P α5 .
∂Ω0

Hence, the energy for the FE displacement fields E app reads as



8lwE app (α1 , ..., α6 ) = 4hµl2 2α1 2 − 4α1 α3 + α2 2 − 2α2 α4 + 4α3 2 − 4α3 α5 + 2α4 2 − 2α4 α6 + 2α5 2 + α6 2
−4lwhµ(α1 α2 − α1 α4 + α4 α5 − α5 α6 ) − 8lwP α5

+hµw2 α1 2 + 2α2 2 + 2α3 2 + 4α4 2 + α5 2 + 2α6 2 .
Employing the numerical values for the problem renders
E app (α1 , ..., α6 ) = 56.25α1 2 + α1 (−25α2 − 100α3 + 25α4 ) + 37.5α2 2 − 50α2 α4 + 112.5α3 2 − 100α3 α5

+75α4 2 − 25α4 α5 − 50α4 α6 + 56.25α5 2 + 25α5 α6 + 37.5α6 2 × 103 − 10α5 .
3
∂E app
Minimizing this quantify with respect to α1 to α6 — = 0 — leads to the system of linear
∂αi
equations which when solved gives
Ku = f ,
with
     
112.5 −25 −100 25 0 0 0 α1
     
 75 0 −50 0 0  0   α2 
     
 225 0 −100 0   0   α3 
     
K=  × 103 , f =  and u =  .
 150 −25 −50   0   α4 
     
     
 sym. 112.5 25   10   α5 
75 0 α6

It follows that
 
278.49
 
 99.33 
 
 290.91 
 
u=  µm
 9.76 
 
 
 376.05 
−118.85

Plugging into Equations (3)-(5) for ε and using linear elasticity under the plane stress assumption and
ν = 0 — σ11 = 2µ ε11 , σ12 = 2µ ε12 and σ22 = 2µ ε22 — yields

1.0
Element # Strain (×10−6 ) Stress (MPa)
ε11 = 24.83 σ11 = 248.3
0.8
1 ε22 = 99.33 σ22 = 993.3
e=1
ε12 = 49.67 σ12 = 496.7 e=3
0.6 e=2
ε11 = 0.0 σ11 = 0.0
2 ε22 = 9.76 σ22 = 97.6 0.4
ε12 = 145.5 σ12 = 1455.0
ε11 = 170.3 σ11 = 1703.0 0.2

3 ε22 = −118.9 σ22 = −1188.0


Ω0: Undeformed Ω: Deformed
ε12 = 59.42 σ12 = 594.2 0.0

0.0 0.2 0.4 0.6 0.8 1.0 1.2


Table 1: Stresses and strains for each element
Figure 3: Deformed Geometry
The deformed configuration, presented on Figure (3), corresponds to one where the displacements have
been magnified 1000 times to ease the visualization. ♣

Problem 2:

We begin by finding the solution of the linearized beam equation under an axial load which is given
by
EIθ00 + P θ = 0 (7)

4
with the boundary conditions θ0 (0) = 0 and θ0 (L) = 0. The boundary conditions are defined such that
moment vanishes at the two ends of the beam. The solution of the second order linear homogeneous
equation (7) is given by (for P > 0)

θ = K1 cos(λx) + K2 sin(λx)

with λ2 = P/EI. Applying the boundary conditions, we obtain K2 = 0 and either K1 = 0 or λ = nπ/L
where n is an integer. Hence the bifurcation solution is simply given by
 nπ 
θ = K1 cos x (8)
L
The critical load is the one corresponding to the lowest value of n and hence becomes

π2
Pcr = EI
L2

To do a stability analysis, we need to compute the second variation of energy corresponding to the solution
of nonlinear version of the equation (7). As it is difficult to compute its exact solution, we will obtain
an approximate solution with Rayleigh-Ritz method. We choose the following ansatz for the approximate
solution  πx 
θapp = Acos (9)
L
This choice is guided by the solution (8) of the linearized equation. The energy functional is defined as
Z l
1 2
E{θ} = EI (θ0 (x)) + P cos θ(x)dx.
0 2
Then substituting θapp in the energy functional and differentiating with respect to A renders
Z l  πx  Z l  πx    πx 
π2
A EI 2 sin2 +P cos sin Acos dx = 0
0 L L 0 L L
Expanding the sine function in the second term as a Taylor series
 πx 
sin(y) = y − y 3 /3! + HOT with y = Acos
L
and integrating, we obtain
  
L 1 π2
A P1 − P 1 − A 2 =0 where P1 = Pcr = EI
2 8 L2

which again yields two solutions: either A = 0 or P = P1 /(1 − A2 /8). To check the stability of these two
solutions, we compute the second derivative of energy functional with respect to the degree of freedom A
  
d2 E app L 3 2
= P1 + P −1 + A (10)
dA2 2 8
Substituting the first solution, A = 0, in this expression yields

d2 E app L
= (P1 − P )
dA2 2
and is hence stable if P < P1 . Substituting the second solution, P = P1 /(1 − A2 /8), into (10) yields
 
d2 E app A2
= P1 L
dA2 8 − A2

and hence is stable for A < 8. ♣
5
HW9_Calculations

December 6, 2019

1 HW9: Finite Elements (Rayleigh-Ritz) and Stability

[1]: from sympy import *


import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import AutoMinorLocator
plt.rc('text',usetex=True)
init_printing()
plt.rcParams['ytick.right']='True'
plt.rcParams['ytick.direction']='in'
plt.rcParams['ytick.labelsize']=26
plt.rcParams['xtick.labelsize']=26
plt.rcParams['xtick.minor.visible']=True
plt.rcParams['ytick.minor.visible']=True
plt.rcParams['xtick.major.size']=8
plt.rcParams['xtick.minor.size']=4
plt.rcParams['ytick.major.size']=8
plt.rcParams['ytick.minor.size']=4
plt.rcParams['lines.markersize']=np.sqrt(36)

1.1 Initialize the degrees of freedom

[2]: alph = zeros(6,1)


for i in range(len(alph)):
alph[i] = Symbol('alpha_{}'.format(i+1),real=True)

[3]: alph
[3]:
 
α1
α2 
 
α3 
 
α4 
 
α5 
α6

1
[4]: x = Symbol('x',real=True)
y = Symbol('y',real=True)

a1 = Symbol('a_1',real=True)
a2 = Symbol('a_2',real=True)
a3 = Symbol('a_3',real=True)

l = Symbol('l',real=True)
w = Symbol('w',real=True)
h = Symbol('h',real=True)

N1_1 = a1 + a2*x + a3 *y #shape function for node 1 subscript (elem: no.)


N3_1 = a1 + a2*x + a3 *y
N1_2 = a1 + a2*x + a3 *y
N1_3 = a1 + a2*x + a3 *y
N3_3 = a1 + a2*x + a3 *y

1.2 Determine the shape functions

[5]: # Triangle 1
sys1_1 = solve_linear_system(Matrix([[1.,0,l,1], [1.,0,0,0], [1,0.
,→5*w,l,0]]),a1,a2,a3)

sys2_1 = solve_linear_system(Matrix([[1.,0,l,0], [1.,0,0,0], [1,0.


,→5*w,l,1]]),a1,a2,a3)

# Triangle 2
sys1_2 = solve_linear_system(Matrix([[1.,0.5*w,l,1], [1.,0,0,0],␣
,→[1,w,0,0]]),a1,a2,a3)

# Triangle 3
sys1_3 = solve_linear_system(Matrix([[1.,0.5*w,l,1], [1.,w,0,0],␣
,→[1,w,l,0]]),a1,a2,a3)

sys2_3 = solve_linear_system(Matrix([[1.,0.5*w,l,0], [1.,w,0,0],␣


,→[1,w,l,1]]),a1,a2,a3)

[6]: # Triangle 1
N1_1 = N1_1.subs(sys1_1)
N3_1 = N3_1.subs(sys2_1)

# Triangle 2
N1_2 = N1_2.subs(sys1_2)

# Triangle 3
N1_3 = N1_3.subs(sys1_3)
N3_3 = N3_3.subs(sys2_3)

2
1.2.1 Look for the displacement field u and v

[21]: N3_1
[21]:
2.0x
w

[8]: # Triangle 1
u1_1 = N1_1*alph[0] + N3_1*alph[2]
v1_1 = N1_1*alph[1] + N3_1*alph[3]

# Triangle 2
u1_2 = N1_2*alph[2]
v1_2 = N1_2*alph[3]

# Triangle 3
u1_3 = N1_3*alph[2] + N3_3*alph[-2]
v1_3 = N1_3 * alph[3] + N3_3*alph[-1]

[9]: eps_1 = Matrix([[u1_1.diff(x),0.5*(u1_1.diff(y) + v1_1.diff(x)) ], [0.5*(u1_1.


,→diff(y) + v1_1.diff(x)), v1_1.diff(y)]])

eps_2 = Matrix([[u1_2.diff(x),0.5*(u1_2.diff(y) + v1_2.diff(x)) ], [0.5*(u1_2.


,→diff(y) + v1_2.diff(x)), v1_2.diff(y)]])

eps_3 = Matrix([[u1_3.diff(x),0.5*(u1_3.diff(y) + v1_3.diff(x)) ], [0.5*(u1_3.


,→diff(y) + v1_3.diff(x)), v1_3.diff(y)]])

1.2.2 Material properties

[22]: mu = 1.e7/2
nu = 0.
lmbda = 0.
P = 10.
# l = w = 1
# h = 0.01

# A_i are the elemental volumes


A3 = A1 = 1/4*w*l*h
A2 = 2*A3
# Defining the potential energy
U = mu*trace(eps_1*eps_1)*A1 + mu*trace(eps_3*eps_3)*A3 +␣
,→mu*trace(eps_2*eps_2)*A2 - P*alph[4]

[23]: eqns = []
for i in range(len(alph)):
eqns.append(U.diff(alph[i]))

3
[24]: eqns[0].subs(subs_list)
eps_1[0,0]
[24]:
2.0α1 2.0α3
− +
w w

[25]: soln = solve(eqns,alph)

[26]: alph_new = alph.subs(soln)

[27]: alph_new
[27]:
 
8.0·10−6 l3 (256.0l6 +192.0l4 w2 +24.0l2 w4 −w6 )
 hw(512.0l8 +640.0l−5 6 w 2 +176.0l4 w 4 +24.0l2 w 6 +w 8 )

 6.4·10 l6 (16.0l2 +5.0w2 ) 
 
 h(512.0l8 +640.0l6 w2 +176.0l4 w4 +24.0l2 w6 +w8 ) 
 −5
3.2·10 l (2.0l +w )
3 2 2 
 
 4 2
hw(16.0l +16.0l w +w ) 2 4 
 −6
4.0·10 l w 2 2 
 4 2
h(32.0l +8.0l w +w ) 2 4 
 
 8.0·10−6 l(256.0l8 +256.0l6 w2 +104.0l4 w4 +19.0l2 w6 +w8 ) 
 hw(512.0l8 +640.0l6 w2 +176.0l4 w4 +24.0l2 w6 +w8 ) 
 
8.0·10−6 l2 (128.0l6 +56.0l4 w2 +16.0l2 w4 +w6 )
− h(512.0l8 +640.0l6 w2 +176.0l4 w4 +24.0l2 w6 +w8 )

[28]: subs_list = [(l,1), (w,1), (h,0.01)]

[29]: alph_new = alph_new.subs(subs_list)


alph_new * 10**6
[29]:
 
278.492239467849
 99.3348115299335 
 
 290.909090909091 
 
 9.75609756097561 
 
 376.053215077605 
−118.847006651885

[30]: import matplotlib.tri as tri

[39]: u = np.array([alph_new],float).flatten()
u_def = u * 5.e2

[40]: xnodes = np.array([0., 1., 1., 0.5, 0.])


ynodes = np.array([0., 0., 1., 1, 1])
conn = [[0,3,4], [0,1,3], [1,2,3]]
triangles = tri.Triangulation(xnodes, ynodes, triangles = conn)

4
[41]: xnodes_def = np.array([0.,1.,1+u_def[-2],0.5+u_def[-4],u_def[0]])
ynodes_def = np.array([0.,0.,1+u_def[-1],1+u_def[-3],1+u_def[1]])
triangles_def = tri.Triangulation(xnodes_def, ynodes_def, triangles = conn)

[44]: fig,ax = plt.subplots(1,1,figsize=(10,10))


ax.triplot(triangles,'r-',lw=3,label=r'$\Omega_0$: Undeformed')
ax.triplot(triangles_def,'b--',lw=3,label=r'$\Omega$: Deformed')
# ax.grid(which='major')
ax.text(0.15,0.65,r'$e = 1$',fontsize=26,transform=ax.
,→transAxes,bbox=dict(facecolor='wheat',edgecolor='k'))

ax.text(0.4,0.55,r'$e = 2$',fontsize=26,transform=ax.
,→transAxes,bbox=dict(facecolor='wheat',edgecolor='k'))

ax.text(0.7,0.6,r'$e = 3$',fontsize=26,transform=ax.
,→transAxes,bbox=dict(facecolor='wheat',edgecolor='k'))

ax.tick_params(pad=10)
ax.xaxis.set_minor_locator(AutoMinorLocator(20))
ax.yaxis.set_minor_locator(AutoMinorLocator(20))
h,l = ax.get_legend_handles_labels()
ax.legend(loc='lower center',handles = [h[0],h[2]],labels =␣
,→[l[0],l[2]],fontsize=30,ncol=4,fancybox=False,facecolor='wheat',edgecolor='k',shadow=True)

fig.tight_layout()
fig.savefig(r'plotP1.eps')

5
[ ]: alph_subs = {alph[i]:alph_new[i] for i in range(len(alph))}

[ ]: # Calculate the strains in the elements

# Element 1:
eps1 = eps_1.subs(alph_subs).subs(subs_list)

# Element 2:
eps2 = eps_2.subs(alph_subs).subs(subs_list)

# Element 3:
eps3 = eps_3.subs(alph_subs).subs(subs_list)

6
[ ]: eps1*10**6

[ ]: eps2*10**6

[ ]: eps3*10**6

[ ]: eps1*10**7

[ ]: eps2*10**7

[ ]: eps3*10**7

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy