2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 用Matlab求解一维非稳态导热问题(有限差分法+显式离散)

用Matlab求解一维非稳态导热问题(有限差分法+显式离散)

时间:2024-01-09 23:35:09

相关推荐

用Matlab求解一维非稳态导热问题(有限差分法+显式离散)

章熙民的第六版《传热学》里,较为简单的介绍了非稳态导热的数值计算,本文根据此书,以计算一个可视为无限大平壁的复合墙体传热过程为例,讨论一维非稳态导热问题数值求解的问题。

这里把参考书目的PDF分享出来,希望可以帮助到大家学习传热学,里面有章熙民的第六版《传热学》和陶文铨的第二版《数值传热学》。

链接:/s/1vQFmnWrVXH-SKTTbPJhzZg

提取码:bxgr

一、问题描述与分析

初始条件:一个由四层材料构成的墙体(可视为无限大平壁),已知材料热工性质如下,该墙体的内表面换热系数为8.7W/(m^2*K),外表面换热系数为23W/(m^2*K),室内温度为20℃恒定不变,室外温度随昼夜变化。

现给出一星期的室外温度数据(每小时),求墙体内部温度场。

问题分析

在《传热学》第四章第三节中,对什么是非稳态导热的给出了如下解释:

因此根据上述场景将该问题提炼为:一个两边是第三类边界条件的无限大平壁的一维非稳态导热问题。

二、节点方程式

在这里用的是有限差分法,节点方程式离散格式用的是显示离散格式(求解上更为简单,但是对步长要求较为严苛),数值求解过程参考章熙民《传热学》的第四章第三节。

内部节点方程式:

稳定条件:

边界节点方程式(第三类边界条件):

稳定条件:

网格划分

在经过多次试验之后,将该墙体按间距3mm划分为132层,取时间步长为1s,此时满足稳定条件。由于这里是复合墙体,因此后续计算时也要注意节点的热物性参数会相应改变。

初始温度场设置

还有一个问题是墙体的初始温度场,显式离散格式的逻辑就是从初始温度出发逐个计算出各个时刻的温度。这里没有给,所以就用初始温度条件(室内20℃,室外-25.4℃)计算这一条件下的稳态温度。(注,其实根据周期性导热的规律,只要模拟的时间足够长,初始条件是什么并不重要,到最后墙体内部温度场都会是一个从外到内的、具有衰减性延时性的周期性温度波,这里将它的初始温度设置成这样是为了缩短模拟时长,让图像更好看)。复合平壁的稳态导热问题求解可以参考章熙民《传热学》的第二章第二节。

根据上式求得墙体内初始温度场。

三、在Matlab中求解

在完成上述工作之后,便可以在Matlab中求解了。(注意室外温度outdoor_air和初始温度场wall都是自定义数组,运行本代码前需要在matlab里自己添加并定义这两个变量,我这里使用的值都在前面列出来了)。

clc;clf;format short e;global N delta_x delta_t TN;h1 = 8.7; %墙体内表面传热系数 W/(m^2*K)h4 = 23; %墙体外表面传热系数 W/(m^2*K)D = 0.332; %墙体厚度/mN = 124; %厚度划分数目delta_x = 0.003; %划分间距/mdelta_t = 1; %时间步长/sday = 7; %计算天数TN = 3600*24*day; %计算时间节点数目Tn = 20; %室内温度T = zeros(TN,N+1); %预设数组大小Tf = zeros(1,TN);%设置室外空气温度 这一步是因为给的是每小时的温度 换成每秒均等增加的温度值for hour = 1:24*day %取值范围%将第hour小时和hour+1小时的温度等间距分成3600个%自定义数组outdoor_air为室外温度temp = linspace(outdoor_air(hour),outdoor_air(hour+1),3600); for t = 1:3600Tf(3600*(hour-1)+t) = temp(t);%每秒均匀变化的温度endend%设置初始墙体内温度for I = 1:N+1%自定义数组wall为墙体初始温度T(1,I) = wall(I);end%第一层:石膏板a1 = 3.265e-7; %热扩散率 m^2/slamb1 = 0.36; %热导率 W/(m*K)Fo1 = a1*delta_t/(delta_x)^2;Bi1 = h1*delta_x/lamb1;c1 = Fo1 - 1/(2*Bi1+2);%第二层:钢筋混凝土a2 = 8.870e-7; %热扩散率 m^2/slamb2 = 2.04; %热导率 W/(m*K)Fo2 = a2*delta_t/(delta_x)^2;%第三层:聚苯乙烯泡沫板a3 = 1.667e-6; %热扩散率 m^2/slamb3 = 0.046; %热导率 W/(m*K)Fo3 = a3*delta_t/(delta_x)^2;%第四层:陶瓷红砖a4 = 4.419e-7; %热扩散率 m^2/slamb4 = 0.7; %热导率 W/(m*K)Fo4 = a4*delta_t/(delta_x)^2;Bi4 = h4*delta_x/lamb4;c4 = Fo4 - 1/(2*Bi4+2);while (Fo1>0.5 || Fo2>0.5 || Fo3>0.5 || Fo4>0.5 || c4>0 || c1>0)error('无法收敛');end

上述代码为第一部分,主要是定义参数,设置初始条件,判断选择的步长是否满足稳定性条件。

for t = 1:TNfor i = 1:N+1if i == 1T(t+1,i) = 2*Fo1*(T(t,i+1) + Bi1*Tn) + (1 - 2*Bi1*Fo1 - 2*Fo1)*T(t,i);endif (i>=2 && i<= 5)T(t+1,i) = Fo1*(T(t,i-1) + T(t,i+1)) + (1 - 2*Fo1)*T(t,i);endif (i>=6 && i<= 45)T(t+1,i) = Fo2*(T(t,i-1) + T(t,i+1)) + (1 - 2*Fo2)*T(t,i);endif (i>=46 && i<= 85)T(t+1,i) = Fo3*(T(t,i-1) + T(t,i+1)) + (1 - 2*Fo3)*T(t,i);endif (i>=86 && i<= 124)T(t+1,i) = Fo4*(T(t,i-1) + T(t,i+1)) + (1 - 2*Fo4)*T(t,i);endif i == N+1T(t+1,i) = 2*Fo4*(T(t,i-1) + Bi4*Tf(t)) + (1 - 2*Bi4*Fo4 - 2*Fo4)*T(t,i);%这里给了室外空气温度Tf一个时间函数关系endendend

上述为第二部分,就是计算显式离散节点方程了,没有什么好说的,就用了最简单的迭代法,甚至不需要求解方程组,唯一需要注意的就是由于是复合平壁,各个材料层的节点方程式使用的参数不一样。

X = zeros(1,24*day*2);Y = zeros(1,N+1);TT = zeros(24*day*2,N+1);J = 1;for I = 1:24*day*2X(I) = 1800*I; %30分钟一个数for J = 1:N+1Y(J) = J;TT(I,J) = T(X(I),Y(J));endendfigure(1)hold on;% Make a contour with the presence of isolines & texts[XX,YY] = meshgrid(Y,X);surfc(YY,XX,TT)xlabel('Time - AXIS')ylabel('Thickness - AXIS')zlabel('T (^{\circ}C)')title(colorbar,'^{\circ}C')

上述代码为第三部分,画图,半个小时取一个数,因为一秒钟一个温度数太多了没有必要,图形会变黑。

最后呈现出来的温度-时间-节点的图形就是这样:

以上为本人对这个问题的数值求解,可能还有不正确的地方,欢迎指点。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。