找回密码
 注册
查看: 4529|回复: 3

蒸发冷凝UDF

[复制链接]
发表于 2013-5-9 20:43:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近在使用FLUENT做热管内相变的模拟,在网上找一个很常见的UDF程序模拟相变过程,可是这个UDF并没有考虑压力变化,只是认为的定义了一个固定的饱和温度,以及汽化潜热。因为我模拟的热管时封闭的,因此需要考虑使用过程中热管内压力的变化,于是我自己加了几行代码来考虑压力的变化,因为以前虽然用过Fluent做模拟,可很少用到UDF,因此这次费了好大劲。
UDF的导入以及后来初始化都没有问题,不过点了Iterate后,好像Fluent是在计算,可过了大约10分钟的样子就报错:Error: Floating point error: invalid number

Error Object: ()
而且第一步一点都没算,找了好久都不知道是哪的问题。
下面是具体的UDF,红色的部分是我后加的,希望大神们给指点一下是哪的问题:
#include "udf.h"
#include "sg_mphase.h"

DEFINE_SOURCE(liq_src,cell,pri_th,dS,eqn)
{
  
  Thread *mix_th,*sec_th;
  real m_dot_l;
  
real T_SAT;                /*定义临界温度*/
  real tem_pressure;                /*定义单元压力*/


  mix_th=THREAD_SUPER_THREAD(pri_th);
  sec_th=THREAD_SUB_THREAD(mix_th,1);

tem_pressure=C_P(cell,mix_th);                            /*读取单元压力*/
  T_SAT=39.73*pow(tem_pressure,0.1386)+176.7;        *定义饱和温度与压力的关系*/


  if(C_T(cell,mix_th)>=T_SAT)
  {
    m_dot_l=-0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)*fabs(C_T(cell,pri_th)-T_SAT)/T_SAT;
    dS[eqn]=-0.1*C_R(cell,pri_th)*fabs(C_T(cell,pri_th)-T_SAT)/T_SAT;
  }
  else
  {
    m_dot_l=0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)*fabs(T_SAT-C_T(cell,mix_th))/T_SAT;

    dS[eqn]=0.;

  }
   
  return m_dot_l;

}

DEFINE_SOURCE(vap_src,cell,sec_th,dS,eqn)

{

  Thread *mix_th,*pri_th;
  real m_dot_v;

  real T_SAT;                /*定义临界温度*/
  real tem_pressure;                /*定义单元压力*/

  mix_th=THREAD_SUPER_THREAD(sec_th);
  pri_th=THREAD_SUB_THREAD(mix_th,0);

tem_pressure=C_P(cell,mix_th);                            /*读取单元压力*/
  T_SAT=39.73*pow(tem_pressure,0.1386)+176.7;        /*定义饱和温度与压力的关系*/

  if(C_T(cell,mix_th)>=T_SAT)
  {
    m_dot_v=0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
    dS[eqn]=0.;
  }
  else
  {
    m_dot_v=-0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)*fabs(T_SAT-C_T(cell,mix_th))/T_SAT;

    dS[eqn]=-0.1*C_R(cell,sec_th)*fabs(C_T(cell,sec_th)-T_SAT)/T_SAT;

  }
   
  return m_dot_v;

}

DEFINE_SOURCE(enrg_src,cell,mix_th,dS,eqn)
{
  Thread *pri_th,*sec_th;
  real m_dot;

  real T_SAT;                /*定义临界温度*/
  real LAT_HT;                /*定义汽化潜热*/
  real tem_pressure;                /*定义单元压力*/


  pri_th=THREAD_SUB_THREAD(mix_th,0);
  sec_th=THREAD_SUB_THREAD(mix_th,1);

tem_pressure=C_P(cell,mix_th);                            /*读取单元压力*/
  T_SAT=39.73*pow(tem_pressure,0.1386)+176.7;        /*定义饱和温度与压力的关系*/
  LAT_HT=-71580*pow(tem_pressure,0.1571)+2696000;/*定义汽化潜热与饱和压力的关系*/


  if(C_T(cell,mix_th)>=T_SAT)
  {
    m_dot=-0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)*fabs(C_T(cell,pri_th)-T_SAT)/T_SAT;

    dS[eqn]=-0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)/T_SAT;
  }
   
  else
  {
    m_dot=0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)*fabs(T_SAT-C_T(cell,mix_th))/T_SAT;

    dS[eqn]=0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)/T_SAT;
  }

  return LAT_HT*m_dot;
}
发表于 2013-5-10 07:39:12 | 显示全部楼层
热管那点压降,不算什么,制冷系统所用换热器几十千帕的压降都是当做恒压处理,设计的换热能力误差还是可以接受的,10%以内。
 楼主| 发表于 2013-5-10 08:29:11 | 显示全部楼层

回复 2# 浪子轻狂 的帖子

我想的是,在热管启动的过程中,液体逐渐蒸发为气体,这个时候热管内的压力变化是不是能忽略呢?因为我所模拟的热管没加热的时候内部压强是3000多Pa,我想这个时候由于汽化产生的压强的变化(热管内总体的压强变化,并不是轴向的压力)对饱和温度的影响还是很大的,第一次做相变方面的模拟,不知道我考虑的对不对?希望大神多指教一二,谢谢了
发表于 2014-7-14 17:49:38 | 显示全部楼层
请问您的问题解决了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表