% 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 Bernoulli. % % % % % % % %
viga de
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