Está en la página 1de 18

PROBLEMA 1

Resuelva el problema de la placa plana en estado estacionario sin generación


de calor con condiciones que se indican en la figura utilizando 10,20 y 50
nodos distribuidos uniformemente en las direcciones coordenadas.
 Utilice un ɛ=0.01
 Haga sus cálculos para un factor de relajación λ=1 y compare con los
de λ=1.2 y 1.5 graficando el error máximo en cada iteración contra el
numero de iteraciones.

Solución:
Se genero un código en Matlab para la solución y visualización de los
resultados del problema
A) PARA UN NUMERO DE NODOS N=10
Sabemos que para λ=1, no existe relación y los valores serán los mismos
por lo tanto el error será 0.
Código fuente principal, se hará variantes en este código según como
está indicado en los comentarios (en verde).

Caso A.a)
Para un factor de sobre relajación de λ=1.2 se tiene

clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=1; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos a
analizar)
dy=1; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.5;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km

%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1

for j=2:ny-1

T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);

end

end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);

else

break

end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end

x1=1:k
x2=errormax(1:k)
plot(x1,x2,'red')
grid on
title('Errores maximos vs numero de iteraciones para lanbda=1.2 y N=10','color','blue')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
Caso A.b)
Para un factor de sobre relajación de λ=1.5 se tiene

clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=1; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos a
analizar)
dy=1; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.5;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km
%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1

for j=2:ny-1

T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
end
end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);

else
break
end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end
x1=1:k
x2=errormax(1:k)

plot(x1,x2,'red')
grid on
title('Errores maximos vs numero de iteraciones para lambda =1.5 y N=10','color','blue')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
B) PARA UN NUMERO DE NODOS N=20

caso B.a
a) para un factor de sobre relajación de λ=1.2 se tiene:

clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=0.5; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos
a analizar)
dy=0.5; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.2;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km

%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1

for j=2:ny-1

T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);

end

end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);
else

break

end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end

x1=1:k
x2=errormax(1:k)
plot(x1,x2,'green')
grid on
title('Errores maximos vs numero de iteraciones para lambda =1.2 y N=20','color','red')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
caso B.b
b) para un factor de sobre relajación de λ=1.5 se tiene:

clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=0.5; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos
a analizar)
dy=0.5; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.5;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km

%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1

for j=2:ny-1

T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);

end

end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);

else

break
end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end

x1=1:k
x2=errormax(1:k)
plot(x1,x2,'green')
grid on
title('Errores maximos vs numero de iteraciones para lambda =1.5 y N=20','color','red')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
C) PARA UN NUMERO DE NODOS N=50

caso C.a
a) para un factor de sobre relajación de λ=1.2 se tiene:

clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=0.2; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos
a analizar)
dy=0.2; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.2;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km

%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1

for j=2:ny-1

T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);

end

end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);

else
break

end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end
x1=1:k
x2=errormax(1:k)
plot(x1,x2,'red')
grid on
title('Errores maximos vs numero de iteraciones para lambda =1.2 y N=50','color','blue')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')
caso C.b
b) para un factor de sobre relajación de λ=1.5 se tiene:

clear all
close all
H=10; %ancho de la placa
L=10; %largo de la placa
dx=0.2; %espaciado en la direccion x en la placa(cambiar en dx=0.2 y dx=0.5 para los otros casos
a analizar)
dy=0.2; %espaciado en la direccion y en la placa(cambiar en dy=0.2 y dy=0.5 para los otros casos a
analizar)
alpha=(dx/dy)^(2);
lambda=1.5;%factor de relajación(cambiar a 1.2 o 1.5 para los otros casos a analizar)
nx=floor(L/dx)+1; %numero de particiones en x
ny=floor(H/dy)+1; %numero de particiones en y
%enmallado del dominio(placa plana delgada calentada)
for j=1:ny
for i=1:nx
x(i,j)=(i-1)*dx;
y(i,j)=(j-1)*dy;
T(i,j,1)=0; %valor inicial de la temperatura
end
end
km=30;%numero de iteraciones tope para iniciar el proceso de calculo
for k=1:km

