球面坐标边界条件实现的传热

时间:2013-08-29 14:10:16

标签: r matlab geometry boundary heat

我想对半球应用热传导(热传导和对流)。它是球坐标系中的瞬态均匀传热。没有发热。半球的边界条件在Tinitial = 20度室温开始。外环境温度为-22度。你可以想象半球是一种坚固的材料。此外,它是一种非线性模型,因为材料在冷冻后导热性会发生变化,这会改变温度曲线。

我希望在一定时间内找到该固体的温度曲线,直到中心温度达到-22度。

在这种情况下,温度取决于3个参数:T(r,theta,t)。半径,角度和时间。

1 /α(∂T(r,θ,t))/∂t= 1 / r ^ 2 *∂/∂r(r ^ 2(∂T(r,θ,t))/∂r) + 1 /(r ^ 2 *sinθ)∂/∂θ(sinθ(∂T(r,θ,t))/∂θ)

我使用matlab应用了有限差分法,但边界条件存在问题。在半球的表面上存在对流,并且在内部节点中的传导,半球的底部具有恒定的温度,即空气温度(-22)。你可以在matlab文件中看到我用于BC的脚本。

% Temperature at surface of hemisphere solid boundary node

  for i=nodes
       for j=1:1:(nodes-1) 

Qcd_ot(i,j)=   ((k(i,j)+ k(i-1,j))/2)*A(i-1,j)*(( Told(i,j)-Told(i-1,j))/dr);         % heat conduction out of node

Qcv(i,j) =   h*(Tair-Told(i,j))*A(i,j); % heat transfer through convectioin on surface

Tnew(i,j)         =   ((Qcv(i,j)-Qcd_ot(i,j))/(mass(i,j)*cp(i,j))/2)*dt + Told(i,j);

      end       % end of for loop
     end

   % Temperature at inner nodes

   for i=2:1:(nodes-1)     
      for j=2:1:(nodes-1)  


 Qcd_in(i,j)=   ((k(i,j)+ k(i+1,j))/2)*A(i,j) *((2/R)*(( Told(i+1,j)-Told(i,j))/(2*dr)) + ((Told(i+1,j)-2*Told(i,j)+Told(i-1,j))/(dr^2)) + ((cot(y)/(R^2))*((Told(i,j+1)-Told(i,j-1))/(2*dy))) + (1/(R^2))*(Told(i,j+1)-2*Told(i,j)+ Told(i,j-1))/(dy^2));

 Qcd_out(i,j)=  ((k(i,j)+ k(i-1,j))/2)*A(i-1,j)*((2/R)*(( Told(i,j)-Told(i-1,j))/(2*dr)) +((Told(i+1,j)-2*Told(i,j)+Told(i-1,j))/(dr^2)) + ((cot(y)/(R^2))*((Told(i,j+1)-Told(i,j-1))/(2*dy))) + (1/(R^2))*(Told(i,j+1)-2*Told(i,j)+ Told(i,j-1))/(dy^2));


 Tnew(i,j)     =   ((Qcd_in(i,j)-Qcd_out(i,j))/(mass(i,j)*cp(i,j)))*dt + Told(i,j);



    end            %end  for loop
end                % end  for loop


   %Temperature for at center line nodes
  for i=2:1:(nodes-1)
      for j=1

     Qcd_line(i,j)=((k(i,j)+ k(i+1,j))/2)*A(i,j)*(Told(i+1,j)-Told(i,j))/dr;

     Qcd_lineout(i,j)=((k(i,j)+ k(i-1,j))/2)*A(i-1,j)*(Told(i,j)-Told(i-1,j))/dr;

     Tnew(i,j)= ((Qcd_line(i,j)-Qcd_lineout(i,j))/(mass(i,j)*cp(i,j)))*dt + Told(i,j);

      end 
 end


    % Temperature at bottom point (center) of the hemisphere solid
    for i=1
        for j=1:1:(nodes-1)

       Qcd_center(i,j)=(((k(i,j)+k(i+1,j))/2)*A(i,j)*(Told(i+1,j)-Tair)/dr);


       Tnew(i,j)= ((Qcd_center(i,j))/(mass(i,j)*cp(i,j)))*dt + Told(i,j);

      end
  end

   % Temperature at all bottom points of the hemisphere

     Tnew(:,nodes)=-22;


    Told=Tnew;

    t=t+dt;

在程序运行后,新的温度值会以指数方式变大,然后变为NaN。它应该向我展示固体的冷却和冷冻温度曲线,直到达到Tair温度。我无法弄清楚它为什么会这样改变的原因。

我想听听您对此计划实施BC的建议,或者我应该如何根据这些条件进行更改。在此先感谢!!

1 个答案:

答案 0 :(得分:1)

您的代码太长,无法完全阅读和理解,但看起来您使用的是简单的forward Euler方案,这是正确的吗?如果是这样,请尝试减少时间步dt,可能需要很多,因为如果dt太大,此方法可能会在数字unstable内变为alternatives methods。这可能会降低计算速度(再次大幅降低),但这是您为这种简单算法付出的代价。有{{3}}没有不稳定性,但它们更难实现,因为你需要解决一个方程组。

很久以前,我使用这个简单的方案进行了一些热模拟。我发现稳定性标准为dt < (dx)^2 * c_p * rho / (6 * k),这对于3D笛卡尔网格上的模拟应该是有效的,其中dx是空间步,c_p是比热,{{1密度和rho材料的导热系数。我不知道如何用球坐标将其转换为你的情况。我学到的东西是选择较小的时间步长,但更重要的是选择尽可能大的k:当你将dx减少2倍时,你还需要减少dx保持稳定的因素4。同时,对于3D问题,元素数量将增加8倍。因此总模拟时间与dt成比例!!!