|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
您好!
我针对表面张力,编写了C程序如下:
DEFINE_PROFILE(x_surfacestress, t, i)
{
real x[ND_ND],A[ND_ND];
real K_seg, surface_tension_gradient, temp_gradient, surface_tension, temp;
face_t f;
Thread *t0=THREAD_T0(t);
/* Do nothing if areas aren';t computed yet or not next to fluid. */
if (!Data_Valid_P()||!FLUID_THREAD_P(t0)) return;
begin_f_loop(f, t)
{
cell_t c0=F_C0(f,t);
temp=C_T(c0,t0);
K_seg=kl*exp(-H0/(R*temp));
surface_tension_gradient=-A-R*S*log(1.0+K_seg*ai)-K_seg*ai/(1.0+K_seg*ai)*S*H0/temp;
temp_gradient=C_T_G(c0,t0)[0];
surface_tension=surface_tension_gradient*temp_gradient;
F_AREA(A,C_FACE(c0,t0,i),C_FACE_THREAD(c0,t0,i));
if(temp>Tl)
F_PROFILE(f, t, i)=surface_tension/A[0];
else
F_PROFILE(f,t,i)=0.0;
}
end_f_loop(f, t);
}
解释一下:表面张力=dF/dT*dT/dx
由于F_T_G()不存在,所以利用C_T_G()来表示dT/dx,所以有temp_gradient=C_T_G(c0,t0)[0];
上面的udf链接到wall面板中的specific stress中,注意到链接的应该是压强(帕),所以还要将表面张力除以相应的面积,得到压强。故而有F_AREA(A,C_FACE(c0,t0,i),C_FACE_THREAD(c0,t0,i));
现在的问题是:编译通过,初始化也通过,但是迭代开始后仅仅几步Fluent求解器就求解不了了,这时在残差曲线中仅仅有温度的。
请问:该如何考虑这个问题呢?或者是我的udf编写的不合理?
谢谢! |
|