%condiciones de frontera
T(1:nx,ny,:)=100; %condicion de frontera superior
T(1:nx,1,:)=25;%condicion de frontera inferior
T(1,1:ny,:)=75;% condicion de frontera lateral izquierdo
T(nx,1:ny,:)=50;%condicion de frontera lateral derecho
for i=2:nx-1

for j=2:ny-1

T(i,j,k+1)=(T(i-1,j,k)+T(i+1,j,k)+alpha*T(i,j-1,k)+alpha*T(i,j+1,k))/(2*(1+alpha)); %ecuacion de
calculo para laplace
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);

end
end
errormax(k)=abs((Tn(i,j,k+1)-T(i,j,k+1))/(Tn(i,j,k+1)))
if errormax(k)>0.01
Tn(i,j,k+1)=lambda *T(i,j,k+1)+(1-lambda)*T(i,j,k);

else
break
end
kf=k;%numero de iteraciones maximas calculadas para el cual la condicion del problema se
cumple
end
x1=1:k
x2=errormax(1:k)
plot(x1,x2)
grid on
title('Errores maximos vs numero de iteraciones para lambda =1.5 y N=50','color','red')
xlabel('Numero de iteraciones')
ylabel('Errores maximos')

OBSERVACIONES DEL PROBLEMA 1:


 Se observa que con iguales factores de sobre relajación, la cantidad
de iteraciones es la misma independientemente de la cantidad de
nodos usados, esto es debido a que el espaciado entre cada nodo es
igual para ambas dimensiones coordenadas.
 Se observa que para un factor de sobre relajación cada vez mayor el
número de iteraciones incrementa, esto quiere decir que tiende a
converger más lentamente.
PROBLEMA 2

• Resuelva el problema de la placa plana sin generación de calor con condiciones que
se indican en la figura utilizando 10, 20, y 50 nodos distribuidos uniformemente en las
direcciones coordenadas
– Utilice un e=0.01
– Considere que en t=0 la temperatura en toda la placa es de 0ºC
– Haga sus cálculos para un t final=100s y un Dt=5s con l=1
PROBLEMA 3

Solución
3.a)
clear all
close all
clc

L = 60; %Longitud del problema


nx = 10; ny = 10; %Nodos x e y iguales
dx = L/(nx-1);
dy = L/(nx-1);
for i =1:nx
for j = 1:ny
X(i,j) = (i-1)*dx;
Y(i,j) = (j-1)*dy;
end
end

Tmax = 30;
dt = 1;
nt = Tmax/dt +1;
T = zeros(nx,ny,nt);
for i = 1:nx
if (i-1)*dx>=L/2
break
end
T(i,1,:) = 100;
T(i,ny,:) = 75;
end

for i = nx/2+1
for j = 1
T(i,j,:) = 50;
end
for j = 10
T(i,j,:) = 50;
end
end
for i = nx/2+2
for j = 1
T(i,j,:) = 50;
end
for j = ny
T(i,j,:) = 50;
end
end
for i = nx/2+3
for j = 1:2
T(i,j,:) = 50;
end
for j = 9:ny
T(i,j,:) = 50;
end
end
for i = nx/2+4
for j = 1:3
T(i,j,:) = 50;
end
for j = 8:ny
T(i,j,:) = 50;
end
end
for i = nx/2+5
for j = 1:ny
T(i,j,:) = 50;
end
end
k = 20; %Juega on este valor
lambda = k*(dt/dx^2);
for t = 1:nt-1
%Parte Cuadrada
for i = 2:nx/2
for j = 2:ny-1
T(i,j,t+1) = T(i,j,t) + (lambda/2)*(T(i+1,j,t) + T(i-1,j,t) - 2*T(i,j,t)) + (lambda/2)*(T(i,j+1,t) +
T(i,j-1,t) - 2*T(i,j,t));
end
end

%Primer punto Circulo


