Está en la página 1de 11

Universidad Tecnológica

Metropolitana
Departamento de mecánica

Programación en Matlab de
análisis estructural 2D por
método de los nodos

Franco Fuentes Rampoldi

Trabajo 1 Introducción al método de


elementos finitos

Profesor
Christian Muñoz

September 22, 2018


Método de los nodos para análisis estructural
Una armadura es una estructura que se compone de un conjunto de miembros
uniformes. La armadura tiene como fin, soportar cargas tanto fijas como
móviles en donde sus fuerzas son aplicadas en los extremos de cada elemento
y son necesariamente iguales, opuestas y colineales por lo que, el elemento
siempre estará en equilibrio y por lo tanto, solo pueden soportar cargas de
compresión y tracción Figure(1).

Figure 1: Elemento sometido a dos fuerzas.

La unión de estos elementos (nodo) se hace suponiendo que es a través


de un pasador, por lo que no generan momentos en sus extremos. Por ultimo
para analizar la armadura por el método de los nodos, se establece que las
fuerzas que transmiten los elementos, son igual y opuestas en los pasadores
(desde ahora los llamaremos simplemente nodos), por lo que debemos aplicar
un D.C.L en cada nodo. En modo de ejemplo se muestran dos problemas
propuestos Figure(2), los cuales se determinarán las reacciones en los apoyos
y las fuerzas internas de cada elemento utilizando el Método de los nodos.

Figure 2: Armaduras de 3 y 5 elementos .

Primeramente, realizaremos el D.C.L y aplicación de las ecuaciones cor-


respondientes de la estructura en general, para calcular las reacciones en los
apoyos donde se encuentran los nodos 1 y 3 Figure(3), dando como resultado:

1
Figure 3: Diagrama de cuerpo libre de la armadura.

Σx = 0 : R1x + 500 = 0
Σy = 0 : R1y + R3y = 0
ΣM = 0 : −2 ∗ 500 + 2 ∗ R3y = 0
Desarrolando las ecuaciones llegamos a:

R1x = −500 ; R1y = −500 ; R3y = 500

Ahora se debe elegir un nodo para realizar su D.C.L; en general se elige un


nodo en donde por lo menos exista una fuerza conocida y no más de dos
fuerzas desconocidas.
Los diagramas de cuerpo libre de los nodos se muestran a continuación
Figure(4).

Figure 4: D.L.C de nodos armadura 1.

Nodo 1:

Σx = 0 : R1x − F1−3 = 0 ⇒ R1x = R1−3 = −500(N )

Σy = 0 : R1y − F1−2 = 0 ⇒ R1y = R1−2 = −500(N )


Nodo 2:

Σx = 0 : 500 − F2−3 ∗ cos(α) = 0 ⇒ F2−3 = 707, 1(N )

2
Σy = 0 : F2−1 − F2−3 ∗ sen(α) = 0 con : F1−2 − F2−1 ⇒ F2−3 = 707, 1(N )
Nodo 3:

Σx = 0 : F3−1 + F3−2 ∗ cos(α) = 0 ⇒ F3−1 = 500(N )

Σy = 0 : R3y − F3−2 ∗ sen(α) = 0 ⇒ F3−2 = 707, 1(N )


Para los valores negativos, indican que la dirección de la fuerza seleccionada al
momento de realizar el D.C.L del nodo es opuesta. Agrupamos los resultados
de las reacciones y fuerzas que ejerce cada barra en las Tabla(1) y Tabla(2).

Barra Fuerza Magnitud Tipo


1 F1−2 500 Tracción
2 F2−3 707,1 Compresión
3 F1−3 500 tracción

Table 1: Fuerzas en barras armadura 1.

Reacciones nodo Fuerza Magnitud


1 R1x 500
1 R1y 500
3 R3y 500

Table 2: Reacciones armadura 1.

Programación con el uso de MATLAB


Utilizando como base las mismas propiedades descritas anteriormente para
las fuerzas en los elementos aplicados en los extremos 1, 2, consideramos un
elemento 0 e0 con un cierto ángulo α en donde se le aplica dos fuerzas en la
misma dirección Fxe0 1 ,Fxe0 2 , en cada nodo[1] Figure(5).

Figure 5: Elemento con fuerzas aplicadas

3
Resultado de estas fuerzas aplicadas en los nodos, crea desplazamientos
u 1 y u0 2.
0

Las fuerzas y desplazamientos se descomponen de la siguiente forma


(e) (e) (e) 0(e) (e) (e)
Fx0 i = Fx1 ∗ cos(α) + Fy1 ∗ sen(α) , u1 = u1 ∗ cos(α) + v1 ∗ sen(α) (1)

