FLUENT动网格专题讨论

2019-08-20 19:32

动网格专题讨论

题记:在学习使用Fluent的时候,有不少朋友需要使用动网格模型(Dynamic Mesh Model),因此,本版推出这个专题,进行大讨论,使大家在使用动网格时尽量少走弯路,更快更好地掌握;也欢迎使用过的版友积极参与讨论指导,谢谢! 该专题主要包括以下的主要内容: ##1. 动网格的相关知识介绍;

##2. 以NACA0012翼型俯仰振荡实例进行讲解动网格的应用过程; ##3. 与动网格应用有关的参考文献; ##4. 使用动网格进行计算的一些例子。 ##1. 动网格的相关知识介绍

有关动网格基础方面的东西,请具体参考FLUENT User’s Guide或FLUENT全攻略的相关章节,这里只给出一些提要性的知识要点。 1、简介

动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。网格的更新过程由FLUENT 根据每个迭代步中边界的变化情况自动完成。在使用动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。可以用边界型函数或者UDF 定义边界的运动方式。FLUENT 要求将运动的描述定义在网格面或网格区域上。如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。不同区域之间的网格不必是正则的,可以在模型设置中用FLUENT软件提供的非正则或者滑动界面功能将各区域连接起来。

注:一般来讲,在Fluent中使用动网格,基本上都要使用到UDF,所以你最好具备一定的C语言编程基础。 2、动网格更新方法

动网格计算中网格的动态变化过程可以用三种模型进行计算,即弹簧近似光滑模型(spring-based smoothing)、动态分层模型(dynamic layering)和局部重划模型(local remeshing)。 弹簧近似光滑模型

在弹簧近似光滑模型中,网格的边被理想化为节点间相互连接的弹簧。移动前的网格间距相当于边界移动前由弹簧组成的系统处于平衡状态。在网格边界节点发生位移后,会产生与位移成比例的力,力量的大小根据胡克定律计算。边界节点位移形成的力虽然破坏了弹簧系统原有的平衡,但是在外力作用下,弹簧系统经过调整将达到新的平衡,也就是说由弹簧连接在一起的节点,将在新的位置上重新获得力的平衡。从网格划分的角度说,从边界节点的位移出发,采用虎克定律,经过迭代计算,最终可以得到使各节点上的合力等于零的、新的网格节点位置,这就是弹簧光顺法的核心思想。 原则上弹簧光顺模型可以用于任何一种网格体系,但是在非四面体网格区域(二维非三角形),最好在满足下列条件时使用弹簧光顺方法: (1)移动为单方向。

(2)移动方向垂直于边界。

如果两个条件不满足,可能使网格畸变率增大。另外,在系统缺省设置中,只有四面体网格(三维)和三角形网格(二维)可以使用弹簧光顺法,如果想在其他网格类型中激活该模型,需要在dynamic-mesh-menu 下使用文字命令spring-on-all-shapes?,然后激活该选项即可。

动态层模型

对于棱柱型网格区域(六面体和或者楔形),可以应用动态层模型。动态层模型的中心思想是根据紧邻运动边界网格层高度的变化,添加或者减少动态层,即在边界发生运动时,如果紧邻边界的网格层高度增大到一定程度,就将其划分为两个网格层;如果网格层高度降低到一定程度,就将紧邻边界的两个网格层合并为一个层: 如果网格层j扩大,单元高度的变化有一临界值: H_min>(1+alpha_s)*h_0

式中h_min为单元的最小高度,h_0为理想单元高度,alpha_s为层的分割因子。在满足上述条件的情况下,就可以对网格单元进行分割,分割网格层可以用常值高度法或常值比例法。在使用常值高度法时,单元分割的结果是产生相同高度的网格。在采用常值比例法时,网格单元分割的结果是产生是比例为alpha_s的网格。 若对第j层进行压缩,压缩极限为: H_min

式中alpha_c为合并因子。在紧邻动边界的网格层高度满足这个条件时,则将这一层网格与 外面一层网格相合并。

动网格模型的应用有如下限制:

(1)与运动边界相邻的网格必须为楔形或者六面体(二维四边形)网格。 (2)在滑动网格交界面以外的区域,网格必须被单面网格区域包围。

(3)如果网格周围区域中有双侧壁面区域,则必须首先将壁面和阴影区分割开,再用 滑动交界面将二者耦合起来。

