You are on page 1of 8

PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE

Escuela de Ingeniera
Departamento de Ingeniera Estructural y Geotecnica
ICE 3233 Elementos Finitos

Tarea 1

Alejandro Orellana Urrea


24 de marzo de 2017
Tiempo dedicado: 34 horas
Problema 1. Consideramos la barra 1D de la Figura en el enunciado

i Como vimos en clases, el problema de valor de frontera se puede plantear a partir de las ecuaciones de
equilibrio diferencial, cinem
atica y relacion constitutiva y condiciones de borde

Equilibrio diferencial:

((x)A(x)) + q(x) = 0
x
Cinem
atica:
u(x)
(x) =
x
Relaci
on constitutiva:

(x) = E(x)(x)

Condiciones de borde

u(0) = u0 = 0

u
A(L)E(L) (L) = F
x
Desarrollando la condici
on de equilibrio diferencial por medio de las expresiones cinematicas y constitu-
tivas podemos obtener la formulacion fuerte del problema:

Dado A, E y q encuentre u C 2 (, R) tal que

2
(u(x)AE) + q(x) = 0
x2
(S)
u(0) = u0 = 0

u
AE (L) = F
x

ii Procedemos a resolver la ecuaci


on diferencial
2
(u(x)AE) + q(x) = 0
x2
2 x2
Z
u(x) = q0
x2 AEL2
3
Z
x
u(x) = q0 + C1
x 3AEL2
x4
Z
u(x) = q0 + C1 x + C2
12AEL2

Luego aplicamos las condiciones de borde

u(0) = 0 C2 = 0
q0 L 2q0 L
u(L) = C1 =
x AE 3AE

1
Reemplazando las constantes obtenemos el campo de deformaciones

q0 L  x4 
u(x) = + 8x
12AE L3

iii Para obtener la energa potencial se debe utilizar el funcional definido en clases

Z L 2 Z L
1 
[u(x)] = AE u(x) dx u(x)q(x)dx u(L)F
0 2 x 0

Reemplazando
Z L
1

q0 L  x3 2 Z L 
q0 L  x4  q x2   q L  L4 
0 0
[u(x)] = AE + 2 dx + 8x dx + 8L q0 L
0 2 3AE L3 0 12AE L3 L 12AE L3

Luego de desarrollar las integrales se obtiene el resultado final

2q02 L3 5q 2 L3 3q 2 L3 2q 2 L3
[u(x)] = + 0 0 = 0
7AE 28AE 4AE 7AE

iv Se definen funciones lineales que tienen valor unitario en su nodo y cero en los demas como vimos en
clases


2x h L
x 0,


N1 (x) = L hL 2 i
2x

+2 x ,L
L 2
h L
0 x 0,


N2 (x) = 2x hL 2 i

1 x ,L
L 2

Luego obtenemos sus derivadas


2 h L
x 0,


0
N1 (x) = L hL 2 i
2

x ,L
L 2
h L
0 x 0,

0
N2 (x) = 2 hL 2 i

x ,L
L 2

Ahora, como vimos en clases la aproximacion lineal por tramos tiene la siguiente forma

N
X
uh (x) = NA (x)uA + N g (x)u0
A=1

2
Con lo que en nuestro caso ser
a

uh (x) = N1 (x)u1 + N2 (x)u2

Ahora, tomamos nuevamente la definicion de energa potencial para barra 1D

Z L 2 Z L
1 
[uh (x)] = AE uh (x) dx uh (x)q(x)dx uh (L)F
0 2 x 0

Reemplazamos nuestra aproximaci


on en el funcional

Z L Z L
1
h
[u (x)] = AE(N10 (x)u1 + N20 (x)u2 )2 dx (N1 (x)u1 + N2 (x)u2 )q(x)dx (N1 (L)u1 + N2 (L)u2 )F
0 2 0

Luego de separar estas integrales en tramos y un poco de algebra es posible llegar al siguiente resultado

2AEu21 2AEu1 u2 AEu22 7q0 u1 L 79q0 u2 L


[uh (x)] = + +
L L L 48 96

Ahora hay que minimizar. Para ello se calcularan las derivadas parciales

[uh (x)] 4AEu1 2AEu2 7q0 L


= +
u1 L L 48
h
[u (x)] 2AEu1 2AEu2 79q0 L
= +
u2 L L 96

Si las igualamos a cero obtenemos un sistema de ecuaciones cuya solucion es la siguiente

65L2 q0
u1 =
192AE
3L2 q0
u2 =
4AE

A
un falta comprobar si este punto es un mnimo. Para ello se calcula la matriz Hessiana

4AE
2AE
" #
L L
H=
2AE
L
2AE
L

Utilizamos el metodo para determinar naturaleza de puntos crticos

4AE
|H1 | =
L
4A2 E 2
|H2 | =
L2

