Challenge

Week 5.1 - Mid term project - Solving the steady and unsteady 2D heat conduction problem

INTRODUCTION:

The two dimensional heat conduction equation have both time deravative and space deravative.

we can solve it by two approch

1 steady state equation

in this the rate of change of temp remains 0. therefore the time deratavie is equated to zero

2 transient state equation

in this the both term are consider

above equation for transient can solve by two method implicit method second is explicit method

* SOLVING THE STEADY STATE EQUATION:

Two dimensional steady state equation

discretising the equation by applying the central differencing scheme

*SOLVING ABOVE EQUATION USING 3 ITERATIVE METHODS:

MATLAB CODE

% solving the staedy state of different solvers like jacobi,gauss
% seidal,sucessive over relaxation
clear all
close all
clc

%defining the inputs
nx=10;
ny=nx;
x=linspace(0,1,nx);
y=linspace(0,1,ny);
dx=x(2)-x(1);
dy=y(2)-y(1);
[xx,yy]=meshgrid(x,y);

%defining the boundary condition
t=ones(nx,ny);
t(1,:)=900;
t(end,:)=600;
t(:,1)=400;
t(:,end)=800;
told=t;

%errors start and tol
error_tol=1e-4;
start_error=9e9;
k=2*((dx^2+dy^2)/(dx^2*dy^2));

%defining the solver
iterative_solver=input('desirable number respect to solver:');
if iterative_solver==1
    tic;
    t_jacobi=jacobi_iter_steady(start_error,error_tol,xx,yy,nx,ny,dx,dy,t,k,told);
    time_jacobi=toc
elseif iterative_solver==2
    tic;
    t_gauss=gauss_iter_steady(start_error,error_tol,x,y,nx,ny,dx,dy,t,k,told);
    time_gauss=toc
elseif iterative_solver==3
    tic;
    t_sor=sor_iter_steady(start_error,error_tol,x,y,nx,ny,dx,dy,t,k,told);
    time_sor=toc
end

FUNCTION CODE OF JACOBI

%function for jacobi method for solving stady state equation 
function t= jacobi_iter_steady(start_error,error_tol,xx,yy,nx,ny,dx,dy,t,k,told)
jacobi_iter=1;
while(start_error>error_tol)
    for i=2:nx-1
        for j=2:ny-1
            term1=(told(i-1,j)+told(i+1,j))/(k*(dx^2));
            term2=(told(i,j-1)+told(i,j+1))/(k*(dx^2));
            t(i,j)=term1+term2;
        end
    end
    start_error=max(max(abs(told-t)));
    told=t;
    jacobi_iter=jacobi_iter+1;
    figure(1)
    [c,d]=contourf(xx,yy,t);
    colormap(jet)
    colorbar
    title_text=sprintf('jacobi iteration number=%d @steadt state',jacobi_iter);
    title(title_text)
    xlabel=('x')
    ylabel('y')
    clabel(c,d)
    pause(0.03)

end
fprintf('no of iteration in jacobi=%d',jacobi_iter);
end

FUNCTION CODE FOR GAUSS SEIDAL:

%function for gauss method for solving stady state equation 
function t= gauss_iter_steady(start_error,error_tol,xx,yy,nx,ny,dx,dy,t,k,told)
gs_iter=1;
while(start_error>error_tol)
    for i=2:nx-1
        for j=2:ny-1
            t(i,j)=(((t(i-1,j)+told(i+1,j))/dx^2)+((t(i,j-1)+told(i,j+1))/dy^2))/k;
        end
    end
    start_error=max(max(abs(told-t)));
    told=t;
    gs_iter=gs_iter+1;
    figure(2)
    [c,d]=contourf(xx,yy,t);
    colormap(jet)
    colorbar
    title_text=sprintf('gs iteration number=%d @steady state',gs_iter);
    title(title_text)
    xlabel=('x')
    ylabel('y')
    clabel(c,d)
    pause(0.03)

end
fprintf('no of iteration in gs=%d',gs_iter);
end

FUNCTION CODE FOR SOR:

%function for sor method for solving stady state equation 
function t= sor_iter_steady(start_error,error_tol,xx,yy,nx,ny,dx,dy,t,k,told)
sor_iter=1;
omega=1.7;
while(start_error>error_tol)
    for i=2:nx-1
        for j=2:ny-1
            t_gs=(((t(i-1,j)+told(i+1,j))/dx^2)+((t(i,j+1))/dy^2))/k;
            t(i,j)=omega*(t_gs)+(1-omega)*(told(i,j));
        end
    end
    start_error=max(max(abs(told-t)));
    told=t;
    sor_iter=sor_iter+1;
    figure(3)
    [c,d]=contourf(xx,yy,t);
    colormap(jet)
    colorbar
    title_text=sprintf('sor iteration number=%d@steadt state',sor_iter);
    title(title_text)
    xlabel=('x')
    ylabel('y')
    clabel(c,d)
    pause(0.03)