(4)如果动态网格附近包含周期性区域,则只能用FLUENT 的串行版求解,但是如果周期性区域被设置为周期性非正则交界面,则可以用FLUENT 的并行版求解。 如果移动边界为内部边界,则边界两侧的网格都将作为动态层参与计算。如果在壁面上只有一部分是运动边界,其他部分保持静止,则只需在运动边界上应用动网格技术,但是动网格区与静止网格区之间应该用滑动网格交界面进行连接。 局部重划模型

在使用非结构网格的区域上一般采用弹簧光顺模型进行动网格划分,但是如果运动边界的位移远远大于网格尺寸,则采用弹簧光顺模型可能导致网格质量下降,甚至出现体积为负值的网格,或因网格畸变过大导致计算不收敛。为了解决这个问题,FLUENT 在计算过程中将畸变率过大,或尺寸变化过于剧烈的网格集中在一起进行局部网格的重新划分,如果重新划分后的网格可以满足畸变率要求和尺寸要求,则用新的网格代替原来的网格,如果新的网格仍然无法满足要求,则放弃重新划分的结果。

在重新划分局部网格之前,首先要将需要重新划分的网格识别出来。FLUENT 中识别不合乎要求网格的判据有二个,一个是网格畸变率,一个是网格尺寸,其中网格尺寸又分最大尺寸和最小尺寸。在计算过程中,如果一个网格的尺寸大于最大尺寸,或者小于最小尺寸,或者网格畸变率大于系统畸变率标准,则这个网格就被标志为需要重新划分的网格。在遍历所有动网格之后,再开始重新划分的过程。局部重划模型不仅可以调整体网格,也可以调整动边界上的表面网格。

需要注意的是,局部重划模型仅能用于四面体网格和三角形网格。在定义了动边界面以后,如果在动边界面附近同时定义了局部重划模型,则动边界上的表面网格必须满足下列条件: (1)需要进行局部调整的表面网格是三角形(三维)或直线(二维)。 (2)将被重新划分的面网格单元必须紧邻动网格节点。 (3)表面网格单元必须处于同一个面上并构成一个循环。

(4)被调整单元不能是对称面(线)或正则周期性边界的一部分。

动网格的实现在FLUENT 中是由系统自动完成的。如果在计算中设置了动边界,则FLUENT 会根据动边界附近的网格类型,自动选择动网格计算模型。如果动边界附近采用的是四面体网格(三维)或三角形网格(二维),则FLUENT 会自动选择弹簧光顺模型和局部重划模型对网格进行调整。如果是棱柱型网格,则会自动选择动态层模型进行网格调整。在静止网格区域则不进行网格调整。

动网格问题中对于固体运动的描述,是以固体相对于重心的线速度和角速度为基本参数加以定义的。既可以用型函数定义固体的线速度和角速度,也可以用UDF 来定义这两个参数。同时需要定义的是固体在初始时刻的位置。

注:这一小节主要讲述了动网格的更新方法,最好能掌握,尤其是各种方法的适用范围,通常来讲,在一个case中,我们使用的更新方法都是根据网格类型以及和要实现的运动来选择的,很多时候都是几种更新方法搭配起来使用的。 总结一下:

使用弹簧近似光滑法网格拓扑始终不变,无需插值,保证了计算精度。但弹簧近似光滑法不适用于大变形情况,当计算区域变形较大时,变形后的网格会产生较大的倾斜变形,从而使网格质量变差,严重影响计算精度。动态分层法在生成网格方面具有快速的优势,同时它的应用也受到了一些限制。它要求运动边界附近的网格为六面体或楔形,这对于复杂外形的流场区域是不适合的。使用局部网格重划法要求网格为三角形(二维)或四面体(三维),这对于适应复杂外形是有好处的,局部网格重划法只会对运动边界附近区域的网格起作用。 3、动网格问题的建立

设置动网格问题的步骤如下:

(1)在Solver(求解器)面板中选择非定常流(unsteady)计算。 (2)设定边界条件,即设定壁面运动速度。

(3)激活动网格模型,并设定相应参数,菜单操作如下: Define -> Dynamic Mesh -> Parameters...

(4)指定移动网格区域的运动参数,菜单操作如下: Define -> Dynamic Mesh -> Zones... (5)保存算例文件和数据文件。 (6)预览动网格设置,菜单操作为: Solve -> Mesh Motion...

