为液相、气相质量方程和能量方程添加源项,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;
} |