|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
大家好啊,我最近在网上看见一个关于蒸发的UDF,想把它用到液池蒸发的算例中去(因为蒸发比较缓慢就把温度设置的相对高了一些),下半部分是液态水,上方空气流过,想观察一下蒸发情况,但是刚开始计算就崩溃,不知道是哪里的设置问题,层流模型,VOF三相(水,蒸汽,空气)/开了输运方程后VOF两相(水。蒸汽空气混合物)都试过了, 都是崩溃,烦请高人指点一下
#include "udf.h" /*包括常规宏*/
#include "sg_mphase.h" /*包括体积分数宏*/
#define LAT_HT 2260000 /*定义水蒸汽潜热*/
#define pi 3.1415 /*圆周率常数*/
#define R 8314 /*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;
}
|
|