3
Vemos que sus menores principales son positivos por tanto la energa potencial posee un mnimo el que
corresponde al encontrado en el sistema de ecuaciones anterior
Ahora utilizamos python para comprobar que la funcion tiene un mnimo. El grafico que se obtiene es el
siguiente

Figura 1: Energa potencial

Donde se puede apreciar que tiene forma de paraboloide y por ende posee un punto mnimo
v Primero hay que reemplazar los valores de u1 y u2 que encontramos antes en la expresion de [uh ]

5233q0 L3
[uh (u1 , u2 )] =
18432AE

Comparamos con el resultado exacto

5233q0 L3 36631q0 L3
[uh ] = =
18432AE 129024AE
2q0 L3 36864q0 L3
[u] = =
7AE 129024AE

Vemos que [uh ] > [u] que es lo esperado ya que el principio de minimizacion dice que la energa
es mnima para la soluci
on exacta, esto quiere decir que la aproximacion lineal sobreestima la energa
potencial. A pesar de eso se puede apreciar que son valores bastante similares.
3
vi Tomamos una funci
on cualquiera perteneciente al espacio S por ejemplo u(x)
2
Al revisar su energa potencial obtenemos lo siguiente

h3 i 9q 2 L3 5q 2 L3 q 2 L3 q 2 L3
u(x) = 0 + 0 0 = 0
2 14AE 42AE 2AE 42AE

El cual es claramente mayor al obtenido por el principio de minimizacion lo que tiene sentido ya que se
tomo una funcion cualquiera. Tambien vale la pena notar que esta es una gran diferencia en comparaci
on
con la diferencia entre la exacta y la del metodo de aproximacion lineal.

Problema 2. El problema consiste en una barra 1D sin desplazamiento en sus bordes

4
i Se cre
o la rutina para calcular los desplazamientos aproximados y las posiciones de los nodos para un
determinado n umero de elementos y polinomio de grado 1.
Por otro lado la soluci
on exacta al sistema es la siguiente


9 31 
u(x) = x2
2 3

Para validar el funcionamiento de la rutina se comparan los resultados con los exactos para una discre-
tizaci
on de cuatro elementos en la siguiente tabla

Nodo 0 1 2 3 4
Posici
on 0 0.25 0.5 0.75 1
u Exacto 0 0.6089241 0.9742786 0.8524938 0
u Aproximado 0 0.6089241 0.9742786 0.8524938 0

Tabla 1: Comparacion desplazamientos

Vemos que son exactamente iguales con lo que estamos conforme con la aproximacon
ii Ahora se realizan aproximaciones para 2,4 y 16 elementos del desplazamiento y la deformacion. Luego se
grafican para compararlas con el resultado exacto. Ambos graficos se presentan a continuacion

Figura 2: Comparacion desplazamientos

Figura 3: Comparacion deformaciones

En donde la aproximaci
on para 2,4 y 16 y la solucion exacta son respectivamente las curvas azul, verde,
roja y cian.
Podemos notar como a mayor n umero de elementos las curvas mejoran considerablemente. Adem as es
importante ver que la curva de deformaciones aproximada es bastante diferente a la exacta con lo que se
comprueba lo mencionado en clases.

