传热学数值计算大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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];/*中间所有节点的离散方程*/