这是一个关于膜渗透的过程,利用UDF进行质量源项的添加。具体的程序贴出来了,问题是导入fluent以后,DEFINE_ADJUST定义的宏表现出来了,可是DEFINE_SOURCE 定义的函数在边界条件那里没有,我在fluent中设定了memory是2个,其他的就没有再改,是不是漏掉什么了?大家帮我看看吧~~
#include"udf.h"
#include"mem.h"
#define MW_N2 28.0
#define MW_C2H4 28
#define Q_N2 0
#define Q_C2H4 0.0000002435
#define P_outer 2160000
#define P_inner 120000
#define feed_domain 17
#define perment_domain 18
real molefrac( real frac, real molarone, real molartwo)
{
real a = frac / molarone ;
real b = (1-frac)/molartwo ;
return a/(a+b) ;
}
DEFINE_ADJUST(filter_adjust, domain)
{
cell_t c1, c0;
Thread* wall_thread;
Thread* wall_shadow_thread ;
Thread* t0;
Thread*t1;
face_t wall = 27;
face_t wall_shadow = 2;
real A[ND_ND] ;
real x_C2H4_outer, x_N2_outer, x_C2H4_inner, x_N2_inner, At, flux_C2H4, flux_N2, tot_flux ;
int memb_id = 17 ;
wall_thread= Lookup_Thread(domain,wall);
tot_flux = 0 ;
begin_f_loop (wall, wall_thread)
{
c0 = F_C0(wall,wall_thread);
wall_shadow_thread = THREAD_SHADOW(wall_thread);
wall_shadow = F_SHADOW(wall,wall_thread);
c1 = F_C0(wall_shadow,wall_shadow_thread);
t0 = F_C0_THREAD(wall,wall_thread);
t1 =THREAD_T0(wall_shadow_thread);
x_C2H4_outer = molefrac(C_YI(c0, t0, 0), MW_C2H4, MW_N2);
x_N2_outer = 1.0 - x_C2H4_outer;
x_C2H4_inner = molefrac(C_YI(c1, t1, 0), MW_C2H4, MW_N2);
x_N2_inner = 1.0 - x_C2H4_inner;
F_AREA(A,wall, wall_thread);
At = NV_MAG(A);
flux_C2H4 = Q_C2H4 * ( x_C2H4_outer * P_outer - x_C2H4_inner * P_inner);
flux_N2 = Q_N2 * ( x_N2_outer * P_outer - x_N2_inner * P_inner);
tot_flux = tot_flux + MW_C2H4*flux_C2H4*At + MW_N2*flux_N2*At;
C_UDMI(c0, t0, 0) = -(MW_C2H4*flux_C2H4)*At/C_VOLUME(c0,t0);
C_UDMI(c1, t1, 1) = (MW_C2H4*flux_C2H4)*At/C_VOLUME(c1,t1);
C_UDMI(c0, t0, 2) = -(MW_N2*flux_N2)*At/C_VOLUME(c0,t0);
C_UDMI(c1, t1, 3) = (MW_N2*flux_N2)*At/C_VOLUME(c1,t1);
}
end_f_loop (wall,wall_thread)
}
DEFINE_SOURCE(gas1, c, t, dS, eqn)
{
Thread* tf;
int n ;
real source=0.0;
Domain *domain = Get_Domain(feed_domain);
face_t wall = 27;
Thread* wall_thread=Lookup_Thread(domain,wall);
Thread* wall_shadow_thread = THREAD_SHADOW(wall_thread);
c_face_loop( c, t, n)
{tf = C_FACE_THREAD(c,t,n);
if(tf==wall_thread)
return source=C_UDMI(c, t, 0);
}
return source;
}
DEFINE_SOURCE(gas2, c, t, dS, eqn)
{
Thread* tf;
int n ;
real source=0.0;
Domain *domain = Get_Domain(perment_domain);
face_t wall = 27;
Thread* wall_thread=Lookup_Thread(domain,wall);
Thread* wall_shadow_thread = THREAD_SHADOW(wall_thread);
c_face_loop( c, t, n)
{tf = C_FACE_THREAD(c,t,n);
if(tf==wall_shadow_thread)
return source=C_UDMI(c,t,1);
}
return source;
}
有点长,可是很简单。求求大家帮我看看吧 |