当前位置:首页 > fluent 中 模拟蒸发 的UDF
#include \/ H' z7 x% F\ #include \#define T_SAT 373 #define LAT_HT 1.e3
DEFINE_SOURCE(liq_src, cell, pri_th, dS, eqn) {
Thread *mix_th, *sec_th; real m_dot_l;6 a* F7 L0 G\
mix_th = THREAD_SUPER_THREAD(pri_th);
sec_th = THREAD_SUB_THREAD(mix_th, 1);& l: i; V7 }: h if(C_T(cell, mix_th)>=T_SAT){
m_dot_l = -0.1*C_VOF(cell, pri_th)*C_R(cell, pri_th)*, ^' I1 r# e$ p# _) _ fabs(C_T(cell, pri_th) - T_SAT)/T_SAT;+ a( i\ dS[eqn] = -0.1*C_R(cell, pri_th)*
fabs(C_T(cell, pri_th) - T_SAT)/T_SAT;# i, j& ~7 H6 k5 Y9 e }- o7 M2 e3 e+ \\0 X* B1 V, |$ I else {- M3 v+ t$ [# v7 Q7 E/ x
m_dot_l = 0.1*C_VOF(cell, sec_th)*C_R(cell, sec_th)*/ w7 c% B+ |( Z fabs(T_SAT-C_T(cell,mix_th))/T_SAT; dS[eqn] = 0.;+ ]\ }
; _0 y0 P7 ?+ K R' V* y) v; C return m_dot_l; }$ Y( A. A+ P% {! E) ^3 [
DEFINE_SOURCE(vap_src, cell, sec_th, dS, eqn)0 m; `8 c0 m0 i, [ {
Thread * mix_th, *pri_th;. h* `2 U1 }& z9 L4 ?% S5 Z# n real m_dot_v;
mix_th = THREAD_SUPER_THREAD(sec_th); pri_th = THREAD_SUB_THREAD(mix_th, 0); 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;, t' w% r) n8 [+ J( U( v. _ dS[eqn] = 0.;0 x8 q3 l# g8 D& V/ \\+ W* a } else {
m_dot_v = -0.1*C_VOF(cell, sec_th)*C_R(cell, sec_th)*( j. }0 }4 Z/ [0 i' C5 D 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;1 _% o! ?2 ?8 |* T }
return m_dot_v;. E. ?3 y p7 T\
}# _( w0 T2 e/ u: l8 c
DEFINE_SOURCE(enrg_src, cell, mix_th, dS, eqn) {& ]7 l! q\ Thread *pri_th, *sec_th; real m_dot;
pri_th = THREAD_SUB_THREAD(mix_th, 0);9 |# H0 p2 v$ S+ q% V7 o0 @ sec_th = THREAD_SUB_THREAD(mix_th, 1);
if(C_T(cell, mix_th)>=T_SAT){) `5 q. m6 [1 U0 Z2 l) y( i7 ?0 Z7 c* K
m_dot = -0.1*C_VOF(cell, pri_th)*C_R(cell, pri_th)*) b\ fabs(C_T(cell, pri_th) - T_SAT)/T_SAT;7 ~+ x. p0 r) R& l# r: P
dS[eqn] = -0.1*C_VOF(cell, pri_th)*C_R(cell, pri_th)/T_SAT;: i/ C2 ]% ^. {% n } 9 j% z6 p% L0 u) J1 O9 ] 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;}
最近在研究浪子发的那个水蒸发的算例,现在针对其附带的UDF提出三个疑问,欢迎感兴趣的朋友参与讨论,务求把这个程序搞清楚: #include \
#include \#define T_SAT 373
#define LAT_HT 1.e3 /*此处的潜热为什么是1000J/kg,水的汽化潜热明显不符.经查,标况下水的汽化潜热是2.26e06,整整相差三个数量级!!*/ DEFINE_SOURCE(liq_src, cell, pri_th, dS, eqn) { Thread *mix_th, *sec_th; real m_dot_l;
mix_th = THREAD_SUPER_THREAD(pri_th); sec_th = THREAD_SUB_THREAD(mix_th, 1); 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;
mix_th = THREAD_SUPER_THREAD(sec_th); pri_th = THREAD_SUB_THREAD(mix_th, 0); 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;
pri_th = THREAD_SUB_THREAD(mix_th, 0);
sec_th = THREAD_SUB_THREAD(mix_th, 1); 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; /*此处是蒸发吸热,按FLUENT规则是\为什么此处是\
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;} /*这一行是对上一行的求导,此处的负号从何而来?而且在另一份带有解释的蒸发UDF中,是没有负号的.输入手误?*/
return LAT_HT*m_dot; }
1、你知道那个define命令是用来定义气化潜热的就行了,至于气化潜热值是一千还是两百
万,根据你模拟的工况查查物性参数表填上;
2、m_dot是质量的转移,又不是热量的转移,为什么拿吸热为+来衡量呢?
3、你说的另一份带解释的udf我没有见过,无从评价,但这里的求导是没有错的,是m_dot
对C_T(cell,mix_th)求导,结果就应该前面有个﹣;
我都看不懂,为什么水的相变潜热为1000 J/Kg 呢,应该为 2250000 J/Kg左右嘛#include \包括体积分数宏
CVOF(C,T)//#define T_SAT 373 //‘定义蒸发温度100℃//#define LAT_HT
1.e3 //‘定义蒸发潜热J/Kg//DEFINE_SOURCE(liq_src, cell, pri_th, dS, eqn) //‘液相质量源项UDF{ Thread *mix_th, *sec_th; //‘定义计算区线指针 real m_dot_l; //‘定义液相质量转移 kg/(m2.s) mix_th = THREAD_SUPER_THREAD(pri_th); //‘指向混合区的主相即液相的指针 sec_th = THREAD_SUB_THREAD(mix_th, 1);//指向单相控制区的气相的指针,气相为第二相 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, mix_th) - T_SAT)/T_SAT; dS[eqn] = -0.1*C_R(cell, pri_th)*fabs(C_T(cell, mix_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) //‘气相质量源项
UDF{ Thread * mix_th, *pri_th; real m_dot_v; mix_th =
THREAD_SUPER_THREAD(sec_th); //‘指向混合区的第二相即气相的指针 pri_th = THREAD_SUB_THREAD(mix_th, 0); //指向单相控制区的液相的指针,液相为主相 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,
共分享92篇相关文档