大家好!我最近在尝试基于fluent实现level set方法追踪自由表面。不利用fluent自带的coupled level set and vof,而是希望通过uds求解level set方程、重新初始化方程。最后结合level set函数值求解物理量的控制方程。目前已利用uds求解level set函数,在求解重新初始化方程时遇到问题。
首先,在求解level set方程时,uds方程源项为0,扩散系数为0,对流项选择mass flow rate. 求解的方程如图1:
![fluent uds方程对流项问题 用于求解level set方程及重新初始化方程]()
图1 利用UDS求解的Level Set方程
重新初始化方程如图2所示,对照UDS方程形式,认为对流项为w =sign phi0 *grad phi / |grad phi|
![fluent uds方程对流项问题 用于求解level set方程及重新初始化方程-1]()
图2 重新初始化方程
对流项UDF编写时,令w0=sign phi0 /|grad phi|; w = w0*grad phi. 如下:
DEFINE_UDS_FLUX(flux_reinil,f,t,i)
{
real w=0.0,w0;
cell_t c0;
Thread *t0;
real NV_VEC(psi_vec),NV_VEC(A);
c0=F_C0(f,t);
t0=F_C0_THREAD(f,t);
F_AREA(A,f,t);
w0 = C_UDSI(c0,t0,0)/sqrt(C_UDSI(c0,t0,0)*C_UDSI(c0,t0,0)+0.01*0.01)/sqrt(C_UDSI_G(c0,t0,1)[0]*C_UDSI_G(c0,t0,1)[0]+C_UDSI_G(c0,t0,1)[1]*C_UDSI_G(c0,t0,1)[1]+C_UDSI_G(c0,t0,1)[2]*C_UDSI_G(c0,t0,1)[2]);
NV_D(psi_vec,=,C_UDSI_G(c0,t0,1)[0],C_UDSI_G(c0,t0,1)[1],C_UDSI_G(c0,t0,1)[2]);
NV_S(psi_vec,*=,w0);
w = NV_DOT(psi_vec,A);
return w;
}
可以编译,可以计算,但是结果不能实现重新初始化。
问题多多:1)利用UDS解重新初始化方程的可行性;2)如果可行,对流项形式是否是w;3)DEFINE_UDS_FLUX的编写。这些都存在一些问题,烦请大家予以指导!或者推荐一些可供学习的资料、文献也行!非常感谢!!!  |