clc;
clear all;
n = 21;
L = 1;
W = 1;
alpha = 1e-4;
m =(n-2)*(n-2);
sm = sqrt(m);
dx = L/(n-1);
dy = W/(n-1);
x = linspace(0,L,n);
y = linspace(0,W,n);
[X,Y]=meshgrid(x,y);
Tin = 200;
T = ones(m,1)* Tin;
Ta = zeros(n,n);
A = zeros(m,m);
Ax = zeros(m,1);
B = zeros(sm,sm);
dt = 0.1;
tmax = 500;
t = 0 : dt : tmax;
r = alpha * dt /(dx^2);
Tt = 100;
Tb = 100;
Tl = 100;
Tr = 100;
Ta(1,1:n) = Tt;
Ta(n,1:n) = Tb;
Ta(1:n,1) = Tl;
Ta(1:n,n) = Tr;
for ix = 1 : 1 : m
for jx =1 : 1 : m
if (ix == jx)
A(ix,jx) = (1 + 4*r);
elseif ( (ix == jx + 1) && ( (ix - 1) ~= sm * round( (ix-1)/sm) ) )
A(ix,jx) = -r;
elseif ( (ix == jx - 1) && ( ix ~= sm*round(ix/sm) ) )
A(ix,jx) = -r;
elseif (ix == jx + sm)
A(ix,jx) = -r;
elseif (jx == ix + sm)
A(ix,jx) = -r;
else
A(ix,jx) = 0;
end
end
end
for iy = 1 : 1 : sm
for jy = 1 : 1 : sm
if (iy == 1) && (jy == 1)
B(iy,jy) = r * (Tl + Tt);
elseif (iy == 1) && (jy == sm)
B(iy,jy) = r * (Tt + Tr);
elseif (iy == sm) && (jy == sm)
B(iy,jy) = r * (Tb + Tr);
elseif (iy == sm) && (jy == 1)
B(iy,jy) = r * (Tb + Tl);
elseif (iy == 1) && (jy == sm)
B(iy,jy) = r * (Tt + Tr);
elseif (iy == 1)&&(jy > 1 || jy < sm)
B(iy,jy) = r * Tt;
elseif (jy == sm) && (iy > 1 || iy < sm)
B(iy,jy) = r * Tr;
elseif (iy == sm) && ( jy > 1 || jy < sm)
B(iy,jy) = r * Tb;
elseif (jy == 1) && ( iy > 1 || jy < sm)
B(iy,jy) = r * Tl;
else
B(iy,jy) = 0;
end
end
end
Bx = reshape(B,[],1);
for l = 2 : length(t)
Xx = ( T + Bx );
Ax = A \ Xx;
T( 1 : m ) = Ax( 1 : m );
fprintf('Time t=%d\n',l-1);
end
Tx = reshape( Ax , sm , sm);
for i = 2 : 1 : n-1
for j = 2 : 1 :n-1
Ta(i,j) = Tx ( i-1 , j-1 );
end
end
contourf(X,Y,Ta,50,'edgecolor','none');
h = colorbar;
ylabel(h, 'Temperature °C')
colormap jet
axis equal
title(['Top (Tt)= ',num2str(Tt),'°C']);
xlabel(['Bottom (Tb)= ',num2str(Tb),'°C'])
yyaxis left
ylabel(['Left (Tl)= ',num2str(Tl),'°C'])
yyaxis right
ylabel(['Right (Tr)= ',num2str(Tr),'°C'])
Best Answer