Agrupando estas fuerzas y desplazamientos de forma matricial:


!(e)
(e) Fx1 (e)
F x0 1 = [cos(α), sen(α)] = L(e) q1 (2)
Fy1
!(e)
0(e) u1 (e)
u1 = [cos(α), sen(α)] = L(e) u1 (3)
v1
Donde tanto q1 y u1 , contiene las componentes con respecto a sus ejes carte-
sianos en el nodo 1. De la Figure(5), se puede deducir que:
(e)
EA

(e) (e) 0(e) 0(e)
Fx0 1 = −Fx0 2 = k (e) [u1 − u2 ] con k (e) = (4)
l
Combinando las ecuaciones 1,2,4
(e) (e)
q1 = [L(e) ]T Fx0 1
(e) 0(e) 0(e)
q1 = [L(e) ]T k (e) [u1 − u2 ]
(e)
q1 = [L(e) ]T k (e) [L(e) u1 − L(e) u2 ]
(e)
q1 = [L(e) ]T k (e) L(e) u1 − [L(e) ]T k (e) L(e) u2 (5)
De forma matricial
(e) (e) (e) (e)
( ) " #( )
q1 K11 K12 u1
(e) = (e) (e) (e) (6)
q2 K21 K22 u2

Donde
" #
(e) (e) (e) T (e) (e) (e) cos2 (α) sen(α)cos(α)
K11 = −K12 = [L ] k L =k (7)
sen(α)cos(α) sen2 (α)

De esta forma, se ensambla la matriz de rigidez global K

cos2 (α) sen(α)cos(α) −cos2 (α) −sen(α)cos(α)


 
2
 sen(α)cos(α) sen (α) −sen(α)cos(α) −sen2 (α) 
 (8)
 
−cos2 (α) −sen(α)cos(α) cos2 (α) sen(α)cos(α) 


−sen(α)cos(α) −sen2 (α) sen(α)cos(α) sen2 (α)

Por último, conociendo los desplazamientos de cada nodo con respecto a los
ejes globales y el aporte de cargas externas, se resuelve:
   
(e) (e)


 Fx1 



cos (α) 2
sen(α)cos(α) −cos (α) −sen(α)cos(α) 2 

 u1 


(e) (e)
   
Fy1 sen(α)cos(α) sen2 (α) −sen(α)cos(α) −sen2 (α) v1

 
   

=
 
(e)
−cos2 (α) −sen(α)cos(α) cos2 (α) sen(α)cos(α) (e)
 


 Fx2 


 
 u2 


2
(e) −sen(α)cos(α) −sen (α) sen(α)cos(α) sen2 (α) (e)
   
Fy2 v2

 
 
 

4
El esfuerzo de un elemento se define por σ = Eε, utilizando las mismas
definiciones expresadas se demuestra[2] :

u02 − u01
( )
E u01 E
σ=E = [−1 1] = [−1 1]u0 (9)
Le Le u02 Le

Utilizando la ecuación 3 se llega a:


E E h i
[−1 1]Lu = −cos(α) −sen(α) cos(α) sen(α) u (10)
Le Le
De esta forma, se comienza con la programación con el uso de MATLAB.
El pre-proceso debe ingresar el tipo de problema a analizar, si bien el
problema de la Figure(2) a o b.
Si seleccionamos el problema de la Figure(2) a, tendremos la siguiente
representación de los grados de libertad de cada nodo Figure(6):

Figure 6: Grados de libertad de los nodos.

Los archivos a cargar para desarrollar el problema 1, se cargan gracias al


comando “Load(’Archivo.txt’)”Figure(7) que, para nuestro caso debe cargar
los siguientes archivos previamente creados en formato .txt:

Figure 7: Pre-proceso.

5
Por último, para finalizar la etapa de pre-proceso, creamos las ecuaciones
matriciales base, para completar debidamente en la etapa de proceso. Las
magnitudes de esta matriz corresponderán a las otorgadas por los grados
de libertad (Gdl) de nuestro problema, en este caso 6 grados de libertad
Figure(6), y nos resultará lo siguiente.

F K v
   
0 0 0 0 0 0


 
 
 

0 0 0 0 0 0

 
   

= 
0 0 0 0 0 0
 

 
   

   
0 0 0 0 0 0
   

En la etapa de proceso, completamos la matriz de rigidez.

Figure 8: Proceso.

Donde:

• i=conec(e,:): Barre por lı́neas la matriz conec.

• eGdl=[ i(1)*2-1 i(1)*2 i(2)*2-1 i(2)*2]: elemento Gdl ; relaciona los


grados de libertad de los nodos seleccionados en la lı́nea anterior.

