传热学数值计算大作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

传热学数值计算大作业

一选题

《传热学》第四版P179页例题 4-3

二相关数据及计算方法

1.厚2δ=0.06m的无限大平板受对称冷却,故按一半厚度作为模型进行计算

2. δ=0.03m,初始温度t0=100℃,流体温度t∞=0℃;

λ=40W/(m.K),h=1000W/(m2.K),Bi=h*△x/λ=0.25;

3.设定Fo=0.25和Fo=1两种情况通过C语言编程(源程序文件见附件)进行数值分析计算;

当Fo=0.25时,Fo<1/(2*(1+Bi)),理论上出现正确的计算结果;

当Fo=1时,Fo>1/(2*(1+Bi)),Fo>0.5,理论上温度分布出现振荡,与实际情况不符。

三网格划分

将无限大平面的一半划分为6个控制体,共7个节点。

△x=0.03/N=0.03/6=0.005,即空间步长为0.005m

四节点离散方程

绝热边界节点即i=1时,t i j+1=2Fo△t i+1j+(1-2Fo△)t i j

内部节点即0

t i j+1= t i j(1-2Fo△Bo△-2Fo△)+2 Fo△t i-1j+2 Fo△Bo△t f

五温度分布线图(origin)

六结果分析

1 空间步长,时间步长对温度分布的影响

空间步长和时间步长决定了Bo和Fo,两者越小计算结果越精确,但同时计算所需的时间就越长。

2 Fo数的大小对计算结果的影响

编程时对Fo=1及0.25的情况分别进行了计算,发现当Fo=1时,各点温度随时间发生振荡,某点的温度高反而会使下一时刻的温度变低,违反了热力学第二定律,因此在计算中对Fo的选取有限制。为了保证各项前的系数均为正值,对于内节点,Fo>0.5;对于对流边界节点,Fo<1/(2*(1+Bi))。

3 备注

在Fo=0.25时,为了反映较长时间后温度的分布,取T=600,并选取了其中部分时刻的温度输出进行画图。图像显示,随着时间的增长,各点温度趋向一致。

而当Fo=1时由于结果会出现振荡,只取T=6观察即可。

附录1 C语言源程序

当步长为0.005,Fo=1的程序

#include

#include

void main()

{

int N=6;/*网格划分后计算区域共N个控制体*/

int T=6;/*共计算0~T时刻的温度变化*/

float t[7][7],c[7][7];/*将节点和时间对应构成二维数组*/

/*参数设定*/

int i,j,tf,r,h,min;

float Bi,x,Fo;

Fo=1;

x=0.03/N;

tf=0;/*边界对流换热温度为0摄氏度*/

r=40;

h=1000;

Bi=h*x/r;

/*0时刻温度均为100摄氏度,即对各点设定初值*/

for(i=0;i<=N;i++)

t[i][0]=100;

/*对T>0时刻各节点的温度进行计算*/

for(j=0;j

{ for(i=0;i<=N;i++)

c[i][j]=t[i][j];

min=1;

while(min>0.00001)

{

for(i=0;i<=N;i++)

{ if(i==0)

t[i][j+1]=2*Fo*t[i+1][j]+(1-2*Fo)*t[i][j];/*绝热边界离散方程*/

else if ((i!=0)&&(i!=N))

t[i][j+1]=Fo*(t[i+1][j]+t[i-1][j])+(1-2*Fo)*t[i][j];/*中间所有节点的离散方程*/

else if (i==N) t[i][j+1]=t[i][j]*(1-2*Fo*Bi-2*Fo)+2*Fo*t[i-1][j]+2*Fo*Bi*tf;/*对流换热边界节点的离散方程*/

}

min=0;

for(i=0;i<=N;i++)

min=min+abs(t[i][j]-c[i][j]);

min=min/(N+1);

}

}

/*输出各时刻相应节点的温度值*/

printf("\n当步长为0.005,Fo=1,0~6时刻,间隔1个时间步长时计算的温度分布为:\n"); int n=0;

for(j=T;j>=0;j--)

for(i=0;i<=N;i++)

{

printf("%7.2f ",t[i][j]);

n=n+1;

if(n==(N+1))

{

printf("\n");

n=0;

}

}

getchar();

}

当步长为0.005,Fo=0.25的程序

#include

#include

void main()

{

int N=6;/*网格划分后计算区域共N个控制体*/

int T=600;/*共计算0~T时刻的温度变化*/

float t[7][601],c[7][601];/*将节点和时间对应构成二维数组*/

/*参数设定*/

int i,j,tf,r,h,min;

float Bi,x,Fo;

Fo=0.25;

x=0.03/N;

tf=0;/*边界对流换热温度为0摄氏度*/

r=40;

h=1000;

Bi=h*x/r;

/*0时刻温度均为100摄氏度,即对各点设定初值*/

for(i=0;i<=N;i++)

t[i][0]=100;

/*对T>0时刻各节点的温度进行计算*/

for(j=0;j

{ for(i=0;i<=N;i++)

c[i][j]=t[i][j];

min=1;

while(min>0.00001)

{

for(i=0;i<=N;i++)

{ if(i==0)

t[i][j+1]=2*Fo*t[i+1][j]+(1-2*Fo)*t[i][j];/*绝热边界离散方程*/

else if ((i!=0)&&(i!=N))

t[i][j+1]=Fo*(t[i+1][j]+t[i-1][j])+(1-2*Fo)*t[i][j];/*中间所有节点的离散方程*/

相关文档
最新文档