我的课题是用FLUENT做分子蒸馏器的液膜流体传质传热过程模拟,模拟物系是DHA、油酸(oa)、花生四烯酸(ara),所选的几何区域是高200mm,宽1mm的竖直液膜,操作压力为1pa,上端进口为mass-flow-inlet,左侧为蒸发壁面,下端为压力出口。目前遇到的问题是:
1、右侧液膜表面的边界条件不知道要如何选取
2、液膜表面涉及到多组分的蒸发,所以我想在这个边界上加入一个udf
1)我只做纵向上的一维研究,把组分的蒸发速率编成udf,但是在导入fluent时总是有错误,您能把我看一下程序吗?谢谢!
#include "udf.h"
DEFINE_SOURCE(evapor, cell, thread,j)
{
real nc=80000;
real zl=3;
real p;
real m_e;
real M[3]={328.49,282.46,302.45};
real T;
real T0=573;
real fm;
real p0[3]={3200,2800,3000};
real x0[3]={0.2158,0.6268,0.1574};
real interval;
real x;
if (interval==1)
{
for (j=0;j<3;j++)
{
x=x0[j];
}
T[cell]=T0;
}
else
{
for (i=1;i<=zl;i++)
{
fm=0;
fm=fm+C_YI(cell,thread,i)/M[i-1];
}
for (j=1;j<=zl;j++)
{
x[cell,j]=C_YI(cell,thread,j)/M[j-1]/fm;
}
T[cell]=C_T(cell,thread);
}
p[cell,j]=p0[j-1];
m_e(cell,thread,j)=0.9*15.8*x[cell,j]*P[cell,j]*M[j]/T[cell];
return m_e(cell,thread,i,j);
}
2)我也尝试着将论坛里水蒸发的udf修改成多组分的蒸发,但是成功导入UDF后,fluent不能运行,您能帮我把这个udf也看看吗?谢谢!
#include "udf.h"
#include "sg_mphase.h"
#define T_SAT_dha 593
#define T_SAT_ara 533
#define T_SAT_oa 523
#define LAT_HT_dha 237425.8
#define LAT_HT_ara 285632.3
#define LAT_HT_oa 280781.3
DEFINE_SOURCE(liq_src_dha, cell, pri_th, dS, eqn)
{
Thread *mix_th, *sec_th;
real m_dot_l_dha;
mix_th = THREAD_SUPER_THREAD(pri_th);
sec_th = THREAD_SUB_THREAD(mix_th, 1);
if(C_T(cell, mix_th)>=T_SAT_dha)
{ m_dot_l_dha = -0.1*C_VOF(cell, pri_th)*C_R(cell, pri_th)* fabs(C_T(cell, mix_th) - T_SAT_dha)/T_SAT_dha;
dS[eqn] = -0.1*C_R(cell, pri_th)*fabs(C_T(cell, mix_th) - T_SAT_dha)/T_SAT_dha; }
else
{m_dot_l_dha= 0.1*C_VOF(cell, sec_th)*C_R(cell, sec_th)*fabs(T_SAT_dha-C_T(cell,mix_th))/T_SAT_dha;
dS[eqn] = 0.; }
return m_dot_l_dha;
}
DEFINE_SOURCE(vap_src_dha, cell, sec_th, dS, eqn)
{
Thread * mix_th, *pri_th;
real m_dot_v_dha;
mix_th = THREAD_SUPER_THREAD(sec_th);
pri_th = THREAD_SUB_THREAD(mix_th, 0);
if(C_T(cell, mix_th)>=T_SAT_dha)
{m_dot_v_dha = 0.1*C_VOF(cell, pri_th)*C_R(cell, pri_th)*fabs(C_T(cell, mix_th) - T_SAT_dha)/T_SAT_dha;
dS[eqn] = 0.;
}
else
{m_dot_v_dha= -0.1*C_VOF(cell, sec_th)*C_R(cell, sec_th)* fabs(T_SAT_dha-C_T(cell,mix_th))/T_SAT_dha;
dS[eqn] = -0.1*C_R(cell, sec_th)* fabs(C_T(cell, mix_th) - T_SAT_dha)/T_SAT_dha;
}
return m_dot_v_dha;
}
DEFINE_SOURCE(liq_src_ara, cell, pri_th, dS, eqn)
{
Thread *mix_th, *sec_th;
real m_dot_l_ara;
mix_th = THREAD_SUPER_THREAD(pri_th);
sec_th = THREAD_SUB_THREAD(mix_th, 1);
if(C_T(cell, mix_th)>=T_SAT_ara)
{ m_dot_l_ara = -0.1*C_VOF(cell, pri_th)*C_R(cell, pri_th)* fabs(C_T(cell, mix_th) - T_SAT_ara)/T_SAT_ara;
dS[eqn] = -0.1*C_R(cell, pri_th)*fabs(C_T(cell, mix_th) - T_SAT_ara)/T_SAT_ara; }
else
{m_dot_l_ara = 0.1*C_VOF(cell, sec_th)*C_R(cell, sec_th)*fabs(T_SAT_ara-C_T(cell,mix_th))/T_SAT_ara;
dS[eqn] = 0.; }
return m_dot_l_ara;
}
DEFINE_SOURCE(vap_src_ara, cell, sec_th, dS, eqn)
{
Thread * mix_th, *pri_th;
real m_dot_v_ara;
mix_th = THREAD_SUPER_THREAD(sec_th);
pri_th = THREAD_SUB_THREAD(mix_th, 0);
if(C_T(cell, mix_th)>=T_SAT_ara)
{m_dot_v_ara = 0.1*C_VOF(cell, pri_th)*C_R(cell, pri_th)*fabs(C_T(cell, mix_th) - T_SAT_ara)/T_SAT_ara;
dS[eqn] = 0.;
}
else
{m_dot_v_ara = -0.1*C_VOF(cell, sec_th)*C_R(cell, sec_th)* fabs(T_SAT_ara-C_T(cell,mix_th))/T_SAT_ara;
dS[eqn] = -0.1*C_R(cell, sec_th)* fabs(C_T(cell, mix_th) - T_SAT_ara)/T_SAT_ara;}
return m_dot_v_ara;
}
DEFINE_SOURCE(liq_src_oa, cell, pri_th, dS, eqn)
{
Thread *mix_th, *sec_th;
real m_dot_l_oa;
mix_th = THREAD_SUPER_THREAD(pri_th);
sec_th = THREAD_SUB_THREAD(mix_th, 1);
if(C_T(cell, mix_th)>=T_SAT_oa)
{ m_dot_l_oa= -0.1*C_VOF(cell, pri_th)*C_R(cell, pri_th)* fabs(C_T(cell, mix_th) - T_SAT_oa)/T_SAT_oa;
dS[eqn] = -0.1*C_R(cell, pri_th)*fabs(C_T(cell, mix_th) - T_SAT_oa)/T_SAT_oa; }
else
{m_dot_l_oa = 0.1*C_VOF(cell, sec_th)*C_R(cell, sec_th)*fabs(T_SAT_oa-C_T(cell,mix_th))/T_SAT_oa;
dS[eqn] = 0.; }
return m_dot_l_oa ;
}
DEFINE_SOURCE(vap_src_oa, cell, sec_th, dS, eqn)
{
Thread * mix_th, *pri_th;
real m_dot_v_oa;
mix_th = THREAD_SUPER_THREAD(sec_th);
pri_th = THREAD_SUB_THREAD(mix_th, 0);
if(C_T(cell, mix_th)>=T_SAT_oa)
{m_dot_v_oa = 0.1*C_VOF(cell, pri_th)*C_R(cell, pri_th)*fabs(C_T(cell, mix_th) - T_SAT_oa)/T_SAT_oa;
dS[eqn] = 0.;
}
else
{m_dot_v_oa = -0.1*C_VOF(cell, sec_th)*C_R(cell, sec_th)* fabs(T_SAT_oa-C_T(cell,mix_th))/T_SAT_oa;
dS[eqn] = -0.1*C_R(cell, sec_th)* fabs(C_T(cell, mix_th) - T_SAT_oa)/T_SAT_oa;
}
return m_dot_v_oa; |