end
fprintf('no of iteration in sor=%d',sor_iter);
end

RESULTS

JACOBI METHOD

GAUSS SEIDAL

SOR METHOD

From above all plots it can deravie that sor method has taken less number of iterations when compare to others two.yhere fore sor is good and fastest among all.

*SOLVING TRANSIENT STATE EQUATION

This equation is solve by both transient and emplicity following two d heat conduction equation

Solving by equation by explicity:

explicit method calculate the state of a system at a later time from the state of a sysytem at the current time.

here the most important in this each equation approch contains only one unknown and can be solved explicity for the one unknown using this method

here the time deravative term are calculated by first ODE where as second order is eliptical in nature so information need to take by all the side equally.therefore central differencing scheme is applied

CODE FOR 2D TRANSIENT HEAT CONDUCTION EQUATION FOR SOLVING EXPLICITY:

%solving transient heat conduction explicity
clear all
close all
clc
% defining inputs
nx=41;
ny=nx;
x=linspace(0,1,nx);
y=linspace(0,1,ny);
dx=x(2)-x(1);
dy=y(2)-y(1);
dt=0.01;
alpha=1.88e-5;
[xx,yy]=meshgrid(x,y);

%degining the boundary
t=ones(nx,ny);
t(1,:)=900;
t(end,:)=600;
t(:,1)=400;
t(:,end)=800;
told=t;

%rounding of the corner value
t(1,1)=(400+900)/2;
t(1,ny)=(900+800)/2;
t(nx,1)=(400+600)/2;
t(nx,ny)=(600+800)/2;

% errors term
error_tol=1e-4;
start_error=9e9;
k1=alpha*(dt/dx^2);
k2=alpha*(dt/dy^2);

% defining the solver
iterative_solver=1;
tic;
if iterative_solver==1
    t_jacobi=jacobi_iter_transient_expli(xx,yy,nx,ny,t,k1,k2,told);
end
time_jacobi=toc

FUNCTION FOR JACOBI

% function for transient jacobi explicit
function t=jacobi_iter_transient_expli(xx,yy,nx,ny,t,k1,k2,told)
jacobi_iter=1;
for k=1:120000
    for i=2:nx-1
        for j=2:ny-1
            term1=(told(i,j));
            term2=k1*(told(i+1,j)-2*told(i,j)+told(i-1,j));
            term3=k2*(told(i,j+1)-2*told(i,j)+told(i,j-1));
            t(i,j)=term1+term2+term3;
        end
    end
    start_error=max(max(abs(told-t)));
    told=t;
    jacobi_iter=jacobi_iter+1;
end
figure(1)
[c,d]=contourf(xx,yy,t);
colormap(jet)
colorbar
title_text=sprintf('jacobi iteration number=%d @transient explicit',jacobi_iter);
title(title_text)
xlabel('x')
ylabel('y')
clabel(c,d)
pause(0.03)
fprintf('num of iteration in jacobi=%d/2',jacobi_iter);
end

RESULT

SOLVING THE ABOVE EQUATION IMPLICITY:

In implicity method its find the solution by an equation involving both current state of the system and later one.

CODE FOR 2D TRANSIENT STATE HEAT CONDUCTION EQUATION SOLVING BY IMPLICITY:

clear all
close all
clc
% defining inputs
nx=41;
ny=nx;
l=1;
x=linspace(0,1,nx);
y=linspace(0,1,ny);
dx=x(2)-x(1);
dy=y(2)-y(1);
dt=0.01;
alpha=1.88e-5;
[xx,yy]=meshgrid(x,y);

%degining the boundary
t=298*ones(nx,ny);
t(1,:)=900;
t(end,:)=600;
t(:,1)=400;
t(:,end)=800;


%rounding of the corner value
t(1,1)=(400+900)/2;
t(1,ny)=(900+800)/2;
t(nx,1)=(400+600)/2;
t(nx,ny)=(600+800)/2;
told=t;
tprev=told;
% errors term
error_tol=1e-4;
start_error=9e9;
k1=alpha*(dt/dx^2);
k2=alpha*(dt/dy^2);
omega=2/(1+sin(pi*dx));
cfl=alpha*(dt/(dx^2));

