平面摄影技术研习社

让网格动起来 | (四)FLUENT动网格UDF宏

ANSYS学习与应用 2017-12-06 15:31:53


虽然瞬态PROFILE文件可以在一定程度上定义网格运动,然而其存在着一些缺陷。最主要的一些缺陷存在于以下一些方面:

(1)PROFILE无法精确的定义连续的运动。其使用离散的点值进行插值。如果想获得较为精确的运动定义,势必要定义很多点。

(2)一些情况下无法使用profile。比如稳态动网格。

在FLUENT中定义网格运动,更多的是采用UDF宏。FLUENT中与动网格有关的UDF宏一共有5个,其中四个用于常规的网格运动定义,一个用于6DOF模型。这些宏分别为:

DEFINE_CG_MOTION、DEFINE_DYNAMIC_ZONE_PROPERTY、DEFINE_GEOM、DEFINE_GRID_MOTION、DEFINE_SDOF_PROPERTIES

注意:动网格宏只能为编译型UDF。

1、DEFINE_CG_MOTION

最常用的运动网格宏。用户可以使用该宏定义每一时间步上的线速度或角速度来指定fluent中某一特定区域的运动。

DEFINE_CG_MOTION(name,de,vel,omega,time,dtime)

参数说明:

name:UDF的名字。体现在fluent中表现为可选择的函数列表。

Dynamic_Thread *dt:存储了用户所指定的动网格属性和结构指针。

real vel[]:线速度。vel[0]为x方向速度,vel[1]为y方向速度,vel[2]为z方向速度

real omega[]:角速度。与线速度定义相同。

real time:当前时间。

real dtime:时间步长。

函数返回值为:void

从函数的参数类型,配合c语言的参数调用方式可知,vel,omega为数值类型,属于传入类型。因此只需在函数体中显式定义vel与omega即可将速度传入fluent求解器。time与dtime是用于定义速度的。详细实例可参看fluent udf文档p182。


2、DEFINE_DYNAMIC_ZONE_PROPERTY

该宏能用于以下一些场合:

(1)在in-cylinder应用中定义旋转中心。

(2)定义变化的网格层高度。

第一种用法:

DEFINE_DYNAMIC_ZONE_PROPERTY(name,dt,swirl_center)

参数说明:

name:UDF名。

Dynamic_Thread *t:指向存储动网格属性结构的指针。若没有动态区域位于当前计算的旋转中心,则fluent内部将该参数设置为NULL.

real *swirl_center:swirl_center为一个具有3个元素的数值,表示旋转中心的x,y,z坐标。

返回值为:void。具体实例可参看udf手册p183。

第二种用法:在使用动态层方法时定义变化的网格高度。参数与第一种用法略有不同。

DEFINE_DYNAMIC_ZONE_PEOPERTY(name,dt,height)

参数说明:

name: UDF名

Dynamic_Thread dt:指向存储动网格属性结构的指针

real *height: 一个实数指针,指向动态层高度为时间或crank角的函数。

返回值:void

具体实例参看fluent udf手册P185


3、DEFINE_GEOM

用户可以使用此宏定义变化区域的几何。默认情况下,ansys fluent提供了机制用于定义节点沿平面或柱面运动。当ansys fluent更新了变形区域上的节点时(例如通过弹簧光顺或局部面重构之后),会通过调用DEFINE_GEOM宏重新定位节点。请注意该宏只能作为编译型UDF使用。

函数说明:

DEFINE_GEOM(name,d,dt,position)

参数说明:

name:UDF名

Domain *d:指向计算域的指针

Dynamic_Thread *dt:指向存储用户指定的动网格参数的指针

real *position:指向存储位置信息的数组。

此函数没有返回值。

详细实例可参阅FLUENT UDF手册P187.


4、DEFINE_GRID_MOTION

默认情况下,ANSYS FLUENT通过使用固体运动方程来更新动态区域的节点位置。这意味着动态区域的节点之间没有相对运动。但是如果用户需要独立的控制每一个节点的运动的话,则可以通过使用DEFINE_GRID_MOTION宏来实现。例如网格运动UDF可以更新由于流固耦合所导致的弯曲形成的节点坐标。此UDF宏只能用于编译型。

函数说明:

DEFINE_GRID_MOTION(name,d,dt,time,dtime)

参数说明:

name:UDF名

Domain *d:计算域指针

Dynamic_Thread *dt:指向存储了动网格参数的结构的指针

real time:当前时间

real dtime:时间步

返回类型:void。具体实例可参阅FLUENT UDF手册P188


推荐阅读

分享到朋友圈·让更多人获益