24小时热门版块排行榜    

查看: 2181  |  回复: 5

renzhihao

新虫 (小有名气)

[求助] 想模拟单个气泡的溃灭,想用fluent编程把压力导入进去,用的vof模型。

我在做空化,想模拟单个气泡的溃灭,但是现在要求内部流体的压力是个随着位置变化的函数,想用fluent编程把压力导入进去,用的vof模型。

下面的为我从别的帖子里面看到的。想问下这些东西需要在fluent里面设置还是编程?
为液相、气相质量方程和能量方程添加源项,UDF程序如下,汽化、液化由压力控制(压力条件判断),各物性参数用温度拟合。问题是:编译时,提示有语法错误(parse),并且fv为未声明的变量。请问如何解决?另:程序中有其他不妥之处,烦请指教,谢谢!
#include "udf.h"
#include "sg_mphase.h"

DEFINE_SOURCE(liq_m,c,l_t,dS,eqn)    /*液相质量输运源项*/
{
Thread *m_t,*v_t;                   /*计算区域指针*/
  m_t=THREAD_SUPER_THREAD(l_t);      /*混合区液相指针*/
  v_t=THREAD_SUB_THREAD(m_t,1);      /*单相区气相指针*/
real m_dot_l;                       /*液相质量输运量*/
real stc;                           /*液氧表面张力系数*/
real fv;                            /*气相质量分数*/
  fv=C_VOF(c,v_t)*C_R(c,v_t)/(C_VOF(c,v_t)*C_R(c,v_t)+C_VOF(c,l_t)*C_R(c,l_t));
real pres_vap,pres_sat,pres_turb;   /*液氧饱和蒸汽压(考虑湍流影响)*/
  if(C_T(c,m_t)>154.58)
    {
     stc=0;
     pres_sat=5.041e6;
    }
  else if(C_T(c,m_t)>54.36)
    {
     stc=0.038066*pow(1-C_T(c,l_t)/154.58,1.2136);
     pres_sat=133.322*pow(10,20.6695-526.97/C_T(c,l_t)-6.7062*log10(C_T(c,l_t))+0.012926*C_T(c,l_t)-C_T(c,l_t)*C_T(c,l_t)*(9.8832e-13));
    }
  else
    {
     stc=0.0225;
     pres_sat=146.041;
    }
  pres_turb=0.39*C_R(c,l_t)*C_K(c,m_t);
  pres_vap=pres_sat+0.5*pres_turb;
if(C_P(c,m_t)<=pres_vap)             /*液相汽化*/
   {
    m_dot_l=-0.02*sqrt(C_K(c,m_t))/stc*C_R(c,l_t)*C_R(c,v_t)*sqrt((2*(pres_vap-C_P(c,m_t)))/(3*C_R(c,l_t)))*(1-fv);
    dS[eqn]=-0.02*sqrt(C_K(c,m_t))/stc*C_R(c,l_t)*C_R(c,v_t)*sqrt((2*(pres_vap-C_P(c,m_t)))/(3*C_R(c,l_t)));
   }
else                                 /*气相液化*/
   {
    m_dot_l=0.01*sqrt(C_K(c,m_t))/stc*C_R(c,l_t)*C_R(c,l_t)*sqrt((2*(C_P(c,m_t)-pres_vap))/(3*C_R(c,l_t)))*fv;
    dS[eqn]=0;
   }
return m_dot_l;
}

DEFINE_SOURCE(vap_m,c,v_t,dS,eqn)    /*气相质量输运源项*/
{
Thread *m_t,*l_t;                   /*计算区域指针*/
  m_t=THREAD_SUPER_THREAD(v_t);      /*混合区气相指针*/
  l_t=THREAD_SUB_THREAD(m_t,0);      /*单相区液相指针*/
real m_dot_v;                       /*气相质量输运量*/
real stc;                           /*液氧表面张力系数*/
real fv;                            /*气相质量分数*/
  fv=C_VOF(c,v_t)*C_R(c,v_t)/(C_VOF(c,v_t)*C_R(c,v_t)+C_VOF(c,l_t)*C_R(c,l_t));
real pres_vap,pres_sat,pres_turb;   /*液氧饱和蒸汽压(考虑湍流影响)*/
  if(C_T(c,m_t)>154.58)
    {
     stc=0;
     pres_sat=5.041e6;
    }
  else if(C_T(c,m_t)>54.36)
    {
     stc=0.038066*pow(1-C_T(c,l_t)/154.58,1.2136);
     pres_sat=133.322*pow(10,20.6695-526.97/C_T(c,l_t)-6.7062*log10(C_T(c,l_t))+0.012926*C_T(c,l_t)-C_T(c,l_t)*C_T(c,l_t)*(9.8832e-13));
    }
  else
    {
     stc=0.0225;
     pres_sat=146.041;
    }
  pres_turb=0.39*C_R(c,l_t)*C_K(c,m_t);
  pres_vap=pres_sat+0.5*pres_turb;
if(C_P(c,m_t)<=pres_vap)             /*液相汽化*/
   {
    m_dot_v=0.02*sqrt(C_K(c,m_t))/stc*C_R(c,l_t)*C_R(c,v_t)*sqrt((2*(pres_vap-C_P(c,m_t)))/(3*C_R(c,l_t)))*(1-fv);
    dS[eqn]=0;
   }
else                                 /*气相液化*/
   {
    m_dot_l=-0.01*sqrt(C_K(c,m_t))/stc*C_R(c,l_t)*C_R(c,l_t)*sqrt((2*(C_P(c,m_t)-pres_vap))/(3*C_R(c,l_t)))*fv;
    dS[eqn]=-0.01*sqrt(C_K(c,m_t))/stc*C_R(c,l_t)*C_R(c,l_t)*sqrt((2*(C_P(c,m_t)-pres_vap))/(3*C_R(c,l_t)));
   }
return m_dot_v;
}

