2D Heat Conduction Steady and Unsteady
STEADY STATE ANALYSIS
Governing equation
`(del^2T)/(delx^2)+(del^2T)/(dely^2)= 0`
Equivalent Numerical Equation used in Jacobi Method
`T(i,j) = 0.25 xx (Told(i,j-1)+Told(i,j+1)+Told(i-1,j)+Told(i+1,j))`
Equivalent Numerical Equation used in Gauss Siedel Method
`T(i,j) = 0.25 xx (T(i,j-1)+Told(i,j+1)+T(i-1,j)+Told(i+1,j))`
Equivalent Numerical Equation used in SOR Method
`T(i,j)=(1-w) xx Told(i,j)+w xx (0.25 xx (T(i,j-1)+Told(i,j+1)+T(i-1,j)+Told(i+1,j)))`
MATLAB CODE
%2nd order steady state 2dimensional pde
%Implicit methods
close all
clear all
clc
nx=20;
ny=20;
x=linspace(0,1,nx);
y=linspace(0,1,ny);
[xx,yy]=meshgrid(x,y);
T=zeros(nx,ny);
T(1,1:nx)=900;
T(ny,1:nx)=600;
T(1:ny,1)=400;
T(1:ny,nx)=800;
tol=1e-4;
error=1;
iter=0;
w=1.5;
prompt= \'Which method to be used(1. Jacobi 2.GS 3.GS+SOR)?\';
p=input(prompt);
if p==1
while (error>tol)
Told=T;
for i=2:nx-1
for j=2:ny-1
T(i,j)=0.25*(Told(i,j-1)+Told(i,j+1)+Told(i-1,j)+Told(i+1,j));
end
end
iter = iter+1;
error = max(max(abs(Told-T)));
end
end
if p==2
while (error>tol)
Told=T;
for i=2:nx-1
for j=2:ny-1
T(i,j)=0.25*(T(i,j-1)+Told(i,j+1)+T(i-1,j)+Told(i+1,j));
end
end
iter = iter+1;
error = max(max(abs(Told-T)));
end
end
if p==3
while (error>tol)
Told=T;
for i=2:nx-1
for j=2:ny-1
T(i,j)=(1-w)*Told(i,j)+w*(0.25*(T(i,j-1)+Told(i,j+1)+T(i-1,j)+Told(i+1,j)));
end
end
iter = iter+1;
error = max(max(abs(Told-T)));
end
end
figure(1)
[C,h] = contourf(xx,yy,T);
colorbar;
colormap(jet);
clabel(C,h);
title(sprintf(\'2D steady state heat conduction (Implicit Method) Number of iterations: %d \',iter));
xlabel(\'Bottom\');
ylabel(\'Left side\');
Code Output Plots
1. Jacobi Method
2. Gauss Seidel Method
3. GS and Successive Over Relaxation (w=1.5)
UNSTEADY STATE ANALYSIS
Governing equation
`(del^2T)/(delx^2)+(del^2T)/(dely^2)= alpha (delT)/(delx)`
1. EXPLICIT METHOD
Equivalent Numerical Equation used
`T(i,j)= Told(i,j)+k1*(Told(i,j-1)-2 Told(i,j)+Told(i,j+1))+k2*(Told(i-1,j)-2*Told(i,j)+Told(i+1,j))`
MATLAB CODE
%2nd order unsteady state 2dimensional pde
%Explicit method
close all
clear all
clc
nx=20;
ny=20;
dx=1/(nx-1);
dy=1/(ny-1);
x=linspace(0,1,nx);
y=linspace(0,1,ny);
[xx,yy]=meshgrid(x,y);
T=zeros(nx,ny);
T(1,1:nx)=900;
T(ny,1:nx)=600;
T(1:ny,1)=400;
T(1:ny,nx)=800;
dt= 0.01;
alpha= 1e-4;
k1=alpha*dt/dx^2;
k2=alpha*dt/dy^2;
for iter = 1:20000 %Compare with results for 200000 iterations
Told=T;
for i=2:nx-1
for j=2:ny-1
T(i,j)= Told(i,j)+k1*(Told(i,j-1)-2*Told(i,j)+Told(i,j+1))+k2*(Told(i-1,j)-2*Told(i,j)+Told(i+1,j));
end
end
end
figure(1)
[C,h] = contourf(xx,yy,T);
colorbar;
colormap(jet);
clabel(C,h);
title(sprintf(\'2D unsteady state heat conduction (Emplicit Method) Number of iterations: %d \',iter));
xlabel(\'Bottom\');
ylabel(\'Left side\');
Code Output Plots
2. IMPLICIT METHOD
`k1=alpha*dt/(dx)^2`
`k1=alpha*dt/(dy)^2`
`term1=(1+2*k1+2*k2)^(-1)`
`term2=k1*term1`
`term3=k2*term1`
Equivalent Numerical Equation used in Jacobi Method
`h=Told(i,j-1)+Told(i,j+1)`
`v=Told(i-1,j)+Told(i+1,j)`
`T(i,j)=T_prev_dt(i,j)*term1+h*term2+v*term3`
Equivalent Numerical Equation used in Gauss Siedel Method
`h=T(i,j-1)+Told(i,j+1)`
`v=T(i-1,j)+Told(i+1,j)`
`T(i,j)=T_prev_dt(i,j)*term1+h*term2+v*term3`
Equivalent Numerical Equation used in SOR Method
`h=T(i,j-1)+Told(i,j+1)`
`v=T(i-1,j)+Told(i+1,j)`
`T(i,j)=(1-w)*Told(i,j)+w*(T_prev_dt(i,j)*term1+h*term2+v*term3)`
MATLAB CODE
%2nd order unsteady state 2dimensional pde
%Implicit method
close all
clear all
clc
nx=20;
ny=20;
dx=1/(nx-1);
dy=1/(ny-1);
x=linspace(0,1,nx);
y=linspace(0,1,ny);
[xx,yy]=meshgrid(x,y);
T=zeros(nx,ny);
T(1,1:nx)=900;
T(ny,1:nx)=600;
T(1:ny,1)=400;
T(1:ny,nx)=800;
tol=1e-4;
iter=0;
dt= 0.01;
t=0;
tend=200;
alpha=1e-4;
p=0;
k1=alpha*dt/dx^2;
k2=alpha*dt/dy^2;
term1=(1+2*k1+2*k2)^(-1);
term2=k1*term1;
term3=k2*term1;
prompt= \'Which method to be used(1. Jacobi 2.GS 3.GS+SOR)?\';
p=input(prompt);
if p==1
while(t<=tend)
error=1e9;
T_prev_dt=T;
while (error>tol)
Told=T;
for i=2:nx-1
for j=2:ny-1
h=Told(i,j-1)+Told(i,j+1);
v=Told(i-1,j)+Told(i+1,j);
T(i,j)=T_prev_dt(i,j)*term1+h*term2+v*term3;
end
end
iter = iter+1;
error = max(max(abs(Told-T)));
end
t=t+dt;
end
end
if p==2
while(t<=tend)
error=1e9;
T_prev_dt=T;
while (error>tol)
Told=T;
for i=2:nx-1
for j=2:ny-1
h=T(i,j-1)+Told(i,j+1);
v=T(i-1,j)+Told(i+1,j);
T(i,j)=T_prev_dt(i,j)*term1+h*term2+v*term3;
end
end
iter = iter+1;
error = max(max(abs(Told-T)));
end
t=t+dt;
end
end
if p==3
while(t<=tend)
error=1e9;
T_prev_dt=T;
while (error>tol)
Told=T;
w=1.1;
for i=2:nx-1
for j=2:ny-1
h=T(i,j-1)+Told(i,j+1);
v=T(i-1,j)+Told(i+1,j);
T(i,j)=(1-w)*Told(i,j)+w*(T_prev_dt(i,j)*term1+h*term2+v*term3);
end
end
iter = iter+1;
error = max(max(abs(Told-T)));
end
t=t+dt;
end
end
figure(1)
[C,h] = contourf(xx,yy,T);
colorbar;
colormap(jet);
clabel(C,h);
title(sprintf(\'2D unsteady state heat conduction (Implicit Method) Number of iterations: %d \',iter));
xlabel(\'Bottom\');
ylabel(\'Left side\');
Code Output Plots
1. Jacobi Method
2. Gauss Seidel Method
3. GS and Successive Over Relaxation(w=1.1)