正文共:2248 字 4 图 预计阅读时间: 6 分钟
1 前言
太阳能热水器在很多太阳能资源丰富的地区相当常见,笔者老家楼顶就有一台太阳能热水器。在一些大型建筑中,可能是多台设备串并联在一起。对于串联的模块,一台热水器的出口接到另一台的入口。假设不考虑接管的热损失,那么上一台设备的出口温度就可以作为下一台设备的入口温度边界。如果用FLUENT来仿真串联模块的总温升该如何处理,笔者暂时想到两种方法,读者可以自行思考其他的方法。第一种是将出口的平均温度求解出来,然后作为温度边界施加到入口(由于不考虑接管热损失,因此管道不建模),计算资源富足的话可以将所有设备都建模,通过UDF进行边界条件引用,需注意的是这是一种近似方法,实际上出口截面的温度分布不是均匀的,因此会有一定的误差。第二种是将出口的温度分布导出到profile文件,然后读取到入口,与前一种相比,第二种方法误差相对小一些,它还原了截面各点的温度分布情况。但是建模的时候需注意入口和出口的坐标位置需对应,这样profile里面的数据才可以在面上插值。本案例将对第一种方法进行简化演示,供读者在实际工程应用中参考。
2 问题描述
建立如下的二维平面模型,三台设备串联,设备尺寸500×200mm,管道大小20mm,入口长50mm,出口长100mm,各个加热面的总功率为480W,热流密度1000W/m2。管道的流速均为1m/s,介质为空气,入口1的温度为300K,求出口的温度(暂不考虑热损失)。
图1 管道设备模型
3 计算结果
各个设备的温度分布如下图,可以看出,沿空气流动方向,设备的整体温度逐渐上升,符合实际情况。
图2 温度分布
各个设备的速度分布如下图,由于各个设备的速度边界是一致的,因此速度分布是一样的。
图3 速度分布
我们读取各个出入口的面积加权平均温度,如下表。可以看到,各个相连的出入口温度近似相等,这里的误差我们先不深入分析了。经过三个设备加热后,空气的温升58.92K。本案例未考虑热损失,因此我们也可以通过Q=cmΔT手动计算。空气比热1006.43j/kgK,密度1.225kg/m3,因此质量流量为0.0245kg/s(也可以在FLUENT中直接读取),总加热功率Q为1440W,因此ΔT=58.40K,与FLUENT计算结果近似相等。
表1 出入口平均温度汇总
计算源文件地址:
链接:
https://pan.baidu.com/s/1oPqBS4_DxXs91zmngN_QzQ
提取码:01pv
附录 本案例用到的UDF代码及简要解释
#include "udf.h"
#include "prop.h"
int id_outlet01=12;/*第一个出口ID*/
int id_outlet02=22;/*第二个出口ID*/
real avg_temp01=299;/*第一个出口初始温度*/
real avg_temp02=299;/*第二个出口初始温度*/
real NV_VEC(A1); /*定义第一个出口面积矢量*/
real NV_VEC(A2); /*定义第二个出口面积矢量*/
Thread *thread_out01;/*定义第一个出口面索引*/
Thread *thread_out02;/*定义第二个出口面索引*/
face_t f;
Domain *domain;
real sum_T01=0.0; /*温度计算中间量初始化*/
real sum_A01=0.0; /*面积计算中间量初始化*/
real sum_T02=0.0;
real sum_A02=0.0;
DEFINE_ADJUST(myadjust,d) /*函数用于每一步迭代进行调整*/
{
domain=Get_Domain(1); /*指向区域的指针,可访问mesh里面的所有单元和面索引*/
thread_out01=Lookup_Thread(domain,id_outlet01); /*获取出口01的ID*/
thread_out02=Lookup_Thread(domain,id_outlet02); /*获取出口02的ID*/
begin_f_loop(f,thread_out01)
{
F_AREA(A1,f,thread_out01);
sum_A01+=NV_MAG(A1);
sum_T01+=NV_MAG(A1)*F_T(f,thread_out01);
}
end_f_loop(f,thread_out01) /*计算出口01平均温度*/
begin_f_loop(f,thread_out02)
{
F_AREA(A2,f,thread_out02);
sum_A02+=NV_MAG(A2);
sum_T02+=NV_MAG(A2)*F_T(f,thread_out02);
}
end_f_loop(f,thread_out02) /*计算出口02平均温度*/
avg_temp01=sum_T01/sum_A01; /*出口01平均温度*/
avg_temp02=sum_T02/sum_A02; /*出口02平均温度*/
}
DEFINE_PROFILE(inlet02,thread,index)
{
begin_f_loop(f,thread)
{
F_PROFILE(f,thread,index)=avg_temp01; /*入口02温度边界设置为出口01的平均温度*/
end_f_loop(f,thread)
}
}
DEFINE_PROFILE(inlet03,thread,index)
{
begin_f_loop(f,thread)
{
F_PROFILE(f,thread,index)=avg_temp02; /*入口03温度边界设置为出口02的平均温度*/
end_f_loop(f,thread)
}
}