1 一个简单而完整的UDS 例子 gearboy 标准方程形式: Sxxtjj (默认iu ) Flu ent 中各项的定义如下: 名称 表达式 各项在UDS 中需要定义的量 在UDS 中对应的宏 非稳态项 t 离散形式的非稳态项 (详细见UDF 帮助) DEFINE_UDS_UNSTEADY 对流项 jx 通量 DEFINE_UDS_FLUX 扩散项 22jx 扩散率 DEFINE_DIFFUSIVITY 假定需要求解方程为2jjxxt 当t,即如果计算达到稳定时,2jjxx,此方程解析解为cyx,其中c 为常数(假定其为0),可由边界条件确定。因此,当解稳定时,yx ,等值线为一系列 45 度的斜直线。 将此方程与标准方程对比发现: 名称 表达式 各项在UDS 中需要定义的量 需要在UDS 中定义的宏 非稳态项 t 离散形式的非稳态项 1nntVtV DEFINE_UDS_UNSTEADY 对流项 jx 通量 AI (单位向量1,1,1I) DEFINE_UDS_FLUX 扩散项 22jx 扩散率 1 DEFINE_DIFFUSIVITY 源项 2 2 DEFINE_SOURCE 边界条件 0c bbbxy (b 代表边界处) DEFINE_PROFILE *注:源项和扩散率为常数,可以不用定义宏,但为了说明问题,仍采用宏来定义。 2 假定如图所示的计算域,其中正方形边长为10,原点在正方形中心,四边均为wall。 将如下源码,写入一个 UDF 文件,例如MyFistUDF.c,与 cas 文件放在同一目录。 #include "udf.h" DEFINE_UDS_UNSTEADY(MyUnsteady,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(unit_vec), NV_VEC(A); //声明矢量变量 F_AREA(A, f, t); NV_DS(unit_vec, =, 1, 1, 1, *, 1); //单位矢量赋值 return NV_DOT(unit_vec, A); //矢量点积 } DEFINE_DIFFUSIVITY(MyDiff,c,t,i) { return 1.0; } DEFINE_SOURCE(MySource,c,t,dS,eqn) { dS[eqn]=0; return 2.0; }...