我刚刚开始使用udf还不是很熟练,我做的是一个灭弧室的模型,考虑到栅片的吸热过程。
http://![\"在fluent里面的udf中profile宏考虑传热模块怎么写udf程序\"]()
我描述一下:就是灭弧室右端是出气口,中间有5个栅片(铁),其余部分是空气。在在此模型中考虑栅片从空气中吸热,使栅片的温度提高,但是我还需要考虑栅片的热导率和比热随温度的变化(这些我在udf中已经完成),但是导师还希望我考虑栅片表面的蒸发潜热。我查看了蒸发潜热的工具书,它和栅片表面的温度有关,
在T温度下,则单位时间单位面积上带走的热量为:Q=[4.0117*(10^25)*(10^((13.27-19710/T)*T^(-1.27)]/(T^0.5)
但是我在以往看udf里面编写profile宏的时候,都是直接定义边界压强或者温度等于常数,而我觉得我的问题比较特殊,因为它是一个根据边界温度来改变能量的一个过程。
而且因为热量的空气栅片的传热过程默认的是couple设置,我也觉得不好改能量传递的边界,所以我很困惑。
我现在不了解的有这么几个问题:
问题1:我看以前一些人发的profile宏的程序中肯定有:
begin_f_loop(f,thread_solid)
{
tem_solid=F_UDMI(f,t,0);
F_PROFILE(f,thread_solid)=.....
}
end_f_loop(f,thread_solid)
}
我想知道这个F_PROFILE究竟是如何判断它是设置的压力值还是温度值。(因为按照我的想法我得设置成能量值)
问题2:上面的程序那些帖子里面解释说:设置边界温度为多少多少。但是在我的模型里面有很多的边界:栅片与空气的接触边界、右端出气口边界以及其他三个边的密闭边界。我不知道怎么写udf的profile宏程序才能找到我需要的那个“栅片与空气的接触边界”,再对它进行设置。
下面是我参考了以前几个帖子里面的程序进行的修改:但是加载进去总是出错,我不知道是c语言编译的问题,还是我设置的思想方法不对,希望小木虫里面做过有关传热仿真的朋友能够指导一下,谢谢啦!
下面的我修改的程序:
程序1:
#include "udf.h"
DEFINE_PROFILE(hnt_temperature,thread)
{
face_t f;
real tem_solid;
Thread *thread_gas=Lookup_Thread(domain,8); /*8是交界面流体侧面的id*/;
Thread *thread_solid=Lookup_Thread(domain,7); /*7是交界面固体侧面的id*/;
pvl=133.33*pow(10,(-19710/F_T(f,thread)))*pow(10,13.27)*pow(F_T(f,thread),-1.27); /* the unit is Pa */
begin_f_loop(f,thread_solid)
{
tem_solid=F_UDMI(f,t,0);
F_PROFILE(f,thread_solid)=-He*(3.00882e23)*pvl/pow(F_T(f,thread),0.5); /*液态条件下蒸发带走的热量 */;
}
end_f_loop(f,thread_solid)
}
//程序1我觉得可以定位到我想要的栅片与气体接触的边界,但是还是显示函数有错误,我不知道是方法问题还是C语言上面的语言错误//
程序2 :
#include "udf.h"
DEFINE_PROFILE(Plate_vapour,thread,position)
{
real He=5.1e-19; /* evaporation heat of an atom for copper material */
real x[ND_ND],xx,yy,pvs,pvl,pv,Fev;
face_t f;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
yy=x[1];
xx=x[0];
pvl=133.33*pow(10,(-19710/F_T(f,thread)))*pow(10,13.27)*pow(F_T(f,thread),-1.27); /* the unit is Pa */
if(((yy=0.008)||(yy=0.010)||(yy=0.012)||(yy=0.014)||(yy=0.016)||yy=0.018)||(yy=0.020)||(yy=0.022)||(yy=0.024)||(yy=0.026))&&(0.34<=xx<=0.46))
{
F_PROFILE(f,thread,position)=-He*(3.00882e23)*pvl/pow(F_T(f,thread),0.5); /*蒸发带走的热量 */
}
else if((xx=0.0034)||(xx=0.0046))&&((0.008<=yy<=0.010)||(0.012<=yy<=0.014)||(0.016<=yy<=0.018)||(0.020<=yy<=0.022)||(0.024<=yy<=0.026)))
{
F_PROFILE(f,thread,position)=-He*(3.00882e23)*pvl/pow(F_T(f,thread),0.5); /*蒸发带走的热量 */
}
else
{
F_PROFILE(f,thread,position)=0;
}
}end_f_loop(f,thread)
}
//程序2 是我听师兄说可以通过坐标来确定边界,然后再写能量函数。//
再次感谢小木虫里面有做过有关传热仿真的朋友能够指导一下,谢谢啦! |