6
Gracias a esto, se puede completar la matriz de rigidez global K explicada
anteriormente usando la lı́nea de programación:
k1=((30e6*0.01)/Lel)*[C*C C*S -C*C -C*S; C*S S*S -C*S -S*S; -C*C
-C*S C*C C*S;-C*S -S*S C*S S*S];
K(eGdl,eGdl) = K(eGdl,eGdl)+k1
Donde k1 será la contribución de cada elemento, a la matriz de rigidez
global K.
Ahora se determina los vectores de desplazamientos para poder hallar las
reacciones.

Figure 9: Determinación de vectores de desplazamiento.

Donde se crea la variable aGd que puede separar los grados de libertad que
están libres, gracias a que crea una diferenciación entre variables (comando
setdiff).
[1 : Gdl] = 123456
}aGdl = 345
Sopor = 126
Ası́ solo ocupamos parte de la matriz de rigidez para resolver el sistema
de ecuaciones, ya que los puntos 1 2 6 no tienen desplazamientos (apoyos)
y que harán 0 cualquier elemento dentro de la matriz de rigidez global al
multiplicarse por estos.
Luego para encontrar las reacciones, solo se debe ensamblar los resultados
de los desplazamientos a una matriz de desplazamiento global v1 (para que
pueda ser multiplicada por la matriz de rigidez global K) cuyo rango será de
6x1.
Por último, para finalizar la etapa de proceso se determina las fuerzas
ejercidas en cada barra utilizando la definición de la ecuación 10 y aplicando
la metodologı́a de ensamble de la matriz Figure(10).

Figure 10: Determinación de fuerzas en barras.

Si bien σ = Eε es un esfuerzo, basta con multiplicar el área de la sección


transversal de los elementos para obtener las fuerzas en cada barra.
Por último, tenemos la etapa de post-proceso en donde se visualiza al
operador:

• Grafico de la estructura tanto antes como después de aplicar la fuerza.

• Resultados de fuerzas en las barras.

7
• Reacciones en los apoyos.

Comenzando con crear los nuevos nodos desplazados para luego poder
visualizar. Esto se logra gracias a la siguiente lı́nea de programación, en
donde a cada nodo se le suma su desplazamiento.

Figure 11: Nodos desplazados.

Se agrega la constante “fae” que es un factor de escala, y el motivo es


únicamente para poder visualizar de forma clara cómo será su desplaza-
miento.
Una vez creada los nuevos nodos desplazados, se debe crear la unión de
esos nodos para poder graficar el antes y después de la deformación, esto lo
logramos con las siguientes lı́neas de códigos.

Figure 12: Conectividades de nodos desplazados y no desplzados.

Donde se crea una variable Q que representará cada elemento antes de


desplazarse y se grafica con el comando plot(X,Y). De igual forma se grafica
los elementos desplazados con la variable Qdef.

Figure 13: Grafica de estructura desplzada y no desplazada

Donde la lı́nea segmentada color negro, representa la armadura antes de


deformarse y se creó con el subcomando ‘–k’, y la lı́nea continua color rojo

8
y azul representa la armadura deformada en compresión y tracción respec-
tivamente y se creó con el subcomando ‘-r’y’-b’. Para finalizar la etapa de
post-proceso, se crea una pequeña programación para que, al momento de
graficar muestre al operador (de forma textual) cuales elementos están siendo
comprimidos y cuales están siendo traccionados.

Figure 14: Visualizador compresion o tracción de elementos

Ocupando la propiedad del esfuerzo σ sobre los elementos cuyos valores de


esfuerzo son negativos y positivos, deberá escribir sobre dicho elemento la pal-
abra “Compresión” y “Tracción” respectivamente. Esto se logra fácilmente
posicionando la palabra en el centro de cada elemento ocupando el comando
“text” de la siguiente forma.

• text(X,Y,’texto’)

Donde X e Y son las coordenadas, y para nuestro caso:

• text((xx(m(1))+abs(xT/2)),(yy(m(1))+yT/2),’Compresión’)

xx(m(1)) , yy(m(1)) representa las coordenadas x e y iniciales del nodo a


analizar respectivamente, y a ésta se le suma la mitad del largo total del
elemento en el eje correspondiente (xT/2). Para comprender de mejor forma,
se presentan los gráficos finales otorgados por la programación de los dos
problemas planteados.

9
Figure 15: Gráfico final estructura 1

Figure 16: Gráfico final estructura 2

Bibliografı́a
1 E.Oñate. Structural Analysis with the Finite Element Method, 2009
2 J. Hurtado. Análisis matricial de estructuras

10

También podría gustarte