|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
C:\Users\user\Desktop\QQ图片20130605222632
现在有一个UDS方程中的对流项如图(位于底部)所示,其中Wf为常数,取0.3,我编辑的UDF代码如下,但是导入FLUENT后计算不收敛,不知道是不是对流项出错了,求各位大神指导!!
DEFINE_UDS_FLUX(snow_uds_flux,f,t,i)
{
real U[ND_ND],A[ND_ND],flux;
cell_t c0,c1;
Thread *t0,*t1;
c0=F_C0(f,t);
t0=F_C0_THREAD(f,t);
F_AREA(A,f,t);
flux=0.0;
c1=-1;
t1=NULL;
if(BOUNDARY_FACE_THREAD_P(t))
{
U[0]=F_U(f,t);
U[1]=F_V(f,t);
U[2]=(F_W(f,t)+0.3);
flux=U[0]*A[0]+U[1]*A[1]+U[2]*A[2];
}
else
{
c1=F_C1(f,t);
t1=F_C1_THREAD(f,t);
U[0]=(C_U(c0,t0)+C_U(c1,t1))/2.0;
U[1]=(C_V(c0,t0)+C_V(c1,t1))/2.0;
U[2]=(C_W(c0,t0)+0.3+C_W(c1,t1)+0.3)/2.0;
flux=U[0]*A[0]+U[1]*A[1]+U[2]*A[2];
}
return flux;
}
采用NV_宏定义的向量形式编辑如下:
DEFINE_UDS_FLUX(snow_uds_flux,f,t,i)
{
real NV_VEC(psi_vec),NV_VEC(A),flux;
real U0,V0,W0,U1,V1,W1;
cell_t c0,c1;
Thread *t0,*t1;
c0=F_C0(f,t);
t0=F_C0_THREAD(f,t);
F_AREA(A,f,t);
flux=0.0;
c1=-1;
t1=NULL;
if(BOUNDARY_FACE_THREAD_P(t))
{
real dens;
if (NNULLP(THREAD_STORAGE(t,SV_DENSITY)))
dens=F_R(f,t);
else
dens=C_R(c0,t0);
U0=F_U(f,t);
V0=F_V(f,t);
W0=(F_W(f,t)+0.3);
NV_DS(psi_vec,=,U0,V0,W0,*,dens);
flux=NV_DOT(psi_vec,A);
}
else
{
c1=F_C1(f,t);
t1=F_C1_THREAD(f,t);
U0=C_U(c0,t0);
V0=C_V(c0,t0);
W0=(C_W(c0,t0)+0.3);
U1=C_U(c1,t1);
V1=C_V(c1,t1);
W1=(C_W(c1,t1)+0.3);
NV_DS(psi_vec,=,U0,V0,W0,*,C_R(c0,t0));
NV_DS(psi_vec,+=,U1,V1,W1,*,C_R(c1,t1));
flux=NV_DOT(psi_vec,A)/2.0;
}
return flux;
}
这两种方法是不是一样的呢? |
-
|