(7)在计算活塞问题时,设定活塞计算中的事件: Define -> Dynamic Mesh -> Events...

并可以通过显示阀与活塞的运动,检查上述设置是否正确: Display -> IC Zone Motion...

(8)应用自动保存功能保存计算结果。 File -> Write -> Autosave...

在动网格计算中,因为每个计算步中网格信息都会改变,而网格信息是储存在算例文件中的,所以必须同时保存算例文件和数据文件。

(9)如果想建立网格运动的动画过程,可以在Solution Animation(计算结果动画)面板中进行相关设置。

注:在这一步中,需要提醒一下,使用动网格进行正式计算之前,最好养成预览动网格更新的习惯;就是在正式计算前,浏览一下动网格的更新情况,这样可以避免在计算过程中出现动网格更新本身的问题。在预览更新时,很多人都说会出现负体积的警告,更新不成功,出现这样的问题时,最好先把时间步长改的更小点儿试试,一般来讲,排除UDF本身的原因,出现更新出错的原因都与时间步长有关,这需要结合所使用的更新方法多琢磨。

4、设定动网格参数 为了使用动网格模型,需要在dynamic mesh(动网格)面板中激活Dynamic Mesh(动网格)选项。如果计算的是活塞运动,则同时激活In-Cylinder(活塞)选项。然后选择动网格模型,并设置相关参数。 1)选择网格更新模型

在Mesh Methods(网格划分方法)下面选择Smothing(弹簧光顺模型),Layering(动态层模型)和(或)Remshing(局部重划模型)。 2)设置弹簧光顺参数 激活弹簧光顺模型,相关参数设置位于Smoothing(光顺)标签下,可以设置的参数包括Spring Constant Factor(弹簧弹性系数)、Boundary Node Relaxation(边界点松弛因子)、 Convergence Tolerance(收敛判据)和Number of Iterations(迭代次数)。

弹簧弹性系数应该在0 到1 之间变化,弹性系数等于0 时,弹簧系统没有耗散过程,在图中算例中,靠近壁面的网格没有被改变,而是保持了原来的网格形状和密度;在弹性系数等于1 时,弹簧系统的耗散过程与缺省设置相同,从图中可以发现壁面发生变形,壁面附近网格因为过度加密而质量下降。因此在实际计算中应该在0 到1 之间选择一个适当的值。边界点松弛因子用于控制动边界上网格点的移动。当这个值为零时,边界节点不发生移动;在这个值为1 时,则边界节点的移动计算中不采用松弛格式。在大多数情况下,这个值应该取为0 到1 之间的一个值,以保证边界节点以合适的移动量发生移动。 收敛判据就是网格节点移动计算中,迭代计算的判据。迭代次数是指网格节点移动计算的最大迭代次数。 3)动态层

在Layering(动态层)标签下,可以设置与动态层模型相关的参数。通过设定Constant

Height(常值高度)与Constant Ratio(常值比例)可以确定分解网格的两种方法。Split Factor (分割因子)和Collapse Factor(合并因子)则分别为上面介绍的alpha_s和alpha_c。 4)局部重新划分网格

在Remeshing(重划网格)标签下,设置与局部重划模型相关的参数。可以设置的参数包括Maximum Cell Skewness(最大畸变率)、Maximum Cell Volume(最大网格体积)和Minimum Cell Volume(最大网格体积),其含义如前所述,主要用于确定哪些网格需要被

重新划分。在缺省设置中,如果重新划分的网格优于原网格,则用新网格代替旧网格;否 则,将保持原网格划分不变。如果无论如何都要采用新网格的话,则可以在Options(选项) 下面选择Must Improve Skewness(必须改善畸变率)选项。如果Options(选项)下面的Size Function(尺寸函数)被激活,则还可以用网格尺寸分布函数标志需要重新划分的网格。假设在某点附近的理想网格尺寸为L ,而某个网格的尺寸为L' ,如果: L’不属于[0.8*gamma*L,1.25*gamma*L]

则网格被标志为需要重新划分的网格,并在随后的计算中被重新划分。式中的gamma用下面的公式计算:

