FLUENT动网格专题讨论Word格式文档下载.docx
《FLUENT动网格专题讨论Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《FLUENT动网格专题讨论Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
2、动网格更新方法
动网格计算中网格的动态变化过程可以用三种模型进行计算,即弹簧近似光滑模型(spring-basedsmoothing)、动态分层模型(dynamiclayering)和局部重划模型(localremeshing)。
●弹簧近似光滑模型
在弹簧近似光滑模型中,网格的边被理想化为节点间相互连接的弹簧。
移动前的网格间距相当于边界移动前由弹簧组成的系统处于平衡状态。
在网格边界节点发生位移后,会产生与位移成比例的力,力量的大小根据胡克定律计算。
边界节点位移形成的力虽然破坏了弹簧系统原有的平衡,但是在外力作用下,弹簧系统经过调整将达到新的平衡,也就是说由弹簧连接在一起的节点,将在新的位置上重新获得力的平衡。
从网格划分的角度说,从边界节点的位移出发,采用虎克定律,经过迭代计算,最终可以得到使各节点上的合力等于零的、新的网格节点位置,这就是弹簧光顺法的核心思想。
原则上弹簧光顺模型可以用于任何一种网格体系,但是在非四面体网格区域(二维非三角形),最好在满足下列条件时使用弹簧光顺方法:
(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*h_0
式中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->
DynamicMesh->
Parameters...
(4)指定移动网格区域的运动参数,菜单操作如下:
Zones...
(5)保存算例文件和数据文件。
(6)预览动网格设置,菜单操作为:
Solve->
MeshMotion...
(7)在计算活塞问题时,设定活塞计算中的事件:
Events...
并可以通过显示阀与活塞的运动,检查上述设置是否正确:
Display->
ICZoneMotion...
(8)应用自动保存功能保存计算结果。
File->
Write->
Autosave...
在动网格计算中,因为每个计算步中网格信息都会改变,而网格信息是储存在算例文件中的,所以必须同时保存算例文件和数据文件。
(9)如果想建立网格运动的动画过程,可以在SolutionAnimation(计算结果动画)面板中进行相关设置。
在这一步中,需要提醒一下,使用动网格进行正式计算之前,最好养成预览动网格更新的习惯;
就是在正式计算前,浏览一下动网格的更新情况,这样可以避免在计算过程中出现动网格更新本身的问题。
在预览更新时,很多人都说会出现负体积的警告,更新不成功,出现这样的问题时,最好先把时间步长改的更小点儿试试,一般来讲,排除UDF本身的原因,出现更新出错的原因都与时间步长有关,这需要结合所使用的更新方法多琢磨。
4、设定动网格参数
为了使用动网格模型,需要在dynamicmesh(动网格)面板中激活DynamicMesh(动网格)选项。
如果计算的是活塞运动,则同时激活In-Cylinder(活塞)选项。
然后选择动网格模型,并设置相关参数。
1)选择网格更新模型
在MeshMethods(网格划分方法)下面选择Smothing(弹簧光顺模型),Layering(动态层模型)和(或)Remshing(局部重划模型)。
2)设置弹簧光顺参数
激活弹簧光顺模型,相关参数设置位于Smoothing(光顺)标签下,可以设置的参数包括SpringConstantFactor(弹簧弹性系数)、BoundaryNodeRelaxation(边界点松弛因子)、
ConvergenceTolerance(收敛判据)和NumberofIterations(迭代次数)。
弹簧弹性系数应该在0到1之间变化,弹性系数等于0时,弹簧系统没有耗散过程,在图中算例中,靠近壁面的网格没有被改变,而是保持了原来的网格形状和密度;
在弹性系数等于1时,弹簧系统的耗散过程与缺省设置相同,从图中可以发现壁面发生变形,壁面附近网格因为过度加密而质量下降。
因此在实际计算中应该在0到1之间选择一个适当的值。
边界点松弛因子用于控制动边界上网格点的移动。
当这个值为零时,边界节点不发生移动;
在这个值为1时,则边界节点的移动计算中不采用松弛格式。
在大多数情况下,这个值应该取为0到1之间的一个值,以保证边界节点以合适的移动量发生移动。
收敛判据就是网格节点移动计算中,迭代计算的判据。
迭代次数是指网格节点移动计算的最大迭代次数。
3)动态层
在Layering(动态层)标签下,可以设置与动态层模型相关的参数。
通过设定Constant
Height(常值高度)与ConstantRatio(常值比例)可以确定分解网格的两种方法。
SplitFactor
(分割因子)和CollapseFactor(合并因子)则分别为上面介绍的alpha_s和alpha_c。
4)局部重新划分网格
在Remeshing(重划网格)标签下,设置与局部重划模型相关的参数。
可以设置的参数包括MaximumCellSkewness(最大畸变率)、MaximumCellVolume(最大网格体积)和MinimumCellVolume(最大网格体积),其含义如前所述,主要用于确定哪些网格需要被
重新划分。
在缺省设置中,如果重新划分的网格优于原网格,则用新网格代替旧网格;
否
则,将保持原网格划分不变。
如果无论如何都要采用新网格的话,则可以在Options(选项)
下面选择MustImproveSkewness(必须改善畸变率)选项。
如果Options(选项)下面的SizeFunction(尺寸函数)被激活,则还可以用网格尺寸分布函数标志需要重新划分的网格。
假设在某点附近的理想网格尺寸为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就是需要设置的SizeFunctionVariation(尺寸函数增量)和SizeFunctionRate(尺寸函数变化率)。
以上两式中,alpha以边界网格尺寸为基准控制内部网格的大小,alpha等于0.5表示内部网格的尺寸至少是边界网格的1.5倍,alpha等于-0.5表示内部网格的尺寸等于边界网格的0.5倍,如果alpha等于0则表示内部网格与边界网格大小相同;
bata的取值在-1到1之间,用于控制网格从边界到内部区域的变化速率。
Beta取正值表示网格变化速率较慢取负值则表示变化速率较快,取0则表示网格从边界到内部区域呈线性变化。
另外一个选项SizeFunctionResolution(尺寸函数分辨率)用于定义尺寸分布函数对网格大小的分辨率,其参照值是最小网格尺寸。
点击Usedefaults(使用缺省值)按钮,可以恢复系统缺省设置。
5)设定活塞运动参数
如果在计算中选择使用In-cylinder(活塞)模型,需要指定CrankShaftSpeed(曲柄速度)、StartingCrankSpeed(曲柄起始速度)、CrankPeriod(曲柄周期)以及CrankAngleStep
Size(曲柄角度时间步长)。
FLUENT中还提供一个内建函数用于计算活塞位置。
这个函数的自变量为曲柄转角,如果选用这个函数,还需要指定PistonStroke(活塞行程)和ConnectingRodLength(连接杆长度)二个参数。
以上的一些参数设定对动网格的更新质量影响很大,如果设置不当,可能引起更新不成功,如果不清楚这些设定因子对更新的影响,可以固定一些参数调节一两个参数查看效果。
另外,在这些更新方法中比较容易出问题的就是Remeshing方法中的一些参数设定:
Remeshing中的参数Minimumlengthscale和MaximumLengthScale,这两个参数你可以参考meshscaleinfo中的值,仅是参考,因为meshscaleinfo中的值是整个网格的评价值,设置的时候看一下动网格附近的网格和整个网格区域的大小比较,然后确定这两个参数,一般来讲,动网格附近的网格较密,这些值都比整体的小,所以在设置时通常设置为比meshscaleinfo中的Minimumlengthscale大一点,比MaximumLengthScale小一点。
5、定义动网格的运动方式
在计算动网格问题时,必须定义动网格区的运动方式。
在动网格区为刚体运动时,可以用型函数和UDF来定义其运动;
在动网格区为变形区域时,则需要定义其几何特征及局部网格重划参数;
如果动网格区既做刚体运动又有变形发生,则只能用UDF来定义其几何形状的变化和运动过程。
上述定义在DynamicZones(动态区域)面板中设置,启动该面板的菜单操作顺序为:
在这个面板中可以修改动态区域的设置、计算刚体运动区域的重心或删除一个动态区域。
方法是首先在DynamicZones(动态区域)列表中选择一个动网格区,然后修改其设置参数,或计算其重心,或进行删除操作,最后点击Create(创建)按钮保存设置。
对于新加入的区域,需要先从ZoneNames(区域名称)下选择相关区域,然后在Type(类型)下选择其运动类型。
可供选择的运动类型包括Stationary(静止)、RigidBody(刚体运动)、Deforming(变形)和User-Defined(用户自定义)四种。
1)静止区域设置
如果被指定区域为静止区域,则首先在ZoneNames(区域名称)下选择这个区域,然在Type(类型)下选择Stationary(静止),再指定AdjacentZone(相邻区域)的CellHeight网格高度)用于网格重新划分,最后点击Create(创建)按钮完成设置。
2)刚体运动区域设置
如果被指定区域为刚体运动区域,则其设置过程如下:
(1)在ZoneNames(区域名称)下选择这个区域的名称,然后在Type(类型)下选择RigidBody(刚体)。
(2)在MotionAttributes(运动属性)标签下的MotionUDF/Profile(用UDF或型函数定义运动)中确定究竟用型函数,还是UDF来做运动定义。
(3)在C.G.Location(重心位置)中定义刚体重心的初始位置。
(4)在C.G.Orentation(重心方向)中定义重力在惯性系中的方向。
(5)如果计算中包含活塞计算,则需要在Valve/PistonAxis(阀门或活塞轴)中指定阀门或活塞的参考轴。
如果在所定义的网格区域中,某种形状的网格单元需要被排除在上述设置之外,则可以在MotionMask(运动屏蔽)中选择这些单元形状。
(6)如果所定义的区域是面区域,则还需要定义CellHeight(网格高度)。
这个参数用于定义局部网格重划时,与面区域相邻的网格的理想高度。
(7)点击Create(创建)按钮,完成设置。
3)变形运动
变形区域的设置过程为:
(1)在ZoneNames(区域名称)中选择区域,并在Type(类型)下选择Deforming(变形)。
(2)在GeometryDefinition(几何定义)下定义变形区的几何特征,共有4个选项:
如果没有合适的几何形状,就在Definition中选择none;
如果变形区为平面,则选择plane(平面)并在PointonPlane(平面上的点)中定义平面上一点,同时在PlaneNormal(平面法向)中定义法线方向;
如果变形区为圆柱面,则选择Cylinder(圆柱),并同时定义CylinderRadius(圆柱半径)、CylinderOrigin(圆柱原点)和CylinderAxis(圆柱轴);
如果变形区几何形状需要用UDF来定义,则在Definition(定义)中选择user-defined(用户定义),并在GeometryUDF(几何UDF)中选择适当的函数。
(3)在RemeshingOptions(重划选项)标签下定义与网格局部重划相关的参数。
重划方法在MeshMethods(网格划分方法)中选择,其中包括Smoothing(弹簧光顺模型)、Layering(动态层模型)和Remeshing(网格重划模型)。
如果动网格区域为面域,则需要设置局部重划模型中的几个参数,包括Height(网格高度)、HeightFactor(高度因子)和MaximumSkewness(最大畸变率)。
如果动网格区域为体积域时,还可以设置MinimumVolume(最小体积)、MaximumVolume(最大体积)和MaximumSkewness(最大畸变率),这项设置可以覆盖系统缺省设置,从而改变网格重划过程。
(4)点击Create(创建)按钮完成设置。
4)用户定义的运动方式
对于同时存在运动和变形的区域,只能使用UDF来定义其运动方式,定义步骤如下:
(1)在ZoneNames(区域名称)中选择需要定义的区域名称,并在Type(类型)下选择User-Defined(用户定义)。
(2)在MotionAttributes(运动属性)标签下,然后在MeshMotionUDF(网格运动UDF)下选择相应的UDF函数。
(3)点击Create(创建)按钮完成设置。
关于UDF函数的编制方法请参见与UDF相关的章节。
补充资料:
FLUENT三种动边界控制实现方法
1)voidDEFINE_CG_MOTION(UDFname,Dynamic_Thread*dt,realvel[],realomega[],realtime,realdtime)。
此函数接口用于控制刚体的运动,用户把刚体质心运动速度和角速度分别赋值给vel和omega,FLUENT根据它们的值来自动计算出边界下一步的位置,从而实现动边界的控制;
刚体质心的位置可以在函数接口界面对话框中定义。
DynamicZones中的dwall就是要控制的动边界,MotionUDF/Profile中的stc1sta010a0ph0就是UDFname,从中可看出它已被制定成用于控制dwall,理论上FLUENT可以通过这种方式实现无穷多个动边界的控制;
C.G.Location用于设定初始位置的质心,C.G.Orientation用于设定刚体的初始角度。
一般适用于刚体本身不变形的运动。
2)voidDEFINE_GEOM(charname,Domain*d,Dynamic_Thread*dt,real*position)。
此函数接口用于控制变形体的边界运动,position就是运动边界上某网格节点的位置值,用户可以通过对其赋值达到控制效果,position[0]对应边界节点的x坐标,position[1]对应y坐标,position[2]对应z坐标;
FLUENT自动遍历所有的边界节点,因此适用于有规律的可以用函数描述的运动边界。
3)voidDEFINE_GRID_MOTION(name,d,dt,time,dtime)。
此函数接口也用于控制形体的边界运动。
主要用于更加复杂的控制,用户需要自己利用FLUENT提供的其他函数来遍历运动边界上的节点,并对其位置进行控制,因此UDF编程比前面两种复杂得多。
它甚至可以事先生成好边界数据,在计算中把数据读入,完成复杂形体控制。
6、预览动网格
在设置好动网格模型及动网格区的运动方式后,可以通过预览的方式检查设置效果。
预览功能在MeshMotion(网格运动)面板中进行设置,启动这个面板的菜单操作为:
预览操作步骤如下:
(1)在参数设置完毕后,首先保存算例(case)文件。
因为与网格设置有关的记录都保存在算例文件中,在预览过程中伴随着网格的更新,与网格有关的记录也不断被刷新,如果不进行保存,则无法恢复原始设置状态,在发现参数设置问题后就无法进行更改了。
(2)