资源描述
一、任务分析
阅读4-21题干,确定本题可视为无限大平板非稳态传热问题解决。根据教材4.4关于非稳态传热数值解法的内容,将墙壁剖面划分为(N-1)个部分,共有N个节点。将内壁侧视为左边界(left),外壁侧视作右边界(right),建立方程如下:
对于内壁边界节点,即n=0处:
对于外壁边界节点,即n=N处:
对于中间的节点,即0<n<N处:
其中,,
,因内壁外壁的h值不同,故加上"l""r"脚标加以区分。
、分别为室内室外空气温度。
二、编程实践
结合上述方程和C++的相关知识,决定将计算温度值存储在一个二维数组中,编译程序代码如下,其中,n代表空间节点序号,k代表时间节点序号。
#include <iostream>
#include <cmath>
using namespace std;
const int n=3;
const int k=24;
double dt=3600;//时间步长
double dr=0.24/(n-1);//空间步长
double Fo=0.81/1800/880*dt/dr/dr;
double Bil=6*dr/0.81;
double Bir=10*dr/0.81;
int tl=15;//内壁边界条件
double tr[24]={-5.9,-6.2,-6.6,-6.7,-6.8,-6.9,-7.2,-7.7,-7.6,-7,-4.9,-2.3,-1,-2.4,1.8,1.8,1.6,0.5,-1.6,-2.8,-3.5,-4.3,-4.8,-5.3};//外壁边界条件
void heat(double a[n][k])
{ for (int j=0;j<k;j++)
{for (int i=0;i<n;i++)
{if (j==0)
{if(i==0) {a[0][0]=a[0][23]*(1-Fo*Bil-2*Fo)+2*Fo*a[1][23]+2*Fo*Bil*tl;}
else if(i<n-1) {a[i][0]=Fo*(a[i+1][23]+a[i-1][23])+(1-2*Fo)*a[i][23];}
else {a[n-1][0]=a[n-1][23]*(1-2*Fo*Bir-2*Fo)+2*Fo*a[n-2][23]+2*Fo*Bir*tr[0];}
cout<<a[i][j]<<" ";}
else
{if(i==0) {a[0][j]=a[0][j-1]*(1-Fo*Bil-2*Fo)+2*Fo*a[1][j-1]+2*Fo*Bil*tl;}
else if(i<n-1) {a[i][j]=Fo*(a[i+1][j-1]+a[i-1][j-1])+(1-2*Fo)*a[i][j-1];}
else {a[n-1][j]=a[n-1][j-1]*(1-2*Fo*Bir-2*Fo)+2*Fo*a[n-2][j-1]+2*Fo*Bir*tr[j];}
cout<<a[i][j]<<" ";}}
cout<<endl;}
}
int main()
{
double t[n][k];
for (int i=0;i<n;i++)
{for (int j=0;j<k;j++)
{t[i][j]=5; }}//初始温度
bool select=true;
char x;
while(select=true)
{heat(t);
cout<<endl;
cout<<"do you want to continue?(Y/N)";
cin>>x;
if (x='Y') select=true;
else select =false;}
cout<<endl;
return 0;
}
将n值定为5,发现结果发散。定为4则无法取到要求的墙壁中心处温度,故最终将n定为3。运行程序后界面如下:
三、计算结果
将初始温度定为5(随后改变初始温度发现最终结果不变),计算8次后得到稳定值如下:
时刻/h
内壁温度/℃
墙壁中心处温度/℃
外壁温度/℃
0
14.9454
8.05337
-0.003344434
1
14.894
7.90447
-0.290607
2
14.8235
7.75035
-0.585195
3
14.7356
7.58896
-0.770161
4
14.6455
7.43447
-0.916915
5
14.5466
7.28868
-1.04794
6
14.4469
7.15078
-1.24674
7
14.3488
7.00998
-1.54407
8
14.251
6.85463
-1.65087
9
14.1495
6.71283
-1.50235
10
14.0493
6.61331
-0.688867
11
13.9606
6.63041
0.567888
12
13.9091
6.79247
1.52407
13
13.918
7.02875
1.38471
14
13.984
7.18794
2.9851
15
14.0664
7.51946
3.61079
16
14.2031
7.85674
3.8485
17
14.3756
8.15565
3.60496
18
14.5607
8.36904
2.79691
19
14.7321
8.44825
2.10156
20
14.8604
8.44022
1.60249
21
14.9393
8.38684
1.11498
22
14.9754
8.29487
0.7333741
23
14.9747
8.1823
0.381477
作出图线如下:
五、心得体会
通过这次数值计算大作业,通过使用C++我了解到了电脑编程语言编写程序解决实际问题的便捷性,这是之前在单纯学习C++理论,而不是解决实际问题中不能体会到的。同时也对传热问题的复杂性有了一定程度的认识,传热问题并不都是平时做作业那样的理想化模型情况的,实际中的问题要更为复杂。就这次数值计算作业来说,也是比较简单的,在传热学方面我还有很多需要学习的知识。
展开阅读全文