24小时热门版块排行榜    

查看: 317  |  回复: 0
当前主题已经存档。

wangqian511

铁虫 (小有名气)

[交流] 【求助】渴求解释一段程序,求温度场的,感谢大虾

有一段程序请求给点解释,谢谢了
CODE:
%Temperature distribution in a rod
%See example 9
%Discretization method: Finite difference
% Solution method: SOR
clear all;
a=[];b=[];c=[];d=[];x=[];T=[];analytical=[];
nn = input('Number of increment = ')
n = nn+1;% number of  grid points   网格划分个数
L = 0.6;%                   棒的长度
dx = L/nn; % size of increment  微元数目
Qprim = 50000; % heat source   热源
lambda = 20; % thermal conductivity 导热系数
for k = 1:n % Set coefficients   设定系数
   a(k)=2.0;
   b(k)=1.0;
   c(k)=1.0;
   d(k)=Qprim*dx^2/lambda;
   T(k) = 30.0; % start value 初始温度
   x(k) = (k-1)*dx;  %   开始长度 位移
end; %
a(1) = 3;
b(1) = 4;
c(1) = 0;
% Solver SOR if omega = 1 Gauss-Siedel
omega=2/(1+sin(pi/nn));
counter = 0;
maxit = 200;
sumres = 1.;
maxres = 1.0e-5;
while ((sumres > maxres)&(counter < maxit) )
   for k = 2:n-1 % SOR
      T(k)=omega*(b(k)*T(k+1)+c(k)*T(k-1)+d(k))/a(k)+(1-omega)*T(k);
   end; % SOR
   d(1) =-T(3);
   T(1)=(b(1)*T(2)+d(1))/a(1);% Insulated end
   sumres = 0.0
   for k = 2:n-1 % residual
      res=abs(a(k)*T(k)-(b(k)*T(k+1)+c(k)*T(k-1)+d(k)));
      sumres = sumres+res;
   end % residual
   summa = sumres
   counter = counter +1 % counts number of iterations   
end; %while   
%Analytical solution
for k = 1:n
   analytical(k)=Qprim*(L^2-x(k)^2)/(lambda*2)+T(n);
end;
% Plot
hold on;
plot(x,T,'*');
plot(x,analytical,'o');
hold off;
legend('Numerical','Analytical',0);
title('Temperature distribution');

[ Last edited by wangqian511 on 2010-4-18 at 10:47 ]
回复此楼
且看那前方黑洞洞,定是贼人巢穴,且待我上前去,杀他个干干净净!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangqian511 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见