You are on page 1of 7

UNIVERSIDAD NACIONAL DE INGENIERÍA

FACULTAD DE INGENIERÍA MECÁNICA

INFORME N°1

Alumno: Alexis Jimy Galarza Ramírez

Código: 20154061D

Sección: “D”

Profesor: Ing. Jorge Vera Ermitaño

Curso: Cálculo por Elementos Finitos – “MC516”

Fecha de presentación: Sábado 30 de setiembre del 2017

LIMA-PERÚ

2017
PROBLEMA 2
Solucione el problema de barra ilustrado en la figura 1, en cuyo módulo de elasticidad es
E=30x106, y el área de la sección transversal es A=1.

61000 N

Figura 1. Barra unidimensional

SOLUCIÓN:
Dibujando el D.C.L. de la barra, donde se observa las reacciones y desplazamientos de
los nudos.

Figura 2. D.C.L. de la barra unidimensional


Se implementa un script en Matlab para determinar las reacciones y desplazamientos de
los nudos.
% problema2.m
clear all
% E: módulo de elasticidad
% A: área de la sección transversal
% L: longitud de la barra
E = 30e6; A=1; EA=E*A; L = 90;
% generación de coordenadas y las conectividades
% numberElements: Número de elementos
numberElements=3;
% generación de coordenadas espaciadas
nodeCoordinates=linspace(0,L,numberElements+1);
xx=nodeCoordinates;
% numberNodes: Número de nodos
numberNodes=size(nodeCoordinates,2);
% elementNodes: Conexiones en los elementos
ii=1:numberElements;
elementNodes(:,1)=ii;
elementNodes(:,2)=ii+1;
% Para la estructura:
% displacements: Vector de desplazamiento
% force: Vector fuerza
% stiffness: Matriz de rigidez
displacements=zeros(numberNodes,1);
force=zeros(numberNodes,1);
stiffness=zeros(numberNodes,numberNodes);
% Carga aplicada en el nodo 2
force(2)=61000;
% Cálculo de la matriz de rigidez del sistema
for e=1:numberElements;
% elementDof: Grados de libertad
elementDof=elementNodes(e,:);
nn=length(elementDof);
length_element=nodeCoordinates(elementDof(2))-
nodeCoordinates(elementDof(1));
detJacobian=length_element/2;
invJacobian=1/detJacobian;
% Punto central (xi=0; W=2)
[shape,naturalDerivatives]=shapeFunctionL2(0.0);
Xderivatives=naturalDerivatives*invJacobian;
% Matriz B
B=zeros(1,nn); B(1:nn) = Xderivatives(:);
stiffness(elementDof,elementDof)=stiffness(elementDof,elementDof)+B'*B*2*
detJacobian*EA;
end
% Condiciones límite
fixedDof=find(xx==min(nodeCoordinates(:))| xx==max(nodeCoordinates(:)));
prescribedDof=[fixedDof];
activeDof=setdiff([1:numberNodes],[prescribedDof]);
% Solución
GDof=numberNodes;
displacements=solution(GDof,prescribedDof,stiffness,force);
% Reacciones y desplazamientos
outputDisplacementsReactions(displacements,stiffness,numberNodes,prescrib
edDof)

Con la ayuda de 3 funciones para que determinar los desplazamientos y reacciones.


function [shape,naturalDerivatives]=shapeFunctionL2(xi)
% shape: Función de forma y derivados para elementos L2
% naturalDerivatives: Derivados w.r.t. xi
% xi: Coordenadas naturales
shape=([1-xi,1+xi]/2);
naturalDerivatives=[-1;1]/2;
end
function displacements=solution(GDof,prescribedDof,stiffness,force)
% Función para encontrar solución en términos de desplazamientos globales
activeDof=setdiff([1:GDof],[prescribedDof]);
U=stiffness(activeDof,activeDof)\force(activeDof);
displacements=zeros(GDof,1);
displacements(activeDof)=U;

function
outputDisplacementsReactions(displacements,stiffness,GDof,prescribedDof)
% Salida de las reacciones
% GDof: Número de grados de libertad del problema
% Se muestran los desplazamientos
disp('Displacements')
jj=1:GDof; format
[jj' displacements]
% Se muestran las reacciones
F=stiffness*displacements;
reactions=F(prescribedDof);
disp('reactions')
[prescribedDof' reactions]

Haciendo correr el algoritmo de Matlab se obtiene los siguientes resultados:

Se observa lo siguiente:
Desplazamientos
1.0000 0
2.0000 0.0407
3.0000 0.0203
4.0000 0
Reacciones
1.0e+04 *
0.0001 -4.0667
0.0004 -2.0333

PROBLEMA 3
Calcular los desplazamientos de los nudos y las reacciones de la figura 3.

61 KN

E = 70 GPa
A = 200 mm2
k = 2000 KN/m

Figura 3. Barra unidimensional unida con un resorte

Dibujando el D.C.L. de la barra, donde se observa las reacciones y desplazamientos de


los nudos.

Figura 4. D.C.L. barra unidimensional unida con un resorte

Se implementa un script en Matlab para determinar las reacciones y desplazamientos de


los nudos.
% problema3.m
clear all
% E: módulo de elasticidad
% A: área de la sección transversal
% L: longitud de la barra
% k: rigidez del resorte
E=70000;A=200;k=2000;
% Generación de coordenadas y conectividades
% numberElements: Número de Elementos
numberElements=3;
numberNodes=4;
elementNodes=[1 2; 2 3; 3 4];
nodeCoordinates=[0 2000 4000 4000];
xx=nodeCoordinates;
% Para la estructura:
% displacements: Vector desplazamiento
% force: Vector fuerza
% stiffness: Matriz de rigidez
displacements=zeros(numberNodes,1);
force=zeros(numberNodes,1);
stiffness=zeros(numberNodes,numberNodes);
% Carga aplicada en el nodo 2
force(2)=61000;
% Cálculo de la matriz de rigidez del sistema
for e=1:numberElements;
% elementDof: Grados de libertad
elementDof=elementNodes(e,:) ;
L=nodeCoordinates(elementDof(2))-nodeCoordinates(elementDof(1));
if e<3
ea(e)=E*A/L;
else
ea(e)=k;
end
stiffness(elementDof,elementDof)=
stiffness(elementDof,elementDof)+ea(e)*[1 -1;-1 1];
end
% Condiciones de frontera
prescribedDof=[1;4];
activeDof=setdiff([1:numberNodes],[prescribedDof]);
% Solución
GDof=4;
displacements=solution(GDof,prescribedDof,stiffness,force);
% Salida de desplazamientos y reacciones
outputDisplacementsReactions(displacements,stiffness,numberNodes,prescrib
edDof)

Con la ayuda de la función para determinar los desplazamientos y reacciones.


function
outputDisplacementsReactions(displacements,stiffness,GDof,prescribedDof)
% Salida de las reacciones
% GDof: Número de grados de libertad del problema
% Se muestran los desplazamientos
disp('Displacements')
jj=1:GDof; format
[jj' displacements]
% Se muestran las reacciones
F=stiffness*displacements;
reactions=F(prescribedDof);
disp('reactions')
[prescribedDof' reactions]
Se observa lo siguiente:
Desplazamientos
1.0000 0
2.0000 7.1299
3.0000 5.5455
4.0000 0

Reacciones
1.0e+04 *
0.0001 -4.9909
0.0004 -1.1091

You might also like