% solving iter
iterative_solver=input('appromiate number required:');
if iterative_solver==1
    tic;
    t=jacobi_iter_transient_impli(error_tol,xx,yy,nx,ny,t,k1,k2,told,tprev);
elseif iterative_solver==2
    tic;
    t_gs=gs_iter_transient_impli(error_tol,xx,yy,nx,ny,t,k1,k2,told,tprev);
elseif iterative_solver==3
    tic;
    t_sor=sor_iter_transient_impli(error_tol,xx,yy,nx,ny,t,k1,k2,told,tprev,omega);
end

FUNCTION FOR JACOBI

% dunction jacobi transient implisit
function t=jacobi_iter_transient_impli(error_tol,xx,yy,nx,ny,t,k1,k2,told,tprev)
jacobi_iter=1;
for k=1:120000
    start_error=9e9;
    while(start_error>error_tol)
        for i=2:nx-1
            for j=2:ny-1
                term1= (1+(2*k1)+(2*k2))^(-1);
               term2=k1*term1;
               term3=k2*term1;
               h=(told(i-1,j)+told(i+1,j));
               v=(told(i,j-1)+told(i,j+1));
               t(i,j)=(tprev(i,j)*term1)+term2*h+term3*v;
            end
        end
        start_error=max(max(abs(told-t)));
        told=t;
        jacobi_iter=jacobi_iter+1
    end
    tprev=t;
end
time_jacobi=toc;
contourf(xx,yy,t,'ShowText','on')
colormap(jet)
colorbar
xlabel('x')
ylabel('y')
title_text=sprintf('2d dimensional heat conduction implicit using jacobi=%d',jacobi_iter,time_jacobi);
title(title_text)
fprintf('no of iteration in jacobi=%d ',jacobi_iter,time_jacobi);
end


              
             

FUNCTION FOR GAUSS

% dunction gauss transient implisit
function t=gs_iter_transient_impli(error_tol,xx,yy,nx,ny,t,k1,k2,told,tprev)
gs_iter=1;
for k=1:120000
    start_error=9e9;
    while(start_error>error_tol)
        for i=2:nx-1
            for j=2:ny-1
                term1= (1+(2*k1)+(2*k2))^(-1);
               term2=k1*term1;
               term3=k2*term1;
               h=(told(i-1,j)+told(i+1,j));
               v=(told(i,j-1)+told(i,j+1));
               t(i,j)=(tprev(i,j)*term1)+term2*h+term3*v;
            end
        end
        start_error=max(max(abs(told-t)));
        told=t;
        gs_iter=gs_iter+1
    end
    tprev=t;
end
time_gs=toc;
contourf(xx,yy,t,'ShowText','on')
colormap(jet)
colorbar
xlabel('x')
ylabel('y')
title_text=sprintf('2d dimensional heat conduction implicit using gauss=%d',gs_iter,time_gs);
title(title_text)
fprintf('no of iteration in gauss=%d ',gs_iter,time_gs);
end


              
             

FUNCTION FOR SOR

% dunction sor transient implisit
function t=sor_iter_transient_impli(error_tol,xx,yy,nx,ny,t,k1,k2,told,tprev,omega)
sor_iter=1;
for k=1:120000
    start_error=9e9;
    while(start_error>error_tol)
        for i=2:nx-1
            for j=2:ny-1
                term1= (1+(2*k1)+(2*k2))^-1;
               term2=k1*term1;
               term3=k2*term1;
               h=(t(i-1,j)+told(i+1,j));
               v=(t(i,j-1)+told(i,j+1));
               t(i,j)=omega*(tprev(i,j)*term1+term2*h+term3*v)+(1-omega)*tprev(i,j);
            end
        end
        start_error=max(max(abs(told-t)));
        told=t;
        sor_iter=sor_iter+1
    end
    tprev=t;
end
time_sor=toc;
contourf(xx,yy,t,'ShowText','on')
colormap(jet)
colorbar
xlabel('x')
ylabel('y')
title_text=(sprintf('2d dimensional heat conduction implicit using sor=%d',sor_iter,time_sor));
title(title_text)
fprintf('no of iteration in sor=%d ',sor_iter,time_sor);
end


              
             

RESULTS

JACOBI METHOD

GAUSS METHOD

BY SOR METHOD

Conclusion:

Here the transient equation the time required to solve is more when compare to steady state equation

In transient state equation is solved implicity jacobi method take less time compare to the other two methods .

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.