Heat Transfer Interations with while loops

조회 수: 15 (최근 30일)
Javen Harris
Javen Harris 2020년 5월 4일
I've been working on this code for the past couple days. I'm tyring to get the interations to run and get a time for how long it will take for T(1,p) to get to 200 degrees. Everytime I run the code to that, it runs for more than 10 minutes.
%%
%Steady Temperature at each node
clc
clear
L=.25; h=4000; Tinf=40; den=7850;
Cp=650;k=27.3; dx=5E-3;
diff=k/(den*Cp); Bi=(h*dx)/k;
Fo=(1/2)/(1+Bi);
dt_i=(Fo*dx^2)/diff;dt=1.3;
Ti=1200;
Ts=Tinf;
T_goal=200;
for i=1:51
x=(i-1)*dx;
T(i,1)=Ti;
end
nodes=1:51;
table=[nodes; T'];
fprintf('Node Initial Temperature\n')
fprintf(' %i %5.3f\n',table);
%%
p=1;
while T_goal<T(1,p)
p=p+1;
t=dt*(p-1);
for i=1:51
%for Cp
if 900<=T(i,p-1)
Cp=650;
elseif 745<=T(i,p-1)
Cp=545+(17820/(T(i,p-1)-731));
elseif 600<=T(i,p-1)
Cp=666+(13002/(738-T(i,p-1)));
else 20<=T(i,p-1)
Cp=(425+7.73*10^-1*T(i,p-1))-(1.69*(10^-3)*(T(i,p-1)^2))+(2.22*(10^-6)*(T(i,p-1)^3));
end
%For k
if 800<=T(i,p-1)
k=27.3;
else T(i,p-1)
k=54-3.33*(10^-2)*T(i,p-1);
end
diff=k/(den*Cp);
Bi=h*L/k;
Fo=(diff*dt)/L^2;
if i==1
T(i,p)= Fo*(2*T(i+1,p-1))+(1-2*Fo)*T(i,p-1);
elseif i==51
T(i,p)=2*Fo*(T(i-1,p-1)+Bi*Tinf)+(1-2*Fo-2*Bi*Fo)*T(i,p-1);
else
T(i,p)=Fo*(T(i-1,p-1)+T(i+1,p-1))+(1-2*Fo)*T(i,p-1);
end
end
end
T_i=T';

답변 (0개)

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by