LABORATORIO N°4 – ARMADURAS
TRIDIMENSIONALES
CÁLCULO POR ELEMENTOS FINITOS
MC516-SECCIÓN A
PROFESOR:
Ing. Abregú Leandro, Edwin Asención
ESTUDIANTE:
Cadillo Gutierrez, Victor Hugo
20134173A
06 de noviembre del 2017, Rímac.
INDICE
1. ENUNCIADO DEL PROBLEMA
2. CÁLCULOS PREVIOS
3. ANÁLISIS
4. MODELADO DEL CUERPO REAL
5. MÉTODO DE CÁLCULO
6. USO DEL MATLAB
7. EJECUCIÓN DEL PROGRAMA
8. CONCLUSIONES
9. BIBLIOGRAFÍA
1. ENUNCIADO DEL PROBLEMA
Para la armadura tridimensional, mostrada, aplicando el método de formulación
directa, se pide determinar:
1°) El vector de desplazamientos nodales
2°) Los esfuerzos en los elementos de la armadura.
Si las barras macizas que constituyen dicha armadura es acero AISI 1020 y tienen
∅60 mm de diámetro.
Considere las bases como apoyos (apoyos A, B, C y D).
2. CÁLCULOS PREVIOS
Considerando que la armadura tiene forma de tronco de pirámide isósceles, una de
sus caras, tiene las siguientes medidas (las medidas de las caras son iguales entre
sí).
3. ANÁLISIS
La armadura tiene 16 elementos finitos y 8 nodos.
EJES DEL SISTEMA (en mm)
Se asigna el sistema de coordenadas en el centro de la base inferior.
4. MODELADO DEL CUERPO REAL
Diagrama de conectividad
e NODOS GDL A e (mm 2 E e (N/mm 2
) )
1 1 2 1 2 3 4 5 6 900 * 2 x 10 5
2 1 4 1 2 3 7 8 9 900 * 2 x 10 5
3 1 5 1 2 3 13 14 15 900 * 2 x 10 5
4 1 8 1 2 3 22 23 24 900 * 2 x 10 5
5 2 3 4 5 6 7 8 9 900 * 2 x 10 5
6 2 7 4 5 6 19 20 21 900 * 2 x 10 5
7 2 8 4 5 6 22 23 24 900 * 2 x 10 5
8 3 4 7 8 9 10 11 12 900 * 2 x 10 5
9 3 6 4 5 6 16 17 18 900 * 2 x 10 5
10 3 7 4 5 6 19 20 21 900 * 2x 10 5
11 4 5 10 11 12 13 14 15 900 * 2 x 10 5
12 4 6 10 11 12 16 17 18 900 * 2 x 10 5
13 5 8 13 14 15 22 23 24 900 * 2 x 10 5
14 5 6 13 14 15 16 17 18 900 * 2 x 10 5
15 6 7 16 17 18 19 20 21 900 * 2 x 10 5
16 7 8 19 20 21 22 23 24 900 * 2 x 10 5
Posición de los nodos
NODOS X(mm) Y(mm) Z(mm)
1 400 -400 0
2 -400 -400 0
3 -400 400 0
4 400 400 0
5 205 205 980
6 -205 205 980
7 -205 -205 980
8 205 -205 980
5. MÉTODO DE CÁLCULO
Se sabe que para un elemento rígido se sabe lo siguiente:
L es la matriz de transformación, donde l, m, n son los cosenos directores:
𝑙 𝑚 𝑛 0 0 0
𝐿=[ ]
0 0 0 𝑙 𝑚 𝑛
Cálculo de los cosenos directores:
𝑥1 − 𝑥𝑜 𝑦1 − 𝑦𝑜 𝑧1 − 𝑧𝑜
𝑙= 𝑚= 𝑙=
𝑙𝑒 𝑙𝑒 𝑙𝑒
Cálculo de la longitud de la barra:
𝑙𝑒 = √(𝑥1 − 𝑥0 )2 + (𝑦1 − 𝑦0 )2 + (𝑧1 − 𝑧0 )2
Desplazamientos nodales:
𝑞 ′ = 𝐿𝑞
Cálculo de la matriz de rigidez local:
𝐾𝑒 = 𝐿𝑇 𝑘′𝑒 𝐿
1 −1 𝐴𝑒𝐸𝑒
Donde: 𝑘′𝑒 = [ ]
−1 1 𝑙𝑒
Para el cálculo de la fuerza, se eliminan los grados de libertad, por el método de
eliminación:
𝐹 =𝐾∗𝑄
El cálculo de reacciones se realiza con las matrices globales:
𝑅 =𝐾∗𝑄
El cálculo de los esfuerzos en los nodos se realiza con:
𝐸𝑒
𝜎= [−1 1]𝐿𝑞
𝑙𝑒
6. USO DEL MATLAB
PROGRAMA PRINCIPAL
clear all
clc
E=200000;
A=pi*900*ones(1,16)'; % Area de las secciones
% Ingresa coordenada de los nodos
nodeCoordinates=[400 -400 0;
-400 -400 0 ;
-400 400 0 ;
400 400 0 ;
205 205 980;
-205 205 980;
-205 -205 980;
205 -205 980;];
% Ingresa la conectividad de los nodos
elementNodes=[1 2;1 4;1 5;1 8;2 3; 2 7; 2 8; 3 4; 3 6; 3 7; 4 5; 4 6; 5 8;
5 6; 6 7; 7 8];
numberElements=size(elementNodes,1);
numberNodes=size(nodeCoordinates,1);
xx=nodeCoordinates(:,1);
yy=nodeCoordinates(:,2);
zz=nodeCoordinates(:,3);
% Para la estructura:
% displacements: vector de desplazamiente
% force : vector de fuerza
% stiffness: matriz de rigidez
% GDof: número global de grados de libertad
GDof=3*numberNodes;
U=zeros(GDof,1);
force=zeros(GDof,1);
% Aplicando la carga en los nodos 7 y 8.
force(21)=-4000;
force(24)=-2000;
% Matriz de rigidez
[stiffness]=formStiffness3Dtruss(GDof,numberElements,elementNodes,numberN
odes,nodeCoordinates,E,A);
% Condiciones de contorno
prescribedDof=[3 4 6 7 8 9 11 12]';
% Solución
displacements=solution(GDof,prescribedDof,stiffness,force);
% Salida de desplazamientos y reacciones
outputDisplacementsReactions(displacements,stiffness,...
GDof,prescribedDof)
% Esfuerzo de los elementos
stresses3Dtruss(numberElements,elementNodes,nodeCoordinates,...
displacements,E)
FUNCIONES AUXILIARES
Función que calcula la rigidez
function
[stiffness]=formStiffness3Dtruss(GDof,numberElements,elementNodes,numberN
odes,nodeCoordinates,E,A);
stiffness=zeros(GDof);
% Calcula la matriz de rigidez del sistema
for e=1:numberElements;
% elementDof: Grado de libertad del elemento
indice=elementNodes(e,:) ;
elementDof=[3*indice(1)-2 3*indice(1)-1 3*indice(1)...
3*indice(2)-2 3*indice(2)-1 3*indice(2)] ;
x1=nodeCoordinates(indice(1),1);
y1=nodeCoordinates(indice(1),2);
z1=nodeCoordinates(indice(1),3);
x2=nodeCoordinates(indice(2),1);
y2=nodeCoordinates(indice(2),2);
z2=nodeCoordinates(indice(2),3);
L = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) +...
(z2-z1)*(z2-z1));
disp('L');
disp(L);
CXx = (x2-x1)/L;CYx = (y2-y1)/L;CZx = (z2-z1)/L;
disp(e)
disp(':')
disp(CXx)
disp(CYx)
disp(CZx)
T = [CXx*CXx CXx*CYx CXx*CZx ; CYx*CXx CYx*CYx CYx*CZx ; ...
CZx*CXx CZx*CYx CZx*CZx];
disp('T')
disp(T)
E*A(e)/L*[T -T ; -T T]
stiffness(elementDof,elementDof)=...
stiffness(elementDof,elementDof)+E*A(e)/L*[T -T ; -T T];
end
Función que calcula desplazamientos
function displacements=solution(GDof,prescribedDof,stiffness,force)
activeDof=setdiff([1:GDof]',[prescribedDof]);
stiffness(activeDof,activeDof)
force(activeDof)
U=stiffness(activeDof,activeDof)\force(activeDof);
displacements=zeros(GDof,1);
displacements(activeDof)=U;
end
Función que calcula las reacciones
function
outputDisplacementsReactions(displacements,stiffness,GDof,prescribedDof)
%MUESTRA LOS DESPLAZAMIENTOS Y REACCIONES EN FORMA TABULAR
%GDof=total numero de grados de libertad del problema
%dezplazamientos
disp('Displacements')
%displacements=displacements1;
jj=1:GDof; %format
A=[jj' displacements];
disp(A)
%REACCIONES
F=stiffness*displacements;
reactions=F(prescribedDof);
disp('reactions')
B=[prescribedDof reactions];
disp(B)
end
Función que calcula el esfuerzo
function
stresses3Dtruss(numberElements,elementNodes,nodeCoordinates,displacements
,E)
% Esfuerzo en un elemento 3D
fprintf('Esfuerzos en los elementos barra\n')
ff=zeros(numberElements,6);
for e=1:numberElements;
% elementDof: Grados de libertad de un elemento
indice=elementNodes(e,:) ;
elementDof=[3*indice(1)-2 3*indice(1)-1 3*indice(1) 3*indice(2)-2
3*indice(2)-1 3*indice(2)] ;
x1=nodeCoordinates(indice(1),1);
y1=nodeCoordinates(indice(1),2);
z1=nodeCoordinates(indice(1),3);
x2=nodeCoordinates(indice(2),1);
y2=nodeCoordinates(indice(2),2);
z2=nodeCoordinates(indice(2),3);
L = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) +...
(z2-z1)*(z2-z1));
CXx = (x2-x1)/L;CYx = (y2-y1)/L;CZx = (z2-z1)/L;
u=displacements(elementDof);
member_stress(e)=E/L*[-CXx -CYx -CZx CXx CYx CZx]*u;
fprintf('%3d %12.8f\n',e, member_stress(e));
end
7. EJECUCIÓN DEL PROGRAMA
Salida del programa
Matriz de rigidez global en N/mm
Desplazamientos nodales en mm
Reacciones en N
Esfuerzos de los elementos finitos en Pa
8. CONCLUSIONES
- En todos los nodos hay desplazamiento a excepción de los cuales lo impide
su tipo de apoyo.
- Las reacciones en los apoyos se encuentra en el rango de 97N a 2kN.
- Los elementos finitos 9, 12, 14 y 15 no sufren esfuerzos.
9. BIBLIOGRAFÍA
1. Introduction to finite elements in engineering. Tirupathi R. Chandrupatla.
Prentice Hall. 3ra edición.
2. MATLAB Guide to Finite Elements. Peter I. Kattan. Springer. 2da Edición.
2008. India.