15
Ecuación de Calor Proyecto final Análisis Numérico Integrantes: Marión Casanueva Nathalie Eberl Martín Monasterio Pablo Sánchez Pablo Castillo

Ecuacion de Calor

Embed Size (px)

DESCRIPTION

MedianteelprogramaMatLab,seresolveránlasecuacionesenderivadasparcialesmediantemétodosnuméricosdediscretizacióndelespacioydeltiempo,deestaformasebuscarálamaneramásóptimadellegaralasolucióndecadacaso.

Citation preview

  • Ecuacin de Calor Proyecto final Anlisis Numrico

    Integrantes: Marin Casanueva

    Nathalie Eberl

    Martn Monasterio

    Pablo Snchez

    Pablo Castillo

  • 1

    Introduccin - Marco Terico La transferencia de energa trmica o calor entre dos cuerpos diferentes por conduccin o conveccin requiere el contacto directo de las molculas de diferentes cuerpos, la ecuacin de calor predice que si un cuerpo a temperatura T se sumerge en una caja con agua a menor temperatura, la temperatura del cuerpo va a disminuir, y finalmente, a un tiempo terico infinito y sin fuentes de calor externas, ambos factores, el cuerpo y el agua, estarn a la misma temperatura en un llamado equilibrio trmico.

    La ecuacin de calor junto a la ecuacin de onda son unos de los problemas ms aprendidos y tpicos en el estudio de las EDPs. En el curso Mat-024 se estudiaron mtodos para la solucin analtica de la ecuacin de calor, mediante integracin y separacin de las variables, pero ahora se va a desarrollar una implementacin de mtodos numricos computacionales para resolver esta y otras aplicaciones de la ecuacin de calor en su forma analtica, tambin en una y dos dimensiones.

    Para explicar de manera matemtica el fenmeno, mediante una EDP, se considera la ecuacin a continuacin, donde en el caso general de la ecuacin de conduccin de calor, expresada de forma diferencial, refleja el balance entre el flujo neto de calor, el calor generado y el calor almacenado en el material. !!!(!, !)!"! ! !!!(!, !)!"! = 0 De esta ecuacin se desprenden los distintos factores, como ! = !!! , que corresponde a la difusividad trmica, depende de las caractersticas fsicas del material, donde k es la conductividad trmica, ! es la densidad, y C es la capacidad calorfica. Por otra parte el factor que no acompaa la difusividad es la variacin de la temperatura en el tiempo, y el que acompaa al factor ! es el flujo neto de calor, que tambin depende del cuerpo en el sentido de que el flujo es lineal, superficial o volumtrico dependiendo de las caractersticas del cuerpo.

    Cabe destacar que la ecuacin de conduccin es un caso particular de la ecuacin de Poisson y se obtiene por aplicacin del principio de conservacin de la energa.

    Se sabe que las derivadas analticas no se pueden incorporar en un modelo numrico como tales, por lo que se recurre al mtodo de diferencias finitas, mediante el cual se modelarn las ecuaciones con ayuda de una de valores discretos para, en cada punto dado del dominio unidimensional, encontrar la solucin.

    Mediante el programa MatLab, se resolvern las ecuaciones en derivadas parciales mediante mtodos numricos de discretizacin del espacio y del tiempo, de esta forma se buscar la manera ms ptima de llegar a la solucin de cada caso.

  • 2

    Implementacin Numrica Cdigo

    Problema Analtico y Problema numrico 1D Para comenzar el estudio del problema se debe realizar un estudio sobre la solucin analtica que se obtiene a la ecuacin del calor de Fourier, la cual consiste en una EDP que se tratar en sus versiones unidimensional y bidimensional, donde al resolverlas aparecen las series de Fourier. Para el caso de una dimensin se trabaja sobre una varilla delgada de longitud L, ubicada a lo largo del eje x con cierta distribucin de temperatura segn sus condiciones iniciales y de borde. Considerando adems que es una barra homognea, con calor especfico y conductividad trmica constantes y sin fuentes de calor en su interior, ni que escapa el calor al medio, se procede a programar un cdigo que solucione la ecuacin diferencial segn los parmetros establecidos por el problema. Este cdigo ha sido diseado para encontrar la solucin analtica y adems la solucin al problema numrico 1D. La estructura del cdigo comienza con la definicin de variables a utilizar, y las discretizaciones apropiadas para la resolucin del problema. A continuacin se generan las matrices necesarias para el desarrollo de los mtodos. Finalmente se procede a calcular la solucin analtica mediante mtodos directos de resolucin de ecuaciones de derivadas parciales y luego, mediante el ensamble de las matrices correspondientes que requiere el mtodo implcito de Crank-Nicholson, el cual utiliza una lgica resolutiva forward. Cabe mencionar que se solicita solucionar el problema mediante dos tipos de distribuciones de temperatura y condiciones de borde e iniciales, sin embargo el cdigo diseado es capaz de resolver ambos casos cambiando nicamente dichos parmetros. (Ver anexo 1)

    Problema numrico 2D Para este apartado se solicita implementar el anlisis de la ecuacin de calor sobre una placa de espesor despreciable. La resolucin de este esquema se realizar mediante el mtodo explcito de Euler. Al igual que en el caso anterior, se considerarn condiciones de homogeneidad y caractersticas fsicas del material constantes. Siguiendo con la misma metodologa de programacin, se comienza por la declaracin de variables y la definicin de discretizaciones que se ajusten a la resolucin mediante Euler, ya que stas definirn si este mtodo converge o no a una solucin. Seguido a esto, se procede a definir el conjunto de vectores y matrices que se utilizarn posteriormente para el ensamble de soluciones. Finalmente se obtienen las distribuciones de temperatura sobre la placa en base a las combinaciones de condiciones de borde de Newman y Dirichlet. (Ver anexo 2)

  • 3

    Resultados y tablas

    Problema Analtico La solucin de la ecuacin de calor, con condiciones de frontera no homogneas, se resuelve mediante separacin de variables y su solucin es una serie de Fourier. ! !, ! = 2! ! ! ! ! !"# !"! ! !"!! !!! !"! !!!"# !"! !!!!!

    ! !, ! = ! !, ! + !! !!! ! + !!

    Donde ! ! = !2!1! ! + !1

    Problema numrico 1D Para un tiempo de 120 segundos, las siguientes condiciones iniciales: ! !, 0 = 10! 0 ! < 10 ! !, 0 = 200 10! 10 ! 20 Y condiciones de contorno nulas en los extremos, el cdigo Matlab entrega el siguiente resultado:

    Figura 1: Soluciones y error relativo

  • 4

    En la figura 1 se aprecia que la solucin por mtodo implcito converge a la solucin analtica para un tiempo de 120 segundos.

    Para un tiempo de 120 segundos, las siguientes condiciones iniciales: ! !, 0 = 10! 0 ! < 10 ! !, 0 = 150 5! 10 ! 20 Y condiciones de contorno ! 0, ! = 0 y ! !, ! = 50, el cdigo Matlab entrega el siguiente resultado:

    Figura 2: Soluciones y error relativo

    En la figura 2 se aprecia que la solucin por mtodo implcito converge a la solucin analtica para un tiempo de 120 segundos.

    A continuacion se comparan los tiempos de calculo usando el metodo LU y A\B dentro de Crank-Nicholson

    Tiempo de operacin Crank-Nicolson con LU Tiempo de operacin Crank-Nicolson con A\b

    0.0352 [s] 0.0060 [s]

  • 5

    Problema numrico 2D

    Se debe tener en cuenta que cuando ! = !, el mtodo de Euler explicito converge solamente cuando: !!! ! 14

    Basndose en las simulaciones 1D, se realizaron simulaciones de los dos problemas anlogos 2D imponiendo condiciones de borde tanto de Newman como de Dirichlet.

    A modo de simplificar los resultados, a continuacin se presentan las dos distribuciones de temperatura con las condiciones de borde slo de Dirichlet (invitamos al lector a utilizar el cdigo para visualizar distintas combinaciones de condiciones de borde, tanto de Dirichlet como de Newman):

    Figura 3: Grficos de la primera distribucin de temperatura en el tiempo inicial y final

    Figura 4: Grficos de la segunda distribucin de temperatura en el tiempo inicial y final

  • 6

    De la figura 3 y 4 se puede apreciar que la distribucin de temperatura prcticamente se estabiliza transcurridos 35 segundos aproximadamente. El tiempo de estabilizacin se debe a las condiciones fsicas del material en estudio.

    Finalmente para el estudio de los distintos espesores, el comportamiento de la temperatura en la primera y segunda distribucin de temperatura respectivamente, en el instante 120 segundos es:

    Figura 5: Grficos que muestran la distribucin de temperatura de Dirichlet y Newman comparado con la distribucin de temperatura inicial

    Estos dos grficos representan a los distintos espesores, es decir, todos se comportan de la misma manera.

    Como se observa en la figura 5, la distribucin de temperatura al utilizar solo Dirichlet como condicin de borde, la temperatura en los 120 segundos alcanza una estabilizacin a 0C. Ahora bien, para condiciones de borde de Newman y Dirichlet, se observa que la temperatura se comporta de acuerdo a un perfil parablico.

  • 7

    Conclusiones

    Comparando el mtodo en 2D, con el mtodo implcito en 1D, tenemos que el mtodo ms sencillo de programar y utilizar, es el mtodo explcito de Euler, ya que solo se necesita las condiciones iniciales para poder iterar y obtener las temperaturas en tiempos posteriores. Por lo tanto, este mtodo es ideal para calcular temperaturas en dos dimensiones, ya que el desarrollo de la ecuacin es ms sencillo que el uso matricial que requiere el mtodo de Nicolson.

    Utilizando condiciones de borde de tipo Dirichlet, la temperatura alcanza rpidamente una estabilidad con tendencia a cero, esto se debe a que esta condicin conlleva un choque trmico muy violento con la placa, que da lugar a un gran intercambio de calor. Por lo tanto cuando, queremos estudiar la distribucin de la temperatura en el tiempo de un material aislado, no es recomendable utilizar esta condicin, ya que necesitamos minimizar el impacto de la temperatura en los bordes de la pieza, es decir, es ms recomendable utilizar condiciones de borde de Newmann ya que suaviza este intercambio.

    Algo similar ocurre cuando queremos estudiar la distribucin en una placa de grandes dimensiones, ya que el intercambio de calor se da de manera ms paulatina, por lo que tambin es recomendable utilizar Newmann.

    Un caso contrario, sera el de choque trmico en una pieza, ya que en este caso se debe aplicar violentamente una temperatura a los bordes del material, con el fin de que esta se enfre los ms rpido posible, por lo tanto en este caso si sera adecuado utilizar condiciones de frontera de Dirichlet, para mantener los bordes a temperaturas mnimas.

    La programacin de estos mtodos nos brinda la posibilidad de analizar distribuciones de temperaturas en el tiempo, con gran facilidad y rapidez, ya que solo necesitamos tener las distribuciones de temperaturas iniciales, y considerar las condiciones de borde adecuadas al caso. Una vez tenemos definidos estos parmetros, los errores como se demuestra en el error de convergencia en el mtodo 1D, son mnimos comparados con los valores analticos, lo que hace que este mtodo tenga una gran ventaja en comparacin con los mtodos convencionales.

  • 8

    Anexos Anexo 1:

    Archivo ProyectoP1.m

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%-Problema 1-%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc clear all %Propiedades K=0.13; %Conductividad t?rmica c=0.11; %Capacidad calor?fica ro=7.8; %Densidad Material alfa=K/(c*ro); L=20; %Caracter?sticas Pasos dt = 0.5; dx = 1; Tf=120; xval=0:dx:L; %vector que define largo barra lambda=alfa^2*dt/dx^2; N=floor(Tf/dt) ;%N?mero de discretizaciones en t J=length(xval);%N?mero de discretizaciones en x u=zeros(J-2,N); %vector de temperatura u(x,t) con x=1,...,J-2 y t=0,...,N u0=zeros(J-2,1);%vector de condicion de borde para el m?todo % Condiciones iniciales n=1; for x=1:dx:L-1% llena la primera columna de la matriz u (19x12) de temperaturas u(x,t) % Con las condiciones iniciales if x

  • 9

    Tb = 0; % Condici?n Derecha T(L,t) u0(J-2)=Tb;%coloca T(l,t)=0 el la ultima posicion del vector u0 de largo 19 ( 21 menos borde posicion 0 y 20) u0f=ones(1,N+1)*Tb;%vector fila con condiciones de borde finales %llena de T(L,t)=0 un vector fila de largo 13 ( tiempo 0 hasta 12) %Solucion Analitica para t=120[seg] t=120; [T,xt]=temperatura(Ta,Tb,L,alfa,t,dx);%solucion Analitica simplify (T) %Soluci?n M?todo Crank-Nicolson E = ones(J-2 ,1);%crea una matriz 19x1 llena de 1 D = spdiags([-E 2*E -E],[-1,0,1],J-2,J-2);%crea matriz diagonal I = speye(J-2); %Matriz identidad A = I+1/2*lambda*D;%termino izquierda exprecion matricial de C-N B = I-1/2*lambda*D;%termino derecha expresion matricial de C-N [L,U] = lu(A); Nframes=N; %Definici?n de pasos para el video heatmovie=moviein(Nframes); %Inicializacion del video graf0=[Tb;u(:,1);Tb];%Grafica de Condiciones de Borde %Iteraci?n M?todo Crank-Nicolson n=0; for m =1:N%for que avanza hasta N (discretizacion del tiempo N=floor(Tf/dt) ) n=n+1; rhs=B*u(:,n)+lambda.*u0; %T?rmino v del problema Lz=v ( tiempo actual) z = L\rhs; %Soluci?n del sistema Lz=v u(:,n+1) = U\z; %Soluci?n del sistema Uw=z donde u(:,ti+1) corresponde a w ( tiempo siguiente) %Gr?fica para animaci?n graf1 = [Ta;u(1:J-2,n);Tb]; %vector columna para cada N para grafica de cada paso graff = [Ta;u(1:J-2,n);Tb]; hold on title('Solucion Numerica '); xlabel('x'), ylabel('u') legend('Condicion Inicial','Solucion Computacional','Solucion Analitica') plot(xval,graf0,'--b',xval,graf1, '--mo',xt,T) pause(0.01) clf %heatmovie(:,m)=getframe;%Graficar en el video end ufinal=[u0i;u;u0f]%junta coondiciones de borde con las temperaturas interiores subplot(1,2,1);

  • 10

    graff = [Ta;u(1:J-2,n);Tb]; hold on title('Solucion Numerica '); xlabel('x'), ylabel('u') plot(xval,graf0,'--b',xval,graf1, '--mo',xt,T) legend('Condicion Inicial','Solucion Computacional','Solucion Analitica') subplot(1,2,2); %Gr?fico de error entre soluciones plot(xt,(abs(ufinal(:,N)-T)./ufinal(:,N))*100) title('Error solucion') xlabel('x') ylabel('%error') legend('error')

    Archivo Temperatura.m

    function [T,x]=temperatura(Ta,Tb,L,a2,t,dx) %Programa que resuelve la ecuaci?n de calor de forma anal?tica para un %tiempo t para toda la barra. Los par?metros de ingreso son la temperatura %en el borde inicial (Ta) y borde final (Tb). a2=alfa*dt/dh^2, el tiempo %donde se quiere evaluar (t) y el espaciamiento de la barra dx. Devuelve la %temperatura en toda la barra (T) para el tiempo especificado,y los valores %de x (discretizacion de la barra) x=0:dx:L;%vector de 0 a 20 (largo 21) m=0; l=0; %Definici?on de las condiciones iniciales for i=1:dx:L+1 %(21 vueltas) if x(i)

  • 11

    %analitica en base a condiciones inicial %f(x) = cond inicial %g(x)=(Tb-Ta)/L*r+Ta)---> arreglo debido a condiciones de frontera no %homogeneos syms n r %quedan en funcion de n para luego iterar segun n k1=@(n) int((10*r-((Tb-Ta)/L*r+Ta))*sin(n*pi/L*r),r,0,L); k2=@(n) int(((200-10*r)-((Tb-Ta)/L*r+Ta))*sin(n*pi/L*r),r,0,L); cte=pi*pi*a2/(L*L);%parte constante del exp de la serie %Terminos libres de la solucion de Fourier debido a condiciones de borde %no homogeneas T1=Ta+(Tb-Ta).*x1/L; T2=Ta+(Tb-Ta).*x2/L; n=0; v=1; %Construcci?n de la solucion con una iteraci?n mediante el "while" %simulando la sumatoria a infinito. while(v>0.001) %cuando v sea menor que 0.001 se detiene la iteracion n=n+1; v=exp(-cte*n*n*t);%componente de la solucion, euler que multiplica %la integral de la serie T1=T1+2/L*k1(n).*(v)*(sin(pi*n.*x1./L)); %Soluci?n para 0

  • 12

    dt=0.1; %ANCHO DE CADA PASO DE TIEMPO nt=T/dt; %n?mero de iteraciones x=0:dx:lx; %Range de x(0,2) con espaciado de discretizacion y=0:dy:ly; %Rango de y(0,2) con espaciado de discretizacion u=zeros(nx,ny); %Creando la matriz u un=zeros(nx,ny); %Creando la matriz un K=0.13; %Conductividad termica c=0.11; %Capacidad calorifica ro=7.8; %Densidad Material alfa=K/(c*ro); vis=alfa %Coeficiente de Difusion lambda=(vis*dt)/(dx*dx) if lambda

  • 13

    %Metodo Explicito u(i,j)=un(i,j)+lambda*(un(i+1,j)+un(i-1,j)+un(i,j+1)+un(i,j-1)-4*un(i,j));%Ecuaci?n para calcular el m?todo %Condiciones de Borde %Dirichlet: u(1,:)=UW; u(nx,:)=UE; u(:,1)=US; u(:,ny)=UN; %Newmann: %u(1,:)=u(2,:)-UnW*dx; %u(nx,:)=u(nx-1,:)+UnE*dx; %u(:,1)=u(:,2)-UnS*dy; %u(:,ny)=u(:,ny-1)+UnN*dy; end disp('%%%% Temperatura a lo largo del punto u(x,Ly/2) %%%%') u(:,(ny-1)/2) lymedio=u(:,(ny-1)/2); else disp('%%%% los parametros con cumplen con: %%%%') disp('%%%% alfa*dt)/(dx*dx)

  • 14

    Archivo g.m

    function y=g(x) for i=1:1:length(x) n=x(:,i); if 10