for i = nx/2+1
a1 = dx;
b1 = sqrt(30.^2-((dx*(nx/2)-30).^ 2));
for j = 2
T(i,j,t+1) = T(i,j,t) + k*dt*((T(i+1,j,t)-T(i,j,t))/(a1*(dx+a1)) + (T(i-1,j,t) - T(i,j,t))/(dx*(a1+dx))) +
k*dt*((T(i,j+1,t)-T(i,j,t))/(b1*(dy+b1)) + (T(i,j-1,t) - T(i,j,t))/(dy*(b1+dy)));
end
for j = 3:ny-2
T(i,j,t+1) = T(i,j,t) + (lambda/2)*(T(i+1,j,t) + T(i-1,j,t) - 2*T(i,j,t)) + (lambda/2)*(T(i,j+1,t) +
T(i,j-1,t) - 2*T(i,j,t));
end
for j = ny-1
T(i,j,t+1) = T(i,2,t+1);
end
end

%Segundo punto Circulo


for i = nx/2+2
b1 = sqrt(30.^2-((dx*(nx/2+1)-30).^ 2));
for j = 2
T(i,j,t+1) = T(i,j,t) + k*dt*((T(i+1,j,t)-T(i,j,t))/(a1*(dx+a1)) + (T(i-1,j,t) - T(i,j,t))/(dx*(a1+dx))) +
k*dt*((T(i,j+1,t)-T(i,j,t))/(b1*(dy+b1)) + (T(i,j-1,t) - T(i,j,t))/(dy*(b1+dy)));
end
for j = 3:ny-2
T(i,j,t+1) = T(i,j,t) + (lambda/2)*(T(i+1,j,t) + T(i-1,j,t) - 2*T(i,j,t)) + (lambda/2)*(T(i,j+1,t) +
T(i,j-1,t) - 2*T(i,j,t));
end
for j = ny-1
T(i,j,t+1) = T(i,2,t+1);
end
end

%Tercer punto Circulo


for i = nx/2+3
b1 = sqrt(30.^2-((dx*(nx/2+2)-30).^ 2));
for j = 3
T(i,j,t+1) = T(i,j,t) + k*dt*((T(i+1,j,t)-T(i,j,t))/(a1*(dx+a1)) + (T(i-1,j,t) - T(i,j,t))/(dx*(a1+dx))) +
k*dt*((T(i,j+1,t)-T(i,j,t))/(b1*(dy+b1)) + (T(i,j-1,t) - T(i,j,t))/(dy*(b1+dy)));
end
for j = 4:ny-3
T(i,j,t+1) = T(i,j,t) + (lambda/2)*(T(i+1,j,t) + T(i-1,j,t) - 2*T(i,j,t)) + (lambda/2)*(T(i,j+1,t) +
T(i,j-1,t) - 2*T(i,j,t));
end
for j = ny-2
T(i,j,t+1) = T(i,3,t+1);
end
end

%Cuarto punto Circulo


b1 = sqrt(30.^2-((dx*(nx/2+3)-30).^ 2));
for i = nx/2+4
for j = 4
T(i,j,t+1) = T(i,j,t) + k*dt*((T(i+1,j,t)-T(i,j,t))/(a1*(dx+a1)) + (T(i-1,j,t) - T(i,j,t))/(dx*(a1+dx))) +
k*dt*((T(i,j+1,t)-T(i,j,t))/(b1*(dy+b1)) + (T(i,j-1,t) - T(i,j,t))/(dy*(b1+dy)));
end
for j = 5:6
T(i,j,t+1) = T(i,j,t) + (lambda/2)*(T(i+1,j,t) + T(i-1,j,t) - 2*T(i,j,t)) + (lambda/2)*(T(i,j+1,t) +
T(i,j-1,t) - 2*T(i,j,t));
end
for j = 7
T(i,j,t+1) = T(i,4,t+1);
end
end

T(1,:,t+1) = T(2,:,t+1) + 20;


end

for t = 1:nt
surf(X,Y,T(:,:,t))
shading interp;
axis([0 60 0 60 0 100])
F(t) = getframe;
end
3.a)

3.c)

También podría gustarte