DEFINE_SOURCE(m_enrg,c,m_t,dS,eqn)   /*混合相能量方程输运源项*/
{
Thread *l_t,*v_t;                   /*计算区域指针*/
  l_t=THREAD_SUB_THREAD(m_t,0);      /*混合区液相指针*/
  v_t=THREAD_SUB_THREAD(m_t,1);      /*混合区气相指针*/
real m_dot;                         /*相变质量*/
real hc;                            /*汽化潜热*/
real source;                        /*能量方程源项*/
real stc;                           /*液氧表面张力系数*/
real fv;                            /*气相质量分数*/
  fv=C_VOF(c,v_t)*C_R(c,v_t)/(C_VOF(c,v_t)*C_R(c,v_t)+C_VOF(c,l_t)*C_R(c,l_t));
real pres_vap,pres_sat,pres_turb;   /*液氧饱和蒸汽压(考虑湍流影响)*/
  if(C_T(c,m_t)>154.58)
    {
     stc=0;
     pres_sat=5.041e6;
     hc=0;
    }
  else if(C_T(c,m_t)>54.36)
    {
     stc=0.038066*pow(1-C_T(c,l_t)/154.58,1.2136);
     pres_sat=133.322*pow(10,20.6695-526.97/C_T(c,l_t)-6.7062*log10(C_T(c,l_t))+0.012926*C_T(c,l_t)-C_T(c,l_t)*C_T(c,l_t)*(9.8832e-13));
     hc=8040*pow(1-C_T(c,l_t)/154.58,0.201);
    }
  else
    {
     stc=0.0225;
     pres_sat=146.041;
     hc=2523;
    }
  pres_turb=0.39*C_R(c,l_t)*C_K(c,m_t);
  pres_vap=pres_sat+0.5*pres_turb;
if(C_P(c,m_t)<=pres_vap)             /*液相汽化,温度升高,源项为正*/
   {
    m_dot=0.02*sqrt(C_K(c,m_t))/stc*C_R(c,l_t)*C_R(c,v_t)*sqrt((2*(pres_vap-C_P(c,m_t)))/(3*C_R(c,l_t)))*(1-fv);
    source=m_dot*hc;
    dS[eqn]=0;
   }
else                                 /*气相液化,温度降低,源项为负*/
   {
    m_dot=-0.01*sqrt(C_K(c,m_t))/stc*C_R(c,l_t)*C_R(c,l_t)*sqrt((2*(C_P(c,m_t)-pres_vap))/(3*C_R(c,l_t)))*fv;
    source=-m_dot*hc;
    dS[eqn]=0;
   }
return source;
}
这些东西直接在fluent里面设置行吗,还是必须要编程?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiachaolis

铜虫 (小有名气)

【答案】应助回帖

楼主,请把你相变的模型公式贴出来,这样就好查错误了
付出就会有收获
2楼2016-04-24 20:01:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

renzhihao

新虫 (小有名气)

引用回帖:
2楼: Originally posted by jiachaolis at 2016-04-24 20:01:44
楼主,请把你相变的模型公式贴出来,这样就好查错误了

怎么查错误
3楼2016-04-25 16:41:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

renzhihao

新虫 (小有名气)

引用回帖:
2楼: Originally posted by jiachaolis at 2016-04-24 20:01:44
楼主,请把你相变的模型公式贴出来,这样就好查错误了

怎么查错误
4楼2016-04-26 16:53:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wolfghost

版主 (知名作家)

优秀版主优秀版主优秀版主优秀版主优秀版主

楼主,长期无人应助金币可直接申请返还(点击右下角“通知版主处理”),重新开贴以提高求助成功率!为营造互助、和谐论坛共同努力,谢谢~
大刀向鬼子的头上砍去!ChopJapstoDeath!
5楼2016-05-25 13:50:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

聆听风声love

金虫 (小有名气)

【答案】应助回帖

质量源项的方程出自哪里?
努力!奋斗!
6楼2016-07-03 11:41:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 renzhihao 的主题更新
信息提示
请填处理意见