Академический Документы
Профессиональный Документы
Культура Документы
Elementos finitos
FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA CIVIL
ELEMENTOS FINITOS
INFORME N° 2
INTEGRANTES:
DOCENTE:
Metodología
Para los tres ejemplos presentados en este informe, la malla se generó mediante el paquete
PdeTool de Matlab. Para ingresar las coordenadas del mallado generado por PdeTool a
la ecuación de calor, utilizamos el código “conversión.mat” (véase anexo 2). En dicho
código se deben realizar ciertas modificaciones, en las condiciones de Dirichlet
dependiendo del problema que se plantee.
Resultados y Discusión
Para la validación de las modificaciones realizadas al código, se utilizó la herramienta
Pdetool de Matlab. Teniendo una superficie con sus condiciones de contorno, su flujo y
su conductividad definidas, se puede obtener mediante la opción Plot, la distribución de
calor en la misma; de esta manera para la misma superficie y bajo las mismas condiciones
se emplea el código modificado y se obtiene la misma distribución de calor, como se
observa en los siguientes ejemplos. Así, al comparar estas superficies se puede comprobar
la funcionalidad del código.
Ejemplo 1
Datos
Para este ejemplo se utilizo una constante de conductividad térmica de 0.5 este valor se
utilizó en el código principal (ver anexo 1), en el cual K multiplica a la matriz de rigidez
“A”. Se considero que las condiciones de Neumann en el contorno igual a cero, este valor
se lo utilizo en el código “g.m”, el cual devuelve un vector de ceros. En cuanto a las
condiciones de Dirichlet, se utilizo el valor de 25, el cual se introdujo en el código
“u_d.,m”, este valor multiplica a un vector de unos. En este mismo código se cambio el
primer argumento de “size” ya que trabajamos con una malla triangular.
Geometría
Se compara las distribuciones de temperaturas obtenidas con la herramienta Pdetool y el
código modificado, bajo las siguientes condiciones:
Condiciones de Contorno
Resultados
Mediante PdeTool:
Mediante el código:
Universidad de Cuenca
Elementos finitos
Vista tridimensional
Ilustración 7: grafica en 3D
Comentarios
Al aumentar el coeficiente de conductividad térmica (K), el material será mejor conductor
del calor.
Se observa que la distribución térmica de la gráfica obtenida de PdeTool coincide con la
gráfica obtenida del código principal.
Universidad de Cuenca
Elementos finitos
Ejemplo 2
Se hace un análisis de convergencia, utilizando diferentes mallas con mayor
aproximación en una misma figura, es decir, en diferentes pruebas del código para una
misma superficie, se va aumentando la cantidad de triángulos con la finalidad de mejorar
la aproximación. De esta manera es posible incrementar la precisión de la distribución de
temperaturas.
Datos
Para este ejemplo se utilizó una constante de conductividad térmica de 1, este valor se
utilizó en el código principal (ver anexo 1), en el cual K multiplica a la matriz de rigidez
“A”. Se considero que las condiciones de Neumann en el contorno son igual a cero, este
valor se utilizó en el código “g.m”, el cual devuelve un vector de ceros. En cuanto a las
condiciones de Dirichlet, se utilizó el valor de 10, el cual se introdujo en el código
“u_d.,m”, este valor multiplica a un vector de unos. En este mismo código se cambió el
primer argumento de “size” ya que trabajamos con una malla triangular.
Geometría
Universidad de Cuenca
Elementos finitos
Nodos Condiciones
de Dirichlet
10, 9, 8, 10
19, 22
Tabla 1: nodos y Dirichlet
Resultados
Primera triangulación
Número de nodos = 514 (Las coordenadas no se colocan por ser demasiado
extensas)
Número de triángulos = 896 (Los nodos no se colocan por ser demasiado
extensos)
Segunda triangulación
Universidad de Cuenca
Elementos finitos
Comentarios
Con respecto a la convergencia, se puede notar que a medida que aumenta el número de
triángulos en la malla, la diferencia entre temperaturas máximas va disminuyendo; esto
quiere decir que los valores convergen hacia un valor determinado, lo cual depende de la
aproximación que se le dé a la figura estudiada.
Ejemplo 3
Datos
Se presenta el ingreso de datos en la herramienta PdeTool, para generar la distribución
térmica en la figura realizada.
Geometría
Resultados
Mediante código de conducción del calor
Universidad de Cuenca
Elementos finitos
Resultados de PdeTool
En los gráficos se observa que el calor se distribuye por la base y las paredes de la figura.
Al comparar los gráficos obtenidos del programa Pdetool y del código de la ecuación del
calor, se observa que la distribución de calor es similar en ambos casos. El coeficiente de
conductividad térmica es de 0.5, lo que significa que el material no es un buen conductor
del calor, es porque se observa amplias zonas con temperaturas bajas rodeando a los 0oC.
(zonas de color azul).
Referencias
Alberty, J., Carstensen, C., & A. Funken, S. (1999). Remarks around 50 lines of
Matlab: short finite element. Numerical Algorithms, 117-137.
The MathWorks, Inc. (2016). MATLAB.
Notas de Clase
ANEXOS
Anexo 1
%FEM2D_HEAT finite element method for two-dimensional heat equation.
%Initialisation
load coordinates.dat; coordinates(:,1)=[];
load elements3.dat; elements3(:,1)=[];
eval('load neumann.dat; neumann(:,1) = [];','neumann=[];');3
load dirichlet.dat; dirichlet(:,1) = [];
FreeNodes=setdiff(1:size(coordinates,1),unique(dirichlet)); % valores de A que no estan en B
A = sparse(size(coordinates,1),size(coordinates,1)); % Guardo memoria con matriz de tipo sparse
B = sparse(size(coordinates,1),size(coordinates,1));
T = 1; dt = 0.01; N = T/dt;
U = zeros(size(coordinates,1),N+1);
% Assembly: Montaje de la matriz de rigidez A en un bucle sobre todo triang
for j = 1:size(elements3,1)
A(elements3(j,:),elements3(j,:)) = 10*(A(elements3(j,:), ...
elements3(j,:)) + (stima3(coordinates(elements3(j,:),:))));
end
for j = 1:size(elements3,1)
B(elements3(j,:),elements3(j,:)) = B(elements3(j,:),elements3(j,:)) + ...
det([1,1,1;coordinates(elements3(j,:),:)'])*[2,1,1;1,2,1;1,1,2]/24;
end
% Initial Condition
U(:,1) = zeros(size(coordinates,1),1);
% time steps
for n = 2:N+1
b = sparse(size(coordinates,1),1);
% Volume Forces
for j = 1:size(elements3,1)
b(elements3(j,:)) = b(elements3(j,:)) + ...
det([1,1,1; coordinates(elements3(j,:),:)']) * ...
dt*f(sum(coordinates(elements3(j,:),:))/3,n*dt)/6;
end
% Neumann conditions
for j = 1 : size(neumann,1)
b(neumann(j,:)) = b(neumann(j,:)) + ...
norm(coordinates(neumann(j,1),:)-coordinates(neumann(j,2),:)) * ...
dt*g(sum(coordinates(neumann(j,:),:))/2,n*dt)/2;
end
% previous timestep
b = b + B * U(:,n-1);
% Dirichlet conditions
u = sparse(size(coordinates,1),1);
u(unique(dirichlet)) = u_d(coordinates(unique(dirichlet),:),n*dt);
Universidad de Cuenca
Elementos finitos
b = b - (dt * A + B) * u;
% Computation of the solution
u(FreeNodes) = (dt*A(FreeNodes,FreeNodes)+ ...
B(FreeNodes,FreeNodes))\b(FreeNodes);
U(:,n) = u;
end
% graphic representation
show(elements3,[],coordinates,full(U(:,N+1)));
Anexo 2
function conversion(p,e,t)
% asignamos los nodos para cada uno de los triangulos generados por la
% malla, la esta definida con un sentido horario de la forma
% |elemento|nodo1|nodo2|nodo3|
for i=1:length(t)
elements3(i,1)=i;
elements3(i,2)=t(1,i);
elements3(i,3)=t(2,i);
elements3(i,4)=t(3,i);
end
%definimos las condiciones de neumann y dirichlet en funci?n al elemento
contd=0;
contn=0;
for i=1:length(e)
if(e(5,i)==10 || e(5,i)==9 || e(5,i)==8 || e(5,i)==19 )
contd=contd+1;
dirichlet(contd,1)=contd;
dirichlet(contd,2)=e(1,i);
dirichlet(contd,3)=e(2,i);
end
if(e(5,i)==22)
contd=contd+1;
dirichlet(contd,1)=contd;
dirichlet(contd,2)=e(1,i);
dirichlet(contd,3)=e(2,i);
end
if(e(5,i)==3 || e(5,i)==4)
contn=contn+1;
neumann(contn,1)=contn;
neumann(contn,2)=e(1,i);
neumann(contn,3)=e(2,i);
end
end
%asignamos las coordenadas para cada elemento a trav?s de la variable p (puntos)
%entregada por toolbox de la forma |elemento|x|y|
for i=1:length(p)
coordinates(i,1)=i;
coordinates(i,2)=p(1,i);
coordinates(i,3)=p(2,i);
end
%reescribimos nuestras variables .dat para trabajar con el programa
%entregado
dlmwrite('coordinates.dat',coordinates)
dlmwrite('elements3.dat',elements3)
dlmwrite('dirichlet.dat',dirichlet)
dlmwrite('neumann.dat',neumann)
end