标准方程形式:
S (默认 UJ
t Xj Xj
Flue nt中各项的定义如下:
名称
表达式
各项在UDS中需要定义的量
在UDS中对应的宏
非稳态项
t
离散形式的非稳态项
pAr
ap<u eh
(详细见UDF帮助)
DEFINE_UDS_UNSTEADY
对流项
Xj
诵量
DEFINE_UDS_FLUX
扩散项
2
2
Xj
扩散率
DEFINE_DIFFUSIVITY
假定需要求解方程为 2
t Xj Xj
当t
,即如果计算达到稳定时,
Xj
Xj
2,此方程解析解为
x y c,
其中c为常数(假定其为 0),可由边界条件确定。因此,当解稳定时, x y,等值
线为一系列45度的斜直线。
将此方程与标准方程对比发现:
名称
表达式
各项在UDS中需要定义的量
需要在UDS中定义的宏
非稳态 项
t
离散形式的非稳态项
V n V n 1
t t
DEFINE_UDS_UNSTEADY
对流项
Xj
诵量 1 A
(单位向量1 1,1,1 )
DEFINE_UDS_FLUX
扩散项
2
2
Xj
扩散率 1
DEFINE_DIFFUSIVITY
源项
2
2
DEFINE SOURCE
边界条 件
c 0
b Xb y b (b代表边界处)
DEFINE_PROFILE
*注:源项和扩散率为常数,可以不用定义宏,但为了说明问题,仍采用宏来定义。
假定如图所示的计算域,其中正方形边长为 10,原点在正方形中心,四边均为 wall。
将如下源码,写入一个 UDF文件,例如 ,与cas文件放在同一目录。
#in elude ""
DEFINE_UDS_UNSTEADY(MyU nsteady,c,t,i,apu,su)
{
real physical_dt, vol, phi_old;
physical_dt = RP_Get_Real("physical-time-step");
vol = C_VOLUME(c,t);
*apu = -vol / physical_dt; /implicit part*/
phi_old = C_STORAGE_R(c,t,SV_UDSI_M1(i));
*su = vol*phi_old/physical_dt; /*explicit part*/
}
DEFINE_UDS_FLUX(MyFlux,f,t,i)
{
real NV_VEC(u nit_vec), NV_VEC(A); 〃声明矢量变量
F_AREA(A, f, t);
NV_DS(u ni t_vec, =, 1, 1, 1, *, 1); // 单位矢量赋值
return NV_DOT(u nit_vec, A); 〃矢量点积
}
DEFINE_DIFFUSIVITY(MyDiff,c,t,i)
{
return ;
}
DEFINE_SOURCE(MySource,c,t,dS,e qn)
{
dS[eq n]=0;
return ;
DEFINE_PROFILE(MyProfile
一个简单而完整的UDS例子 来自淘豆网m.daumloan.com转载请标明出处.