FLUENT UDF应用实例:传热热问题第二第三类热边界条件转换成第一类边界条件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FLUENT UDF 应用实例:传热问题第二第三类热边界条件转
换成第一类边界条件
1 引言
传热问题的常见边界条件可归纳为三类,以稳态传热为例,三类边界条件的表达式如下。
恒温边界(第一类边界条件):const w T = (1-1)
恒热流密度边界(第二类边界条件):const w T n λ∂⎛⎫-= ⎪∂⎝⎭ (1-2)
对流换热边界(第三类边界条件):()w f w
T h T T n λ∂⎛⎫
-=- ⎪∂⎝⎭ (1-3)
2 问题分析
2.1 纯导热问题
以二维稳态无源纯导热问题为例,如图1所示,一个10×10m 2的方形平面空间,上下面以及左边为恒温壁面(21℃),右边第二类、第三类边界条件如图所示。为方便问题分析,内部介质的导热系数取1W/m ℃。模型水平垂直方向各划分40个网格单元,不计边界条件处壁厚。
图1 问题描述
采用FLUENT 软件自带边界条件直接进行计算,结果如图2所示。
(a )第二类边界条件
(b )第三类边界条件 图2 软件自带边界计算结果
参考数值传热学[3],对于第二类(式1-2)、第三类(式1-3)边界条件可
通过补充边界点代数方程的方法进行处理,结果如下。 第二类边界条件:11M M q T T δ
λ
-=+
(2-1)
第三类边界条件:11/1M M f
h h T T T δδ
λλ-⎛
⎫⎛⎫
=++
⎪ ⎪⎝
⎭⎝
⎭
(2-2) 其中,T M 为边界节点处的温度(所求值),T M-1为靠近边界第一层网格节点处的温度,δ为靠近边界第一层网格节点至边界的法向距离,q 为热流密度,h 为对流换热系数。
将以上两式通过UDF 编写成边界条件(DEFINE_PROFILE ),全部转换为第一类边界条件,计算结果如图3所示。
(a)第二类边界条件
(b)第三类边界条件
图3 UDF计算结果
可以看出,经过UDF边界转换后的计算结果与软件自带边界计算结果几
乎完全相同。
2.2对流换热问题
以上处理方式对于导热问题肯定是适用的,但是对于对流换热问题能否用同样的方式处理呢,笔者认为,严格意义上讲式2-1和2-2对与对流换热问题是不能用的,因为边界内侧的流体与壁面的换热机制是对流换热。但是,当第一层网格重心距离边界很近时,该位置流体的流速很小,无限接近边界时流速应该为零。因此只要第一层网格重心足够靠近边界,换热机制用导热来处理应该是没有问题的。为此,建立图4所示的计算模型,尺寸、网格、介质同上,此时首层网格重心与边界的法向距离为0.125m。
图4 问题描述
采用FLUENT软件自带边界条件直接进行计算,结果如图5所示。
(a)第二类边界条件
(b)第三类边界条件
图5 软件自带边界计算结果
采用UDF将第二类、第三类边界条件转换成第一类边界条件计算结果如图6所示。
(a)第二类边界条件
(b)第三类边界条件
图6 UDF计算结果
对比可知,首层网格重心与边界的法向距离为0.125m时,UDF计算结果与软件自带边界条件计算结果差距较大。因此,对壁面处网格进行细化如图7所示,此时首层网格重心与边界的法向距离为0.0625m,重新计算,结果如图8、图9所示。可以看出,细化网格后,经过UDF边界转换后的计算结果与软件自带边界计算结果几乎完全相同。说明在该厚度内,导热成为传热的主导机制,对流换热几乎可以忽略了,对于不同的问题,这个厚度到底达到多少也不确定,但是可以确定的是至少需要在边界层内,越靠近壁面,这种处理越准确。继续进行细化,两者的计算结果同样几乎一致。
图7 壁面网格细化
(a)第二类边界条件
(b)第三类边界条件
图8 软件自带边界条件计算结果
(a)第二类边界条件
(b)第三类边界条件
图9 UDF计算结果
3总结
换热问题的第二类、第三类边界条件都可以同UDF转换成第一类边界条件进行计算,但是边界处网格需进行细化,特别对于对流换热问题,首层网格重心与边界的法向距离至少要在边界层范围内,距离越小,转换计算的准确性越高。参考文献:
[1]FLUENT帮助文档
[2]杨世铭,陶文铨.传热学(第4版)[M].北京:高等教育出版社
[3]陶文铨.数值传热学[M].西安:西安交通大学出版社
附录UDF代码
#include "udf.h"
#include "prop.h"
#include "mem.h"
DEFINE_SOURCE(uds_source,c,t,dS,eqn)
{
double source=10;
dS[eqn]=0;
return source;
}
DEFINE_PROFILE(MyProfile2,thread,index)
{
double q=10.0;
double T;
face_t f;
cell_t c0;
Thread *t0;
cell_t c;
double thickness;
double thick;
double x[ND_ND];
double x0[ND_ND];
double NV_VEC(a);
double NV_VEC(A);
double cosphi;
begin_f_loop(f,thread)
{
t0=THREAD_T0(thread); //获取边界邻近网格的线c0=F_C0(f,thread); //获取边界邻近网格单元的ID