博研联盟 一个简单而完整的UDS例子.pdf
更新时间:2022-09-28 16:23:43 阅读: 评论:0
一个简单而完整的UDS例子gearboy
标准方程形式:
S(默认u)
txxi
jj
Fluent中各项的定义如下:
名称表达式各项在UDS中需要定义的量在UDS中对应的宏
离散形式的非稳态项
非稳态项DEFINE_UDS_UNSTEADY
t
(详细见UDF帮助)
对流项通量
xDEFINE_UDS_FLUX
j
2
扩散项扩散率DEFINE_DIFFUSIVITY
x2
j
假定需要求解方程为2
txx
jj
当t,即如果计算达到稳定时,2,此方程解析解为xyc,
xx
jj
其中c为常数(假定其为0),可由边界条件确定。因此,当解稳定时,xy,等值
线为一系列45度的斜直线。
将此方程与标准方程对比发现:
名称表达式各项在UDS中需要定义的量需要在UDS中定义的宏
离散形式的非稳态项
非稳态
VVDEFINE_UDS_UNSTEADY
项tnn1
tt
通量IA
对流项
xDEFINE_UDS_FLUX
j(单位向量I1,1,1)
2
扩散项扩散率1DEFINE_DIFFUSIVITY
x2
j
源项22DEFINE_SOURCE
边界条
c0xy(b代表边界处)DEFINE_PROFILE
件bbb
*注:源项和扩散率为常数,可以不用定义宏,但为了说明问题,仍采用宏来定义。
1
假定如图所示的计算域,其中正方形边长为10,原点在正方形中心,四边均为wall。
将如下源码,写入一个UDF文件,例如MyFistUDF.c,与cas文件放在同一目录。
#include"udf.h"
DEFINE_UDS_UNSTEADY(MyUnsteady,c,t,i,apu,su)
{
realphysical_dt,vol,phi_old;
physical_dt=RP_Get_Real("physical-time-step");
vol=C_VOLUME(c,t);
*apu=-vol/physical_dt;/*implicitpart*/
phi_old=C_STORAGE_R(c,t,SV_UDSI_M1(i));
*su=vol*phi_old/physical_dt;/*explicitpart*/
}
DEFINE_UDS_FLUX(MyFlux,f,t,i)
{
realNV_VEC(unit_vec),NV_VEC(A);//声明矢量变量
F_AREA(A,f,t);
NV_DS(unit_vec,=,1,1,1,*,1);//单位矢量赋值
returnNV_DOT(unit_vec,A);//矢量点积
}
DEFINE_DIFFUSIVITY(MyDiff,c,t,i)
{
return1.0;
}
DEFINE_SOURCE(MySource,c,t,dS,eqn)
{
dS[eqn]=0;
return2.0;
}
2
DEFINE_PROFILE(MyProfile,thread,index)
{
realx[ND_ND];/*thiswillholdthepositionvector*/
realxx,yy;
face_tf;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
xx=x[0];
yy=x[1];
F_PROFILE(f,thread,index)=(xx+yy);//xy
bbb
}
end_f_loop(f,thread)
}
编译通过并载入
启动非稳态求解器,并在Define-Ur-Defined-Scalars面板中添加一个UDS,选择自定义的
通量和非稳态项
在材料面板中,选择自定义扩散率
3
在boundaryconditions的Fluid面板中,选择自定义源项
在boundaryconditions的壁面边界条件面板中,选择自定义边界条件
4
在solve-controls-solution中禁止Flow计算,只计算自定义标量
迭代过程中的残差曲线,可以看出正逐渐趋向稳定
5
采用后处理等值线面板,观察自定义标量的等值线
未完全稳定时的等值线
最终稳定时的等值线,可以看出是一系列45度的斜直线,与解析解相同。但右上角顶点的
值为9.9,而解析解中应为x+y=10,所以尚存在1%的误差。
6