当alpha>0时,gamma=1+alpha*d_b^(1+2*beta) 当alpha<0时,gamma=1+alpha*d_b^[(1-beta)^-1] 式中d_b为网格到壁面边界的最小距离,alpha和beta就是需要设置的Size Function Variation(尺寸函数增量)和Size Function Rate(尺寸函数变化率)。

以上两式中,alpha以边界网格尺寸为基准控制内部网格的大小,alpha等于0.5表示内部网格的尺寸至少是边界网格的1.5倍,alpha等于-0.5表示内部网格的尺寸等于边界网格的0.5倍,如果alpha等于0则表示内部网格与边界网格大小相同;bata的取值在-1到1之间,用于控制网格从边界到内部区域的变化速率。Beta取正值表示网格变化速率较慢取负值则表

示变化速率较快,取0 则表示网格从边界到内部区域呈线性变化。

另外一个选项Size Function Resolution(尺寸函数分辨率)用于定义尺寸分布函数对网格大小的分辨率,其参照值是最小网格尺寸。

点击Use defaults(使用缺省值)按钮,可以恢复系统缺省设置。 5)设定活塞运动参数

如果在计算中选择使用In-cylinder(活塞)模型,需要指定Crank Shaft Speed(曲柄速度)、Starting Crank Speed(曲柄起始速度)、Crank Period(曲柄周期)以及Crank Angle Step Size(曲柄角度时间步长)。

FLUENT 中还提供一个内建函数用于计算活塞位置。这个函数的自变量为曲柄转角,如果选用这个函数,还需要指定Piston Stroke(活塞行程)和Connecting Rod Length(连接杆长度)二个参数。

注:以上的一些参数设定对动网格的更新质量影响很大,如果设置不当,可能引起更新不成功,如果不清楚这些设定因子对更新的影响,可以固定一些参数调节一两个参数查看效果。另外,在这些更新方法中比较容易出问题的就是Remeshing方法中的一些参数设定:Remeshing中的参数Minimum length scale和Maximum Length Scale,这两个参数你可以参考mesh scale info中的值,仅是参考,因为mesh scale info中的值是整个网格的评价值,设置的时候看一下动网格附近的网格和整个网格区域的大小比较,然后确定这两个参数,一般来讲,动网格附近的网格较密,这些值都比整体的小,所以在设置时通常设置为比mesh scale info中的Minimum length scale大一点,比Maximum Length Scale小一点。 5、定义动网格的运动方式

在计算动网格问题时,必须定义动网格区的运动方式。在动网格区为刚体运动时,可以用型函数和UDF 来定义其运动;在动网格区为变形区域时,则需要定义其几何特征及局部网格重划参数;如果动网格区既做刚体运动又有变形发生,则只能用UDF 来定义其几何形状的变化和运动过程。

上述定义在Dynamic Zones(动态区域)面板中设置,启动该面板的菜单操作顺序为: Define -> Dynamic Mesh -> Zones...

在这个面板中可以修改动态区域的设置、计算刚体运动区域的重心或删除一个动态区域。方法是首先在Dynamic Zones(动态区域)列表中选择一个动网格区,然后修改其设置参数,或计算其重心,或进行删除操作,最后点击Create(创建)按钮保存设置。

对于新加入的区域,需要先从Zone Names(区域名称)下选择相关区域,然后在Type(类型)下选择其运动类型。可供选择的运动类型包括Stationary(静止)、Rigid Body(刚体运动)、Deforming(变形)和User-Defined(用户自定义)四种。 1)静止区域设置

如果被指定区域为静止区域,则首先在Zone Names(区域名称)下选择这个区域,然在Type(类型)下选择Stationary(静止),再指定Adjacent Zone(相邻区域)的Cell Height网格高度)用于网格重新划分,最后点击Create(创建)按钮完成设置。 2)刚体运动区域设置

如果被指定区域为刚体运动区域,则其设置过程如下:

(1)在Zone Names(区域名称)下选择这个区域的名称,然后在Type(类型)下选择Rigid Body(刚体)。

(2)在Motion Attributes(运动属性)标签下的Motion UDF/Profile(用UDF 或型函数定义运动)中确定究竟用型函数,还是UDF 来做运动定义。

(3)在C.G. Location(重心位置)中定义刚体重心的初始位置。 (4)在C.G. Orentation(重心方向)中定义重力在惯性系中的方向。


FLUENT动网格专题讨论.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高考考纲英语3500词汇冲刺配套练习无答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: