24小时热门版块排行榜    

查看: 1893  |  回复: 3

liyujie1245

新虫 (初入文坛)

[求助] 在fluent里面的udf中profile宏考虑传热模块怎么写udf程序已有1人参与

我刚刚开始使用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 是我听师兄说可以通过坐标来确定边界,然后再写能量函数。//
再次感谢小木虫里面有做过有关传热仿真的朋友能够指导一下,谢谢啦!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liyujie1245

新虫 (初入文坛)

2楼2014-08-24 00:10:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tank_fire

铜虫 (小有名气)

【答案】应助回帖

看不见图,虽然我不搞传热,但是我觉得你应该分别写2个UDF,一个用在固体界面(假设wall a),一个用在液体界面(wall b)。在Boundary conditions里面在固体界面wall a里thermal项heat flux(或者其他导热的计算方式)加载第一个udf,wall b的加载第二个,这样就不用考虑界面位置的问题,只要loop
3楼2014-08-27 23:51:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiaoshou1001

金虫 (著名写手)

研发仿真工程师

请问,有没有用fluent做断路器触头分断电弧仿真的,请不吝赐教
4楼2018-02-23 13:09:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 liyujie1245 的主题更新
信息提示
请填处理意见