找回密码
 注册
查看: 6714|回复: 12

我写了一个基于压力计算的水蒸发UDF程序,请大家探讨一下

[复制链接]
发表于 2009-12-1 17:13:29 | 显示全部楼层 |阅读模式

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

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

x
程序想要描述的过程是,温度一定,由于减压导致水的蒸发过程。编译后没有语法错误,但是无法开始计算:
iter continuity x-velocity y-velocity     energy          k    epsilon vf-phase-2     time/iter
temperature limited to 1.000000e+000 in 3768 cells on zone 2 in domain 1

turbulent viscosity limited to viscosity ratio of 1.000000e+005 in 944 cells
     1 1.0000e+00 3.3513e-04 1.4466e-09 2.2587e+03 5.0491e+11 3.0536e+12 1.1336e+06  0:00:00   99

Error: Floating point error: invalid number

Error Object: ()
问题出在哪了呢?请大家不吝赐教!
代码文件如下:
#include "udf.h"                                                /*包括常规宏*/
#include "sg_mphase.h"                                        /*包括体积分数宏*/
#define  LAT_HT 2260                                          /*定义水蒸汽潜热*/
#define  pi 3.1415                                            /*圆周率常数*/
#define  R 8.314                                             /*gas constant 8.314j/mol.K*/
#define  moleweight 0.018                                   /*SI unit water mole weight 0.018kg/mol */
#define A 7.19621
#define B 1730.63
#define C 233.426
DEFINE_SOURCE(liq_src, cell, pri_th, dS, eqn)                   /*定义液相源项*/
{
  Thread *mix_th, *sec_th;                                    /*混合相、第二相 定义计算区域指针*/
  real m_dot_l;                                                /*蒸发冷凝速率  定义液相质量转移*/
  real P_SAT ;                                
  mix_th = THREAD_SUPER_THREAD(pri_th);                        /*指向混合区的主相即液相的指针*/
  sec_th = THREAD_SUB_THREAD(mix_th, 1);                      /* 指向单相控制区的气相的指针*/
  P_SAT=exp(A-B/(C_T(cell,pri_th)+C-273.15))*1e3;     /*定义饱和蒸汽压与液相温度的关系式,即antoine公式*/
if(C_P(cell, sec_th)< P_SAT)
   {m_dot_l = -(P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th));     /*定义液相向气相转移的速率,如果气相                                                                                        的压力小于一定温度下的饱和蒸汽压,液                                                                                相向气相发生质量转移*/
   dS[eqn]= -2*pi*R*sqrt(moleweight)*(P_SAT-P_SAT*C_T(cell,pri_th)*B/pow((C_T(cell,pri_th)+C-273.15),2)-C_P(cell, sec_th));                 /*定义源项对质量转移偏导,fabs为取绝对值*/
   }
else
   {m_dot_l = (P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th));       /*定义液相向气相转移的速率,如果气                                                                                   相压力大于一定温度下的饱和蒸汽压,气                                                                                         相向液相发生质量转移*/
   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 P_SAT ;
  mix_th = THREAD_SUPER_THREAD(sec_th);
  pri_th = THREAD_SUB_THREAD(mix_th, 0);
  P_SAT=exp(A-B/(C_T(cell,pri_th)+C-273.15))*1e3;
if(C_P(cell, sec_th)< P_SAT)
{
  m_dot_v = (P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th));
  dS[eqn] =0;
}
else
  {m_dot_v = -(P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th));  
  dS[eqn]=-2*pi*R*sqrt(moleweight)*(P_SAT-P_SAT*C_T(cell,pri_th)*B/pow((C_T(cell,pri_th)+C-273.15),2)-C_P(cell, sec_th));
  }
return m_dot_v;
}
DEFINE_SOURCE(enrg_src, cell, mix_th, dS, eqn)
{
Thread *pri_th,*sec_th;
real m_dot;
real P_SAT;
pri_th=THREAD_SUB_THREAD(mix_th,0);
sec_th=THREAD_SUB_THREAD(mix_th,1);
P_SAT=exp(A-B/(C_T(cell,pri_th)+C-273.15))*1e3;
if(C_P(cell, sec_th)< P_SAT)
{
  m_dot =- (P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th));
  dS[eqn]=-2*pi*R*sqrt(moleweight)*(P_SAT-P_SAT*C_T(cell,pri_th)*B/pow((C_T(cell,pri_th)+C-273.15),2)-C_P(cell, sec_th));
}
else
{
m_dot = (P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th));
dS[eqn]=2*pi*R*sqrt(moleweight)*(P_SAT-P_SAT*C_T(cell,pri_th)*B/pow((C_T(cell,pri_th)+C-273.15),2)-C_P(cell, sec_th));
}

return LAT_HT*m_dot;

}
发表于 2010-1-12 09:18:45 | 显示全部楼层
有人跟我一样啊,郁闷中。请问楼主的问题解决了吗?
发表于 2010-1-12 12:01:52 | 显示全部楼层
将松弛因子改小点试试,尤其是压力,温度和动量的
发表于 2011-5-18 09:05:56 | 显示全部楼层

回复 1# qiyang 的帖子

你好,请问你的问题解决了吗?我现在正在做这方面的东西,想请教下,能不能给我个联系方式?谢谢了~~
发表于 2011-7-7 20:44:25 | 显示全部楼层

回复 1# qiyang 的帖子

#define  LAT_HT 2260                                          /*定义水蒸汽潜热*/
潜热应该为2260000吧,即2260kJ/kg
还有下面这个也有错误吧
{m_dot_l = (P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th));       /*定义液相向气相转移的速率,如果气相压力大于一定温度下的饱和蒸汽压,气相向液相发生质量转移*/
你想一下,当C_P(cell,sec_th)>P_SAT,上面你那个公式m_dot_l就为负的了,实际上气相向液相发生质量转移m_dot_l应该为正的
发表于 2011-7-8 22:07:10 | 显示全部楼层

回复 1# qiyang 的帖子

#define  R 8.314                                             /*gas constant 8.314j/mol.K*/
R为8.314,单位为kJ/(Kmol*K) ,应该用国际单位制8314J/(Kmol*K)
发表于 2011-8-16 13:16:44 | 显示全部楼层

回复 1# qiyang 的帖子

您的问题解决了吗?方便的交流一下好吗?我QQ:61042905
发表于 2011-8-22 13:40:03 | 显示全部楼层

回复 4# 332915161 的帖子

你好,我也做相关的东西,可以交流下么~QQ:61042905
发表于 2011-8-24 10:40:02 | 显示全部楼层
我试了一下你的antoine方程,好像结果不对,不知是单位的问题,还是你设置的A/B/C参数值得问题。
发表于 2011-10-14 13:27:26 | 显示全部楼层

回复 9# shaotz628 的帖子

单位换算不对
发表于 2012-3-30 15:23:18 | 显示全部楼层
用的公式源自哪里
发表于 2012-5-24 10:59:39 | 显示全部楼层

我做过蒸汽的冷凝模拟,可以和我联系qq2500420550

我做过蒸汽的冷凝模拟,可以和我联系qq2500420550
发表于 2013-9-16 11:15:20 | 显示全部楼层
我遇到了和楼主相同的情况,请问楼主问题解决了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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