Está en la página 1de 4

% Universidad Tecnológica de Panamá | Facultad de Ingeniería Mecánica | Campus Víctor

Levi Sasso
% Nombre: Javier Alexander Bernal León
% Cédula: 8-886-1198
% Carrera: Ingeniería Mecánica (Tendencia Sistemas Dinámicos y Automáticos)
% Asignatura: Metodología Aproximada de Soluciones Mecánicas
% Profesora: Ilka Banfield

% Planteamiento del Problema: Se desea analizar una viga simplemente apoyada


% a través del uso de Métodos de Elementos Finitos (FEM por sus siglas en
% inglés). Dicha viga estará sometida a una carga distribuida y se pretende
% obtener como producto final la gráfica de deformación de la viga.

% Solución: La solución de este problema se plantea bajo el teorema de la viga de


Bernoulli.

% Herramientas: Dentro de las herramientas disponibles para el desarrollo de


% esta asignación tenemos:
% 1- Apuntes e información proporcionada por la profesora Ilka Bnafield.
% 2- Libros de textos como por ejemplo: Solid Mechanics: A Variational
% Approach(Clive Dym & Irving Shames), Mecánica de Medios Continuos para
% Ingenieros (Xavier Olivella & Carlos Agelet) y MATLAB Codes for Finite
% Element Analysis (A.J.M. Ferrerira).
% 3- MATLAB como plataforma para programar el programa a estudiar.

% A partir de esta línea se empieza a programar el código para la solución


% del problema:

PROGRAMA NÚMERO UNO: CÁLCULO DE DEFLEXIÓN DE VIGAS MEDIANTE EL USO DE ELEMENTOS FINITOS
UTILIZANDO MATLAB

clear all

% Parámetros de propiedades mecánicas y geométricas de la viga:


% Variable(E): Módulo de elasticidad(Especificado en la asignación uno).
% Variable(I): Momento de inercia(Escogido arbitrariamente).

% Parámetros estructurales del análisis de la viga:


% Variable (P): Carga Distribuida aplicada sobre la viga
% Variable (displacements): Vector de desplazamiento de la viga.
% Variable (force): Vector de fuerza aplicado.
% Variable (stiffness): Matriz de rigidez de la viga.
% Variable (GDof): Cantidad general de grados de libertad del sistema.

% Parámetros para la generación de coordenadas en la viga:


% % Cálculo para las generaciones de coordenadas en la viga: Se especifican
% algunas observaciones para esta sección:
% Variable (numberElements): Número o cantidad de elementos a analizar.
% Variable (L): Máxima longitud de la viga.

E = 5000000;
I=1000;
EI=E*I;

numberElements=150;
nodeCoordinates=linspace(0,1,numberElements+1)';
xx=nodeCoordinates;
L=max(nodeCoordinates);
numberNodes=size(nodeCoordinates,1);
xx=nodeCoordinates(:,1);
for i=1:numberElements;
elementNodes(i,1)=i;
elementNodes(i,2)=i+1;
end

P=-1500;

GDof=2*numberNodes;
U=zeros(GDof,1);
[stiffness,force]=...
formStiffnessBernoulliBeam(GDof,numberElements,...
elementNodes,numberNodes,xx,EI,P);

% Condiciones de frontera para el análisis de la viga simplemente apoyada:


% Variable para nodo U (fixedNodeU)=[1 2*numberElements+1]’;
% Variable para nodo V (fixedNodeV)=[2 2*numberElements+2]’;
fixedNodeU =[1 2*numberElements+1]';
fixedNodeV =[]';
prescribedDof=[fixedNodeU;fixedNodeV];
% solution
displacements=solution(GDof,prescribedDof,stiffness,force);

% Resultante de los desplazamientos y reacciones


outputDisplacementsReactions(displacements,stiffness,...
GDof,prescribedDof)

% Gráfica de la viga deformada


U=displacements(1:2:2*numberNodes);
plot(nodeCoordinates,U,'-')
title('COMPORTAMIENTO DE LA VIGA SIMPLEMENTE APOYADA')
xlabel('LONGITUD DE VIGA')
ylabel('DESPLAZAMIENTOS')
legend('DEFLEXIÓN BAJO CARGA DE 1500 N')
grid on

GRÁFICA NÚMERO UNO: COMPORTAMIENTO DE LA VIGA SIMPLEMENTE APOYADA


PROGRAMA NÚMERO DOS: CÁLCULO DEL VECTOR DE FUERZA APLICADO Y DE LA MATRIZ DE RIGIDEZ.
OBSERVACIONES:
1. ESTE ES UN SUBPROGRAMA LLAMADO EN LA RUTINA DEL PROGRAMA NÚMERO UNO.
2. LA VARIABLES DE ESTE PROGRAMA ESTÁN TAMBIEN ESPECIFICADAS EN LOS COMENTARIOS DEL
PROGRAMA NÚMERO UNO.

function [stiffness,force]=...
formStiffnessBernoulliBeam(GDof,numberElements,...
elementNodes,numberNodes,xx,EI,P);
force=zeros(GDof,1);
stiffness=zeros(GDof);

for e=1:numberElements;
indice=elementNodes(e,:) ;
elementDof=[ 2*(indice(1)-1)+1 2*(indice(2)-1)...
2*(indice(2)-1)+1 2*(indice(2)-1)+2];
LElem=xx(indice(2))-xx(indice(1)) ;
ll=LElem;
k1=EI/(LElem)^3*[12 6*LElem -12 6*LElem; 6*LElem 4*LElem^2
-6*LElem 2*LElem^2;
-12 -6*LElem 12 -6*LElem ;
6*LElem 2*LElem^2 -6*LElem 4*LElem^2];
f1=[P*LElem/2 P*LElem*LElem/12 P*LElem/2 ...
-P*LElem*LElem/12]';

% Resultado del vector de fuerza


force(elementDof)=force(elementDof)+f1;

% Resultado de la matriz de rigidez


stiffness(elementDof,elementDof)=...
stiffness(elementDof,elementDof)+k1;
end

PROGRAMA NÚMERO TRES: CÁLCULO DE LAS REACCIONES Y LOS DESPLAZAMIENTOS EN LA VIGA.


OBSERVACIONES:
1. ESTE ES UN SUBPROGRAMA LLAMADO EN LA RUTINA DEL PROGRAMA NÚMERO UNO.

function outputDisplacementsReactions...
(displacements,stiffness,GDof,prescribedDof)
% Esta función está ideada para que la salida de desplazamientos y
% reacciones se en forma tabular.

% Cálculo para los desplazamientos


disp('Displacements')
%displacements=displacements1;
jj=1:GDof; format;
[jj' displacements];

% Cálculo para las reacciones


F=stiffness*displacements;
reactions=F(prescribedDof);
disp('reactions');
[prescribedDof reactions];
end

PROGRAMA NÚMERO CUATRO: CÁLCULO DE LA SOLUCIÓN GENERAL.


OBSERVACIONES:
1. ESTE ES UN SUBPROGRAMA LLAMADO EN LA RUTINA DEL PROGRAMA NÚMERO UNO.
function displacements=solution(GDof,prescribedDof,stiffness,force)
% Cálculo para encontrar la solución en términos de los grados de libertad
% globales o generales.
activeDof=setdiff([1:GDof]',[prescribedDof]);
U=stiffness(activeDof,activeDof)\force(activeDof);
displacements=zeros(GDof,1);
displacements(activeDof)=U;
end

También podría gustarte