|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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;
} |
|