5
C
odigos de Python def int2 (p , n ) :
total = 3.* np . sqrt (3.) /(2.* h ) *( n - p
) **2.*(2.* n + p ) ;
# -* - coding : utf -8 -* -
return total ;
import numpy as np
import matplotlib . pylab as plt
for i in np . arange (1 , Nel ) :
from matplotlib import cm
F [i -1] = int1 ( xh [i -1] , xh [ i ]) +
int1 ( xh [ i +1] , xh [ i ]) ;
fig = plt . figure ()
ax = fig . gca ( projection = 3 d )
# print ( F )
A =1.
# La matriz K para nuestro caso no es
E =1.
m s que esto
L =1.
for i in np . arange (0 , Nel -1) :
q =1.
for j in np . arange (0 , Nel -1) :
discr etizati on =100
if i == j :
u1 = np . linspace ( -5. ,5. , disc retizati on )
K [i , j ]=2*(1/ h )
u2 = np . linspace ( -5. ,5. , disc retizati on )
if i == j +1:
u1 , u2 = np . meshgrid ( u1 , u2 )
K [i , j ]= -1*(1/ h )
PI =2.* A * E / L * u1 **2. -2.* A * E / L * u1 * u2 + A * E / L * u2
if i == j -1:
**2.+7.* q * L * u1 /48. -79.* q * L * u2 /96.
K [i , j ]= -1*(1/ h )
surf = ax . plot_surface ( u1 , u2 , PI , cmap = cm .
F = Matrix ( F )
BrBG , linewidth =0)
K = Matrix ( K )
fig . colorbar ( surf , shrink =0.5 , aspect =5)
Kinv = K . inv ()
plt . show ()
# F i n a l m e n t e despejo el uh
U1 =65/192.
Uh = Kinv * F
U2 =3/4.
Pi =2.* A * E / L * U1 **2. -2.* A * E / L * U1 * U2 + A * E / L * U2
# lo paso a array
**2.+7.* q * L * U1 /48. -79.* q * L * U2 /96.
Uh = np . array ( Uh ) . astype ( np . float64 )
print ( Pi )
print ( Pi ) . a s _i n t e g e r _ r a t i o ()
# y para f i n a l i z a r le agrego los
d e s p l a z a m i e n t o s de los bordes
# -* - coding : utf -8 -* -
import numpy as np for i in np . arange (1 , Nel ) :
import matplotlib . pylab as plt uh [ i ]= Uh [i -1]
from sympy import Matrix
import itertools # con ello tengo los dos p a r m e t r o s
de salida que se p e d a n en el
# los p a r m e t r o s de entrada enunciado
p = 1 # print ( uh )
Nel = 16. return ( xh , uh )
def DElasti cityFEM ( Nel , p ) :
# nos i n d i c a r o n hacerlo solo para p = 1 # de a q u en a d e l a n t e es para los g r f i c o s
if p == 1: de la parte 2
# defino uno de los p a r m e t r o s de
salida [ xh16 , uh16 ] = DElasti cityFEM (16 ,1)
[ xh4 , uh4 ] = DEl asticit yFEM (4 ,1)
xh = np . linspace (0. , 1. , Nel +1.) [ xh2 , uh2 ] = DEl asticit yFEM (2 ,1)
# print ( xh )
# las d e m s cosas que u s a r # print ( xh16 )
Nno = Nel + 1. # print ( xh4 )
uh =0* xh # print ( xh2 )
F = np . zeros (( Nel -1 ,1) )
h = xh [1] - xh [0] # print ( uh16 )
K = np . zeros (( Nel -1 , Nel -1) ) # print ( uh4 )
# print ( K ) # print ( uh2 )
# print ( F )
# la exacta
# el valor de F_i lo s e p a r en dos
integrales , la antes del nodo y x = np . linspace (0. , 1. ,1000.)
la despues del nodo u = 9* np . sqrt (3) /6*( x - x **3)
def int1 (a , n ) :
total = 3.* np . sqrt (3.) /(2.* h ) *( a - n fig1 = plt . plot ( xh2 , uh2 , "b - - " ,xh4 , uh4 , "g - - "
) **2.*( a +2.* n ) ; , xh16 , uh16 , "r - - " ,x ,u , " c " )
return total ; plt . xlabel ( dominio )

6
plt . ylabel ( desp lazamie nto )
plt . grid ( True )
plt . show ()

# para las d e f o r m a c i o n e s de la a p r o x i m a c i n
us las p e n d i e n t e s
ux = 9* np . sqrt (3) /2*(1/3 - x **2)

uhx2 = np . diff ( uh2 ) / np . diff ( xh2 )


uhx4 = np . diff ( uh4 ) / np . diff ( xh4 )
uhx16 = np . diff ( uh16 ) / np . diff ( xh16 )

uhx2 = list ( itertools . chain . from_iterable (( e ,


e ) for e in uhx2 ) )
uhx4 = list ( itertools . chain . from_iterable (( e ,
e ) for e in uhx4 ) )
uhx16 = list ( itertools . chain . from_iterable (( e
, e ) for e in uhx16 ) )

# print ( uhx2 )
# print ( uhx4 )
# print ( uhx16 )

xhx2 = []
xhx2 . append ( xh2 [0])
for i in np . arange (1 , len ( xh2 ) -1) :
xhx2 . append ( xh2 [ i ])
xhx2 . append ( xh2 [ i ])
xhx2 . append ( xh2 [ len ( xh2 ) -1])

xhx4 = []
xhx4 . append ( xh4 [0])
for i in np . arange (1 , len ( xh4 ) -1) :
xhx4 . append ( xh4 [ i ])
xhx4 . append ( xh4 [ i ])
xhx4 . append ( xh4 [ len ( xh4 ) -1])

xhx16 = []
xhx16 . append ( xh16 [0])
for i in np . arange (1 , len ( xh16 ) -1) :
xhx16 . append ( xh16 [ i ])
xhx16 . append ( xh16 [ i ])
xhx16 . append ( xh16 [ len ( xh16 ) -1])

# print ( xhx2 )
# print ( xhx4 )
# print ( xhx16 )

fig2 = plt . plot ( xhx2 , uhx2 , --b , xhx4 , uhx4 ,


--g , xhx16 , uhx16 , --r ,x , ux , " c " )
plt . xlabel ( dominio )
plt . ylabel ( deformaci \ on )
plt . grid ( True )
plt . show ()

You might also like