1、动网格虽然瞬态PROFILE文件可以在一定程度上定义网格运动,然而其存在着一些缺陷。最主要的一些缺陷存在于以下一些方面:(1)PROFILE无法精确的定义连续的运动。其使用离散的点值进行插值。如果想获得较为精确的运动定义,势必要定义很多点。(2)一些情况下无法使用profile。比如稳态动网格。在FLUENT中定义网格运动,更多的是采用UDF宏。fluent中与动网格有关的UDF宏一共有5个,其中四个用于常规的网格运动定义,一个用于6DOF模型。这些宏分别为:DEFINE_CG_MOTION、DEFINE_DYNAMIC_ZONE_PROPERTY、DEFINE_GEOM、DEFINE_GRI
2、D_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:线速度。vel0为x方向速度,vel1为y方向速度,vel2为z方向速度real omega:
3、角速度。与线速度定义相同。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(n
4、ame,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_T
5、hread dt:指向存储动网格属性结构的指针real *height: 一个实数指针,指向动态层高度为时间或crank角的函数。返回值:void具体实例参看fluent udf手册P1853、DEFINE_GEOM用户可以使用此宏定义变化区域的几何。默认情况下,ansys fluent提供了机制用于定义节点沿平面或柱面运动。当ansys fluent更新了变形区域上的节点时(例如通过弹簧光顺或局部面重构之后),会通过调用DEFINE_GEOM宏重新定位节点。请注意该宏只能作为编译型UDF使用。函数说明:DEFINE_GEOM(name,d,dt,position)参数说明:name:UDF名
6、Domain *d:指向计算域的指针Dynamic_Thread *dt:指向存储用户指定的动网格参数的指针real *position:指向存储位置信息的数组。此函数没有返回值。详细实例可参阅FLUENT UDF手册P187.4、DEFINE_GRID_MOTION默认情况下,ANSYS FLUENT通过使用固体运动方程来更新动态区域的节点位置。这意味着动态区域的节点之间没有相对运动。但是如果用户需要独立的控制每一个节点的运动的话,则可以通过使用DEFINE_GRID_MOTION宏来实现。例如网格运动UDF可以更新由于流固耦合所导致的弯曲形成的节点坐标。此UDF宏只能用于编译型。函数说明:
7、DEFINE_GRID_MOTION(name,d,dt,time,dtime)参数说明:name:UDF名Domain *d:计算域指针Dynamic_Thread *dt:指向存储了动网格参数的结构的指针real time:当前时间real dtime:时间步返回类型:void。具体实例可参阅FLUENT UDF手册P1886DOF实例1:设置过程对于被动型动网格计算问题,可以采用6DOF动网格模型解决。利用该模型时,需要确定计算模型中运动部件的质量、三方向转动惯量及惯性矩、重心坐标。因此在几何模型创建过程中,尽量使这些值容易获取(比如将重心位置放置在坐标原点),当然这不是必须的,在CAD
8、建模软件中都包含了这些物理量的查询。如图1所示的几何体,在受到图中流动方向的流体作用下,若轴向旋转自由度未被约束,则会产生旋转位移。本次实例几何如图1所示。在建立流体计算域之前,需要利用CAD软件获取几何的特征物理量,我们这里使用Solidworks实现此功能。1、获取几何属性利用solidworks载入几何体,进入【评估】【质量属性】,选择几何体进行计算,如图2所示。图 2 质量属性在计算几何质量属性对话框中,可以点击【选项】按钮,设置材料参数,如图3所示。从图2可以看出,该几何体的重心(0,0,25.19),Z方向惯性矩IZZ=324047.793g*mm2,由于我们的几何体约束了X,Y,
9、Z三方向移动自由度,X,Y方向的旋转自由度,因此只需要Z方向的惯性矩。需要注意的是,这里的单位是mm,而UDF中必须全部为国际单位制,需要做单位转换。2、计算域模型在workbench中的DM中创建计算域模型。主要是利用DM中方便的布尔运算功能。建立的计算域如图4所示。为计算域边界命名,分别命名内部区域面、入口面、出口面、圆柱面边界为:WallRotation、VelocityInlet、Outlet、wallCylinder。计算域建立完毕后即进行网格的划分,这里不详细描述。3、UDF宏的编写利用文本编辑器编写UDF宏文件。如下:#include udf.hDEFINE_SDOF_PROPE
10、RTIES(rotate,prop,dt,time,dtime)propSDOF_MASS = 845.154E-3;propSDOF_IXX= 336179E-9;propSDOF_IYY = 336179E-9;propSDOF_IZZ= 324047.793E-9;propSDOF_ZERO_TRANS_X=TRUE;propSDOF_ZERO_TRANS_Y=TRUE;propSDOF_ZERO_TRANS_Z=TRUE;propSDOF_ZERO_ROT_X=TRUE;propSDOF_ZERO_ROT_Y=TRUE;printf(nstage: updated 6dof prope
11、rties);4、进入FLUENT中设置在FLUENT中主要包括动网格参数的设置。其他设置:瞬态计算、标准K-E湍流模型、标准壁面函数、工作介质为water、入口5m/s,出口静压为0。动网格设置:(1)、激活sixDOF如图5所示,进入Dynamic Mesh面板,激活Dynamic Mesh,勾选Remeshing选项及SixDOF项。(2)、动网格参数设置进入mesh methods下的settings按钮,进入动网格参数设置。图6、图7分别为smoothing与Remeshing的设置。图6 smoothing面板图7 remeshing面板6DOF中的settings设置对话框如图8
12、所示,这里我们不考虑重力影响,设置三方向重力加速度为0。同时勾选write motion history项,记录保存运动中几何姿态。图 8 6DOF设置(3)、编译加载UDF宏利用菜单【Define】【user defined】【function】【Complied】编译宏。(4)、设置动网格区域动网格设置面板中,点击【Create/Edit】按钮定义动网格区域。需要设置的区域如图10所示的红色框选部分。同时注意设置meshing Options标签页下的网格高度。5、需要注意的问题3D动网格问题,首先要注意的是负体积问题。前面说过,由于运动状态由受力状态控制,在计算之前是未知的,所有调整动网格参数比较困难。不过仔细耐心的修正还是可以解决的。其次,关于这类被动运动问题,一些模型较为简单的几何体,实际上是可以化被动为主动,只是计算壁面受力,运动状态通过受力状态用UDF确定。比如此例,我们可以在计算过程中通过宏计算出每次迭代加载在重心上的力和力矩,然后通过力学公式确定几何体的运动状态。这样被动运动问题就变为人为定义运动状态的主动动网格问题。这次几何有点复杂,计算时间比较长,不过主要用于演示6DOF模型的定义。下次使用简单的模型进行演示。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1