Finite method for a heat generating furnace
5 views (last 30 days)
Show older comments
Hello! I'm currently working on a heat transfer problem, I don't consider myself to be an expert, therefore I'm still learning how to use this tool.
Here's the thing: I have pretty much everything working, but there's an issue. The ELSE equation is not giving any results and I don't know exactly why. I would appreciate if someone would be interested in helping me learn about this because I'm at a loss righ now
%% Parámetros geométricos del dominio
A=3; %Anchura (en metros)
H=2.5; %Altura (en metros)
Nx= 7; %Número de nodos en la dirección x
Ny=6; %Número de nodos en la dirección y
dx=A/(Nx-1); %Distancia de elemento finito en dirección x (metros)
dy=H/(Ny-1); %Distancia de elemento finito en direccion y (metros)
%% Condiciones iniciales y de frontera
To=1000; %Temperatura interna del horno (en C)
T = ones(Nx,Ny);
Tinf=20; %Temperatura externa (en C)
ho=100; %Coeficiente de transferencia convectiva interior (en W/m^2K)
hinf=10; %Coeficiente de transferencia convectiva exterior (en W/m^2K)
q_dot=8000; %Calor generado por unidad volumétrica
K=1; %Conductividad del material (en W/mK)
epsilon=1e-5;
Error=5;
%% Computación
iter=0;
while (Error>epsilon)
iter=iter+1;
disp(iter);
Told=T;
for j=1:Ny
for i=1:Nx
if i==Nx
for j=2:Ny-1
T(i,j)=(2*T(i-1,j)+T(i,j-1)+T(i,j+1)+(q_dot*dx^2)/K)/4;
end
for j=Ny
T(i,j)=T(i,j-1)+T(i-1,j)+(q_dot*dx^2)/(2*K)+(hinf*dx*Tinf)/K;
end
for j=1
T(i,j)=((q_dot*dx^2)/(2*K)+T(i-1,j)+T(i,j+1));
end
elseif i==1
for j=Ny*4/6:Ny-1
T(i,j)=(2*T(i+1,j)+T(i,j-1)+T(i,j+1)+(q_dot*dx^2)/K)/4;
end
for j=Ny*0.5
T(i,j)=T(i,j+1)+T(i+1,j)+(q_dot*dx^2)/(2*K)+(hinf*dx*Tinf)/K;
end
for j=Ny
T(i,j)=T(i,j-1)+T(i+1,j)+(q_dot*dx^2)/(2*K)+(ho*dx*To)/K;
end
elseif i>1 && i<Nx
for j=Ny
T(i,j)=(T(i-1,j)+T(i+1,j)+2*T(i,j-1)+(q_dot*dx^2)/K+(2*hinf*dx*Tinf)/K)/(4+2*hinf*dx/K);
end
elseif 2<i && i<Nx*3/7
for j=Ny*0.5
T(i,j)=((T(i-1,j)+T(i+1,j)+2*T(i,j+1)+(q_dot*dx^2)/K)+(2*ho*dx*To)/K)/(4+2*hinf*dx/K);
end
elseif i==Nx*4/7
for j=2:Ny*2/6
T(i,j)=((T(i,j-1)+T(i-j+1)+2*T(i+1,j)+(q_dot*dx^2)/K)+(2*ho*dx*To)/K)/(4+2*hinf*dx/K);
end
for j=1
T(i,j)=T(i,j-1)+T(i+1,j)+(q_dot*dx^2)/(2*K)+(ho*dx*To)/K;
end
for j=Ny*0.5
T(i,j)=(T(i,j+1)+2*T(i+1,j)+2*T(i,j+1)+T(i-1,j)+(3*q_dot*dx^2)/(2*K)+(2*ho*dx*To)/K)/(6+(2*ho*dx)/K);
end
else
T(i,j)=(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1)+(q_dot*dx^2)/K)/4;
end
end
end
Error=sqrt(sumsqr(T-Told));
disp(Error);
end
T(1:3,1) = To;
T(1:3,2)=To;
%% Graficando el resultado
x=0:dx:A;
y=0:dy:H;
% Definir los límites de color para resaltar variaciones
min_temp = min(min(T)); % Obtener el valor mínimo de temperatura
max_temp = max(max(T)); % Obtener el valor máximo de temperatura
colormap(hot); % Cambiar el colormap (puedes probar otros)
contourf(x, y, T', 'LineWidth', 1); % Añadir un grosor de línea para los contornos
colorbar;
title('Distribución de Temperatura')
xlabel('Dirección en x')
ylabel('Dirección en y')
% Establecer los límites de color para resaltar variaciones
clim([min_temp, max_temp]); % Establecer los límites de color según los valores mínimos y máximos de temperatura
0 Comments
Accepted Answer
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!