# analytical solution for steady state 2d heat transfer

134 views (last 30 days)
NIRANJAN PATNANA on 9 Jun 2020
Answered: Abhishek Kumar on 13 Dec 2020
analytical solution for a 2d steady state sqaure bar
my plot for 'analytical solution1' isnt symmetric so i have tried using anathor equation 'analytical solution2' and now it is showing new errors.pls help
here i am attaching my full code.
here input conditions a=5,b=5,nx=ny=5
clear all
close all
clc
%Solving the Steady State 2D Heat Conduction Equation
%Length of Domain in x and y directions (unit square)
Lx=input("enter value of a");
Ly=input("enter value of b");
%No. of grid points
nx=1+input("enter no.of grids along x direction");
ny=1+input("enter no.of grids along y direction");
%Creating the mesh
x=linspace(0,Lx,nx);
y=linspace(0,Ly,ny);
dx=x(2)-x(1);
dy=abs(y(2)-y(1));
%Initial Conditions
T=298*ones(nx,ny);
K1 = dy^2/(2*((dx)^2 + (dy^2)));
K2 = dx^2/(2*((dx^2) + (dy^2)));
%Boundary Conditions
T(1,:) = 0; %First row or Bottom row of nodes in the matrix
T(end,:) = 0; %Last row or Top row of nodes in the matrix
T(:,1) = 100; %First column or Left side column of nodes in the matrix
T(:,end) = 0; %Last column or Right side column of nodes in the matrix
T_old=T; %Initializing the values for T_old for the first loop
tol=1e-4; %tolerance limit to attain convergence
error=9e9; %initial error to execute while loop
%Code for Solvers
%Jacobi Method
count=1;
while(error>tol)
for i=2:(nx-1)
for j=2:(ny-1)
h =K1*(T_old(i-1,j)+T_old(i+1,j));
v = K2*(T_old(i,j-1)+T_old(i,j+1));
T(i,j) = h+v;
end
end
error=max(abs(T(i,j)-T_old(i,j)));
T_old=T;
count=count+1;
end
% Plotting the Results
figure(1)
[a,b] = contourf(x,y,T);
clabel(a,b); colorbar;
colormap(jet);
xlabel('X Axis');
ylabel('Y Axis');
text = sprintf('2D steady state Heat Conduction n No. of iterations: %d',count);
title(text);
%analytical sol1
a=Lx;
b=Ly;
TA=298*ones(nx,ny);
%Boundary Conditions
TA(1,:) = 0; %First row or Bottom row of nodes in the matrix
TA(end,:) = 0; %Last row or Top row of nodes in the matrix
TA(:,1) = 100; %First column or Left side column of nodes in the matrix
TA(:,end) = 0; %Last column or Right side column of nodes in the matrix
sum=0;
for f=2:(nx-1)
for g=2:(ny-1)
for n=0:10
th=((b-g)*(2*n+1)*pi)/a;
tg=((2*n+1)*pi*f)/a;
tj=((2*n+1)*pi*b)/a;
tr=1/(2*n+1);
sum=sum+(sin(tg)*sinh(th)*tr)/sinh(tj)
end
TA(f,g)= (((4*100)*sum)/pi);
sum=0;
end
end
figure(2)
[a,b] = contourf(x,y,TA);
clabel(a,b); colorbar;
colormap(jet);
xlabel('X Axis');
ylabel('Y Axis');
text = sprintf('2D Transient Heat Conduction using analytical Method n No. of iterations: %d',count);
title(text);
TAA=298*ones(nx,ny);
%analytical sol2
%Boundary Conditions
TAA(1,:) = 0; %First row or Bottom row of nodes in the matrix
TAA(end,:) = 0; %Last row or Top row of nodes in the matrix
TAA(:,1) = 100; %First column or Left side column of nodes in the matrix
TAA(:,end) = 0; %Last column or Right side column of nodes in the matrix
sumA=0;
for fA=2:(nx-1)
for gA=2:(ny-1)
for nA=1:10
thA=(gA*nA*pi)./a;
tgA=(nA*pi*fA)./a;
tjA=(nA* (pi)*b)/a;
trA=1/nA;
sumA=sumA+(sin(tgA)*sinh(thA)*trA*(1-(1^nA)))/sinh(tjA);
end
TAA(fA,gA)= (((2*100)*sumA)/pi);
sumA=0;
end
end
figure(3)
[a,b] = contourf(x,y,TAA);
clabel(a,b); colorbar;
colormap(jet);
xlabel('X Axis');
ylabel('Y Axis');
text = sprintf('2D Transient Heat Conduction using analytical Method n No. of iterations: %d',count);
title(text);
##### 2 CommentsShowHide 1 older comment
NIRANJAN PATNANA on 9 Jun 2020
Operator '*' is not supported for operands of type 'matlab.graphics.chart.primitive.Contour'.
its showing the above error.

Abhishek Kumar on 13 Dec 2020
Hi Niranjan, having run your code i see that you are getting the above error, when you try to display variable "b", you find that it is of contour type
>> b
b =
Contour with properties:
LineColor: [0 0 0]
LineStyle: '-'
LineWidth: 0.5000
Fill: on
LevelList: [0 10 20 30 40 50 60 70 80 90 100]
XData: [0 14.3333 28.6667 43]
YData: [0 7.6667 15.3333 23]
ZData: [4×4 double]
Show all properties
and thus you can't use the operator '*' directly with it but you can access the its content by using "b.option", format, you can follow the for more info on contour type: