Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INFORME DE LABORATORIO N °1
PROBLEMA 1.
1.- Utilizando el libro de referencia (Ferreira) describir la solución del caso mostrado con el
siguiente desarrollo:
C.- Cada uno utilizara cargas diferentes según P = 10 + N, DONDE N es el último digito de su
código UNI y mandarlo a jvera1@uni.edu.pe
DIAGRAMA DE CUERPO LIBRE DEL PRIMER PROBLEMA
14 N
Para ilustrar algunos de los conceptos básicos e introducir el primer código de MATLAB,
consideramos un problema, ilustrado en la figura 1 donde se define la barra central
tan rígido. Nuestro problema tiene tres elementos finitos y cuatro nodos. Tres nodos son
sujetado, siendo las condiciones de contorno definidas como u1 = u3 = u4 = 0. Con el fin de
resolver este problema, establecemos k = 1 para todos los resortes y la carga externa aplicada en
el nodo 2 es P = 14.
Podemos escribir, para cada elemento a su vez, la ecuación de equilibrio (local)
Spring 1:
Fig. 1 Problem 1: a spring problem
y luego obtener las ecuaciones de equilibrio global estáticas en la forma
En esta etapa, podemos calcular las reacciones F1, F3, F4, solo después del cálculo
de los desplazamientos globales. Podemos eliminar líneas y columnas del sistema,
correspondiente a u1 = u3 = u4 = 0, y reduce el sistema global a una ecuación
(k1 + k2 + k3) u2 = P
USAMOS UN SCRIPT
% MATLAB codes for Finite Element Analysis
% problem1.m
% antonio ferreira 2008
% clear memory
clear all
% elementNodes: connections at elements
elementNodes=[1 2;2 3;2 4];
% numberElements: number of Elements
numberElements=size(elementNodes,1);
% numberNodes: number of nodes
numberNodes=4;
% for structure:
% displacements: displacement vector
% force : force vector
% stiffness: stiffness matrix
displacements=zeros(numberNodes,1);
force=zeros(numberNodes,1);
stiffness=zeros(numberNodes);
% applied load at node 2
force(2)=14.0;
% computation of the system stiffness matrix
for e=1:numberElements;
% elementDof: element degrees of freedom (Dof)
elementDof=elementNodes(e,:) ;
stiffness(elementDof,elementDof)=...
stiffness(elementDof,elementDof)+[1 -1;-1 1];
end
% boundary conditions and solution
% prescribed dofs
prescribedDof=[1;3;4];
% free Dof : activeDof
activeDof=setdiff([1:numberNodes]',[prescribedDof]);
% solution
displacements=stiffness(activeDof,activeDof)\force(activeDof);
% positioning all displacements
displacements1=zeros(numberNodes,1);
displacements1(activeDof)=displacements;
% output displacements/reactions
outputDisplacementsReactions(displacements1,stiffness,...
numberNodes,prescribedDof)
>> problem1
Displacements
ans =
1.0000 0
2.0000 4.6667
3.0000 0
4.0000 0
reactions
ans =
1.0000 -4.6667
3.0000 -4.6667
4.0000 -4.6667
EXPLICACION DEL CODIGO GENERADO.
Primero definimos el vector prescritoDof, correspondiente a los grados prescritos de libertad. Luego
definimos un vector que contiene todos los grados activos de libertad, estableciendo la diferencia
entre todos los grados de libertad y la prescrita unos. La función de MATLAB setdiff permite esta
operación. % de condiciones de contorno y solución % de dofs prescritos prescribedDof = [1; 3; 4];
% Dof libre: activeDof activeDof = setdiff ([1: numberNodes] ', [prescribedDof]); % de solución
desplazamientos = rigidez (activeDof, activeDof) \ force (activeDof); Tenga en cuenta que la solución
se realiza solo con las líneas y columnas activas, por usando una máscara. desplazamientos = rigidez
(activeDof, activeDof) \ force (activeDof); Porque de hecho estamos calculando la solución para los
grados activos de libertad solamente, podemos colocar esta solución en un vector displacements1 que
contiene también el valores prescritos (cero). % de posicionamiento de todos los desplazamientos
displacements1 = ceros (numberNodes, 1); desplazamientos1 (activeDof) = desplazamientos; El
vector displaments1 es entonces un vector de cuatro posiciones con todos los desplazamientos. Luego
llamamos a la función outputDisplacementsReactions.m, a los desplazamientos de salida y
reacciones, como la funtion prescrita.
Las reacciones se calculan evaluando el vector de fuerza total como F = K.U. Porque
solo necesitamos reacciones (fuerzas a grados de libertad prescritos), entonces usamos
% de reacciones
F = rigidez * desplazamientos;
reacciones = F (prescritoDof);
Al ejecutar este código obtenemos información detallada sobre matrices o resultados,
dependiendo de las necesidades del usuario, por ejemplo, desplazamientos y reacciones:
PROBLEMA 2
Solucione el problema de barra ilustrado en la figura 2, en cuyo módulo de elasticidad es
E=30x106, y el área de la sección transversal es A=2,
Código uní: 20150204E.
3004 N
SOLUCIÓN:
Dibujando el D.C.L. de la barra, donde se observa las reacciones y desplazamientos de
los nudos.
3004 N
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]
outputDisplacementsReactions(displacements,stiffness,GDof,prescribe
dDof)
function [shape,naturalDerivatives]=shapeFunctionL2(xi)
function displacements=solution(GDof,prescribedDof,stiffness,force)
Solución final para mi paso de P=3004N
Se observa lo siguiente:
>> problem2
Displacements
ans =
1.0000 0
2.0000 0.0010
3.0000 0.0005
4.0000 0
reactions
ans =
1.0e+03 *
0.0010 -2.0027
0.0040 -1.0013