搜档网
当前位置:搜档网 › 动网格

动网格

动网格
动网格

FLUENT6.1全攻略

图10-16 转子定子模型的静压等值线图

在显示速度矢量时,同样有绝对速度和相对速度两种形式。另外需要注意的是,后处理过程不能在交界区中的壁面、内部、周期等类型的边界上建立数据显示面(surface),但是可以在交界面上建立数据显示面,但结果将是单边的,就是只显示交界面一侧的结果。而且在跨越交接面时,等值线中可能会有细微的不连续。在画三维填充等值线时,图形中可能会出现一些小缝,但是这些缝只是图形显示问题,与解的连续性无关。

10.6 动网格模型

10.6.1 简介

动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。网格的更新过程由FLUENT根据每个迭代步中边界的变化情况自动完成。在使用移动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。可以用边界型函数或者UDF定义边界的运动方式。

FLUENT要求将运动的描述定义在网格面或网格区域上。如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。不同区域之间的网格不必是正则

21

FLUENT6.1全攻略

22

的,可以在模型设置中用FLUENT 软件提供的非正则或者滑动界面功能将各区域连接起来。 10.6.2 动网格守恒方程

在任意一个控制体中,广义标量Φ的积分守恒方程为:

()∫∫∫∫??+??=??+V V Φg V V

dV S A d ΦΓA d u u ρΦV ρΦd dt d G G G G (10-7) 式中ρ为流体密度,u G 为速度向量,g u G 移动网格的网格速度,Γ为扩散系数,ΦS 为

源项,V ?代表控制体V 的边界。

方程(10-7)中的时间导数项,可以用一阶后向差分格式写成:

()()t V V dV dt d n

n V ΔΦ?Φ=Φ+∫ρρρ1 (10-8) 式中n 和n+1代表不同的时间层。n+1层上的V n+1由下式计算:

t dt

dV V V n n Δ+=+1 (10-9) 式中dV/dt 是控制体的时间导数。为了满足网格守恒定律,控制体的时间导数由下式计算:

∫∑??=?=V n j

j j g g f A u A d u dt dV G G G G , (10-10) 式中n f 是控制体积的面网格数,j A G 为面j 的面积向量。点乘j j g A u G G ?,由下式计算:

t

V A u j j j g Δ=?δG G , (10-11) 式中j δV 为控制体积面j 在时间间隔Δt 中扫过的空间体积。

10.6.3 动网格更新方法

动网格计算中网格的动态变化过程可以用三种模型进行计算,即弹簧光滑模型、动态层模型和局部重划模型。

FLUENT6.1全攻略

1. 弹簧光滑模型

在弹簧光滑模型中,网格的边被理想化为节点间相互连接的弹簧。移动前的网格间距相当于边界移动前由弹簧组成的系统处于平衡状态。在网格边界节点发生位移后,会产生与位移成比例的力,力量的大小根据胡克定律计算。边界节点位移形成的力虽然破坏了弹簧系统原有的平衡,但是在外力作用下,弹簧系统经过调整将达到新的平衡,也就是说由弹簧连接在一起的节点,将在新的位置上重新获得力的平衡。从网格划分的角度说,从边界节点的位移出发,采用虎克定律,经过迭代计算,最终可以得到使各节点上的合力等于零的、新的网格节点位置,这就是弹簧光顺法的核心思想。图10-17和图10-18是弹簧光顺法的一个实例,图10-17是网格的初始状态,图10-18是网格在边界运动后达到新的平衡位置。

图10-17 基于弹簧光滑节点开始状况

图10-18基于弹簧光滑节点结束状况

原则上弹簧光顺模型可以用于任何一种网格体系,但是在非四面体网格区域(二维非三角形),最好在满足下列条件时使用弹簧光顺方法:

(1)移动为单方向。

23

FLUENT6.1全攻略

24

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

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

2.动态层模型

对于棱柱型网格区域(六面体和或者楔形),可以应用动态层模型。动态层模型的中心思想是根据紧邻运动边界网格层高度的变化,添加或者减少动态层,即在边界发生运动时,如果紧邻边界的网格层高度增大到一定程度,就将其划分为两个网格层;如果网格层高度降低到一定程度,就将紧邻边界的两个网格层合并为一个层,如图10-19所示:

图10-19 动态层

如果网格层j 扩大,单元高度的变化有一临界值:

()0min 1h h s α+> (10-21)

式中h min 为单元的最小高度,h 0为理想单元高度,s α为层的分割因子。在满足上述条件的情况下,就可以对网格单元进行分割,分割网格层可以用常值高度法或常值比例法。

在使用常值高度法时,单元分割的结果是产生相同高度的网格。在采用常值比例法时,网格单元分割的结果是产生是比例为s α的网格。图10-20与10-21是用常值高度法和常值比例法的结果。

FLUENT6.1全攻略

25

图10-20 用常值高度法分割网格

图10-21 用常值比例法分割网格

若对第j 层进行压缩,压缩极限为:

0min h h c α< (10-22)

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

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

(1)与运动边界相邻的网格必须为楔形或者六面体(二维四边形)网格。

(2)在滑动网格交界面以外的区域,网格必须被单面网格区域包围。

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

(4)如果动态网格附近包含周期性区域,则只能用FLUENT 的串行版求解,但是如

FLUENT6.1全攻略

果周期性区域被设置为周期性非正则交界面,则可以用FLUENT的并行版求解。

如果移动边界为内部边界,则边界两侧的网格都将作为动态层参予计算。如果在壁面上只有一部分是运动边界,其他部分保持静止,则只需在运动边界上应用动网格技术,但是动网格区与静止网格区之间应该用滑动网格交界面进行连接,如图10-22所示。

图10-22 动态层区域与临近区域间应用滑动界面

局部重划模型

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

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

需要注意的是,局部重划模型仅能用于四面体网格和三角形网格。在定义了动边界面以后,如果在动边界面附近同时定义了局部重划模型,则动边界上的表面网格必须满足下列条件:

(1)需要进行局部调整的表面网格是三角形(三维)或直线(二维)。

26

FLUENT6.1全攻略

(2)将被重新划分的面网格单元必须紧邻动网格节点。

(3)表面网格单元必须处于同一个面上并构成一个循环。

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

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

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

10.6.4 动网格问题的建立

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

(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(计算结果动画)面板中进行相关设置。

27

FLUENT6.1全攻略

10.6.6 设定动网格参数

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

图10-23 动网格面板

1.选择网格更新模型

在Mesh Methods(网格划分方法)下面选择Smothing(弹簧光顺模型),Layering(动态层模型)和(或)Remshing(局部重划模型)。

2.设置弹簧光顺参数

激活弹簧光顺模型,相关参数设置位于Smoothing(光顺)标签下,可以设置的参数包括Spring Constant Factor(弹簧弹性系数)、Boundary Node Relaxation(边界点松弛因子)、Convergence Tolerance(收敛判据)和Number of Iterations(迭代次数)。

弹簧弹性系数的影响如图10-24与图10-25所示:弹性系数应该在0到1之间变化,

28

FLUENT6.1全攻略

29

弹性系数等于0时,弹簧系统没有耗散过程,在图中算例中,靠近壁面的网格没有被改变,而是保持了原来的网格形状和密度;在弹性系数等于1时,弹簧系统的耗散过程与缺省设置相同,从图中可以发现壁面发生变形,壁面附近网格因为过度加密而质量下降。因此在实际计算中应该在0到1之间选择一个适当的值。

图10-24 弹性系数为1时的网格

图10-25 弹性系数为0时的网格

边界点松弛因子用于控制动边界上网格点的移动。当这个值为零时,边界节点不发生移动;在这个值为1时,则边界节点的移动计算中不采用松弛格式。在大多数情况下,这个值应该取为0到1之间的一个值,以保证边界节点以合适的移动量发生移动。

收敛判据就是网格节点移动计算中,迭代计算的判据。迭代次数是指网格节点移动计

FLUENT6.1全攻略

30

算的最大迭代次数。

3.动态层

在Layering (动态层)标签下,可以设置与动态层模型相关的参数。通过设定Constant Height (常值高度)与Constant Ratio (常值比例)可以确定分解网格的两种方法。Split Factor (分割因子)和Collapse Factor (合并因子)则分别为式(10-21)中的s α和式(10-22)中的c α。

4.局部重新划分网格

在Remeshing (重划网格)标签下,设置与局部重划模型相关的参数。可以设置的参数包括Maximum Cell Skewness (最大畸变率)、Maximum Cell V olume (最大网格体积)和Minimum Cell V olume (最大网格体积),其含义如前所述,主要用于确定哪些网格需要被重新划分。在缺省设置中,如果重新划分的网格优于原网格,则用新网格代替旧网格;否则,将保持原网格划分不变。如果无论如何都要采用新网格的话,则可以在Options (选项)下面选择Must Improve Skewness (必须改变畸变率)选项。

如果Options (选项)下面的Size Function (尺寸函数)被激活,则还可以用网格尺寸分布函数标志需要重新划分的网格。假设在某点附近的理想网格尺寸为L ,而某个网格的尺寸为'L ,如果:

???????L L L γγ45,5

4' (10-23) 则网格被标志为需要重新划分的网格,并在随后的计算中被重新划分。式(10-23)中的γ用下面公式计算:

当0>α时,βαγ211++=b

d (10-24) 当0<α时,β

αγ?+=111b

d (10-25) 式中b d 为网格到壁面边界的最小距离,α和β就是需要设置的Siz

e Function Variation (尺寸函数增量)和Size Function Rate (尺寸函数变化率)。

在(10-24)和(10-25)两个公式中,α以边界网格尺寸为基准控制内部网格的大小,α等于0.5表示内部网格的尺寸至少是边界网格的1.5倍,α等于-0.5表示内部网格的尺寸等于边界网格的0.5倍,如果α等于0则表示内部网格与边界网格大小相同。β的取值在-1和1之间,用于控制网格从边界到内部区域的变化速率。β取正值表示网格变化速率

FLUENT6.1全攻略

较慢,取负值则表示变化速率较快,取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(连接杆长度)二个参数。

10.6.7 定义动网格的运动方式

在计算动网格问题时,必须定义动网格区的运动方式。在动网格区为刚体运动时,可以用型函数和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(类型)下选

31

FLUENT6.1全攻略

择Rigid Body(刚体)。

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

(3)在C.G. Location(重心位置)中定义刚体重心的初始位置。

(4)在C.G. Orentation(重心方向)中定义重力在惯性系中的方向。

(5)如果计算中包含活塞计算,则需要在Valve/Piston Axis(阀门或活塞轴)中指定阀门或活塞的参考轴。

图10-26 Dynamic Zones(动态区域)面板

如果在所定义的网格区域中,某种形状的网格单元需要被排除在上述设置之外,则可以在Motion Mask(运动屏蔽)中选择这些单元形状。

(6)如果所定义的区域是面区域,则还需要定义Cell Height(网格高度)。这个参数用于定义局部网格重划时,与面区域相邻的网格的理想高度。

(7)点击Create(创建)按钮,完成设置。

32

FLUENT6.1全攻略

3. 变形运动

变形区域的设置过程为:

(1)在Zone Names(区域名称)中选择区域,并在Type(类型)下选择Deforming (变形)。

(2)在Geometry Definition(几何定义)下定义变形区的几何特征,共有4个选项:如果没有合适的几何形状,就在Definition中选择none;如果变形区为平面,则选择plane (平面)并在Point on Plane(平面上的点)中定义平面上一点,同时在Plane Normal(平面法向)中定义法线方向;如果变形区为圆柱面,则选择Cylinder(圆柱),并同时定义Cylinder Radius(圆柱半径)、Cylinder Origin(圆柱原点)和Cylinder Axis(圆柱轴);如果变形区几何形状需要用UDF来定义,则在Definition(定义)中选择user-defined(用户定义),并在Geometry UDF(几何UDF)中选择适当的函数。

(3)在Remeshing Options(重划选项)标签下定义与网格局部重划相关的参数。重划方法在Mesh Methods(网格划分方法)中选择,其中包括Smoothing(弹簧光顺模型)、Layering(动态层模型)和Remeshing(网格重划模型)。如果动网格区域为面域,则需要设置局部重划模型中的几个参数,包括Height(网格高度)、Height Factor(高度因子)和Maximum Skewness(最大畸变率)。如果动网格区域为体积域时,还可以设置Minimum V olume(最小体积)、Maximum V olume(最大体积)和Maximum Skewness(最大畸变率),这项设置可以覆盖系统缺省设置,从而改变网格重划过程。

(4)点击Create(创建)按钮完成设置。

4. 用户定义的运动方式

对于同时存在运动和变形的区域,只能使用UDF来定义其运动方式,定义步骤如下:(1)在Zone Names(区域名称)中选择需要定义的区域名称,并在Type(类型)下选择User-Defined(用户定义)。

(2)在Motion Attributes(运动属性)标签下,然后在Mesh Motion UDF(网格运动UDF)下选择相应的UDF函数。

(3)点击Create(创建)按钮完成设置。

关于UDF函数的编制方法请参见与UDF相关的章节。

10.6.8 预览动网格

在设置好动网格模型及动网格区的运动方式后,可以通过预览的方式检查设置效果。预览功能在Mesh Motion(网格运动)面板中进行设置,启动这个面板的菜单操作为:Solve -> Mesh Motion...

预览操作步骤如下:

(1)在参数设置完毕后,首先保存算例(case)文件。因为与网格设置有关的记录都

33

FLUENT6.1全攻略

保存在算例文件中,在预览过程中伴随着网格的更新,与网格有关的记录也不断被刷新,如果不进行保存,则无法恢复原始设置状态,在发现参数设置问题后就无法进行更改了。

图10-27 Mesh Motion(网格运动)面板

(2)设置迭代时间步数和时间步长。在计算过程中,当前时间将被显示在Current Mesh Time(当前网格时间)栏中。如果在计算中选用了活塞模型选项,则时间步长用曲柄速度(shaft speed)和曲柄转动步长(crank angel step size)计算得出。

(3)为了在图形窗口中预览网格变化过程,需要激活Display Options(显示选项)下的Display Grid(显示网格),并在Display Frequency(显示频率)中设置显示频率,即每分钟显示图幅数量。如果要保存显示的图形,则同时激活Save Hardcopy(保存硬拷贝)选项。

(4)点击Preview(预览)按钮开始预览。

在定义了活塞运动时,活塞运动的预览是在IC Zone Motion(活塞运动)面板中实现的,激活这个面板的菜单操作为:

Display -> IC Zone Motion...

图10-28 IC Zone Motion(活塞运动)面板

34

FLUENT6.1全攻略

35

预览操作的具体步骤为:

(1)在Display Grid (显示网格)面板中选择准备预览的网格区域。

(2)在IC Zone Motion (网格运动)面板中,设置曲柄角度增量(Increment )和迭代步数(Number of Steps )。

(3)点击Preview (预览)按钮开始预览。

10.6.9 定义活塞事件

在计算活塞运动时,可以通过定义活塞事件(events )的方式,在计算中增加问题的复杂度,使计算更接近真实情况。这些事件都是以曲柄角度为自变量的,比如可以将打开排气阀的时间定义为曲柄角度的函数,然后在曲柄转到这个角度时,开始打开排气阀操作,等等。下面介绍定义活塞事件的具体步骤和事件种类,从这些介绍中可以了解活塞事件的基本概念和使用方法。

1. 活塞事件的设置步骤

活塞事件在Dynamic Mesh Events (动网格事件)面板中定义,如图10-29所示。

图10-29 Dynamic Mesh Events (动网格事件)面板

启动这个面板的菜单操作次序为:

Define -> Dynamic Mesh -> Events...

FLUENT6.1全攻略

活塞事件设置步骤为:

(1)在Number of Events(事件数量)栏中输入需要定义的事件数量。

(2)在Name(名称)下面输入事件名称。

(3)在At Crank Angel(曲柄角度)下输入事件发生的曲柄角度。

(4)点击Define(定义)按钮进入Define Event(定义事件)面板做详细定义,如图10-30。

图10-30 Define Event(定义事件)面板

(5)在Type(类型)下面选择动网格运动类型,可供选择的运动类型包括Change Zone Type(改变网格区域类型)、Copy Zone BC(拷贝网格区域边界条件)、Create Sliding Interface (创建滑动网格交界面)、Delete Sliding Interface(删除滑动网格交界面)、Change Motion Attribute(改变运动属性)、Change Time Step Size(改变时间步长)、Insert Boundary Layer (插入边界层)、Remove Boundary Layer(删除边界层)、Insert Interior Layer(插入内部网格层)和Remove Interior Layer(删除内部网格层)等。在确定了事件类型后,还需要对所选运动类型做进一步设置,详细情况请参见下一小节中的内容。

36

FLUENT6.1全攻略

(6)对其他事件重复(2)到(5)的设置过程。

(7)将所有事件设置完毕后,点击Apply(应用)按钮保存所有设置。

(8)在Dynamic Mesh Events(动网格事件)面板中点击Preview(预览)按钮,预览上述设置的事件。

2. 活塞事件

在上一小节中讲到的各种事件类型的含义如下:

(1)Change Zone Type(改变网格区域类型)。在计算过程中可以改变网格区域的类型,即将网格类型在wall(壁面)、interface(交界面)、fluid(流体)和solid(固体)等类型之间进行转换。在New Zone Type(新网格区域类型)中指定一种类型,则当曲柄运动到相应位置时,指定网格区域类型就会发生转换。

(2)Copy Zone BC(拷贝网格区域边界条件)。在网格区域类型改变后,原来设置在网格上的边界条件也要发生相应的变化,这种变化可以通过拷贝另一个区域的边界条件实现,即在设定改变网格区类型的同时,设定拷贝边界条件事件,在网格类型发生改变时,随即从另一个边界上拷贝其边界条件作为新类型下网格区域的边界条件。

(3)Creating Sliding Interface(创建滑动网格交界面)。在选择了这个事件类型后,需要定义构成交界面的两个面,即两个相邻网格区域Interface Zone 1(交界面区1)和Interface Zone 2(交界面区2)。在这里不用考虑界面类型转换的问题,系统会自动将定义为交界面区的网格区域转换为内部面类型。

(4)Deleting Sliding Interface(删除滑动网格交界面)。在选择了这个事件类型后,需要在Interface Name(界面名称)中指定将被删除的交界面。在删除界面后,界面所在网格区域将被自动转换为壁面,如果不准备采用系统缺省设置的壁面条件的话,可以考虑如(2)中提示的那样,从其他壁面上拷贝边界。

(5)Change Motion Attribute(改变运动属性)。可以用这个事件类型修改网格运动类型。选择了这个事件类型后,需要在Attribute(运动属性)中指定一种运动类型,可以选择的类型包括sliding(滑动)、moving(移动)和remesh(网格重划),同时在Status(状态)中选择enable(激活)或disable(关闭)。

(6)Change Time Step(改变时间步长)。在Crank Angel Step Size(曲柄角度步长)中输入新的步长,可以修改迭代的时间步长)。

(7)Insert Boundary Cell Layer(插入边界网格层)。选择这个事件类型后,需要指定Base Dynamic Zone(基础动网格区)和Side Dynamic Zone(临近动网格区)。边界层网格将以基础动网格区为起点生成,临近动网格区就是网格即将发生变形的区域。

(8)Deleting Boundary Cell Layer(删除边界网格层)。这个事件类型选项与(7)中的事件相对应,在选择这个选项后,只要指定Base Dynamic Zone(基础动网格区)就可以将插入的边界网格删除。

(9)Insert Interior Cell Layer(插入内部网格层)。如同插入边界网格层一样,这项操作也需要指定Base Dynamic Zone(基础动网格区)和Side Dynamic Zone(临近动网格区),

37

FLUENT6.1全攻略

不同的是还需要为新生成的界面命名,即指定Internal Zone 1 Name(内部网格区1名称)和Internal Zone 2 Name(内部网格区2名称)。

(10)Remove Interior Cell Layer(删除内部网格层)。选择这个事件选项后,只要指定被删除的网格区名称,Internal Zone 1 Name(内部网格区1名称)和Internal Zone 2 Name (内部网格区2名称)即可。

3. 输入输出活塞事件

在Dynamic Mesh Events(动网格事件)面板上,点击Write...(输出)按钮可以将设置好的活塞事件以文件形式输出到磁盘上;点击Read...(输入)按钮可以将活塞事件文件读入计算模型。

4. 活塞计算中初始网格的生成

可以在dynamesh-mesh-control文本菜单下,用文本命令position-starting-mesh设置活塞的初始位置,例如:

/define/models/dynamic-mesh-controls> position-starting-mesh

Start Crank Angle (deg) [0] 340

即将初始位置设置在曲柄转角为340°处。

在进行活塞计算的设置中,需要妥善处理动网格的拓扑关系、活塞和阀门的运动属性、进气阀和排气阀的开关以及活塞事件的先后次序,尽量全面、合理地进行设置,以保证计算能顺利完成。

38

动网格的入门专题

题记:在学习使用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)移动方向垂直于边界。 如果两个条件不满足,可能使网格畸变率增大。另外,在系统缺省设置中,只有四面体网格(三维)和三角形网格(二维)可以使用弹簧光顺法,如果想在其他网格类型中激活该模型,

动网格

FLUENT6.1全攻略 图10-16 转子定子模型的静压等值线图 在显示速度矢量时,同样有绝对速度和相对速度两种形式。另外需要注意的是,后处理过程不能在交界区中的壁面、内部、周期等类型的边界上建立数据显示面(surface),但是可以在交界面上建立数据显示面,但结果将是单边的,就是只显示交界面一侧的结果。而且在跨越交接面时,等值线中可能会有细微的不连续。在画三维填充等值线时,图形中可能会出现一些小缝,但是这些缝只是图形显示问题,与解的连续性无关。 10.6 动网格模型 10.6.1 简介 动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。网格的更新过程由FLUENT根据每个迭代步中边界的变化情况自动完成。在使用移动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。可以用边界型函数或者UDF定义边界的运动方式。 FLUENT要求将运动的描述定义在网格面或网格区域上。如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。不同区域之间的网格不必是正则 21

FLUENT6.1全攻略 22 的,可以在模型设置中用FLUENT 软件提供的非正则或者滑动界面功能将各区域连接起来。 10.6.2 动网格守恒方程 在任意一个控制体中,广义标量Φ的积分守恒方程为: ()∫∫∫∫??+??=??+V V Φg V V dV S A d ΦΓA d u u ρΦV ρΦd dt d G G G G (10-7) 式中ρ为流体密度,u G 为速度向量,g u G 移动网格的网格速度,Γ为扩散系数,ΦS 为 源项,V ?代表控制体V 的边界。 方程(10-7)中的时间导数项,可以用一阶后向差分格式写成: ()()t V V dV dt d n n V ΔΦ?Φ=Φ+∫ρρρ1 (10-8) 式中n 和n+1代表不同的时间层。n+1层上的V n+1由下式计算: t dt dV V V n n Δ+=+1 (10-9) 式中dV/dt 是控制体的时间导数。为了满足网格守恒定律,控制体的时间导数由下式计算: ∫∑??=?=V n j j j g g f A u A d u dt dV G G G G , (10-10) 式中n f 是控制体积的面网格数,j A G 为面j 的面积向量。点乘j j g A u G G ?,由下式计算: t V A u j j j g Δ=?δG G , (10-11) 式中j δV 为控制体积面j 在时间间隔Δt 中扫过的空间体积。 10.6.3 动网格更新方法 动网格计算中网格的动态变化过程可以用三种模型进行计算,即弹簧光滑模型、动态层模型和局部重划模型。

结构化网格和非结构化网格

1. 什么是结构化网格和非结构化网格 1.1结构化网格 从严格意义上讲,结构化网格是指网格区域内所有的内部点都具有相同的毗邻单元。 它可以很容易地实现区域的边界拟合,适于流体和表面应力集中等方面的计算。它的主要优点是: 网格生成的速度快。 网格生成的质量好。 数据结构简单。 对曲面或空间的拟合大多数采用参数化或样条插值的方法得到,区域光滑,与实际的模型更容易接近。 它的最典型的缺点是适用的范围比较窄,只适用于形状规则的图形。尤其随着近几年的计算机和数值方法的快速发展,人们对求解区域的几何形状的复杂性的要求越来越高,在这种情况下,结构化网格生成技术就显得力不从心了。 1.2非结构化网格 同结构化网格的定义相对应,非结构化网格是指网格区域内的内部点不具有相同的毗邻单元。即与网格剖分区域内的不同内点相连的网格数目不同。从定义上可以看出,结构化网格和非结构化网格有相互重叠的部分,即非结构化网格中可能会包含结构化网格的部分。 2.如果一个几何造型中既有结构化网格,也有非结构化网格,分块完成的,分别生成网格后,也可以直接就调入fluent中计算。 3.在fluent中,对同一个几何造型,如果既可以生成结构化网格,也可生成非结构化网格,当然前者要比后者的生成复杂的多,那么应该选择哪种网格,两者计算结果是否相同,哪个的计算结果更好些呢? 一般来说,结构网格的计算结果比非结构网格更容易收敛,也更准确。但后者容易做。 影响精度主要是网格质量,和你是用那种网格形式关系并不是很大,如果结构话网格的质量很差,结果同样不可靠,相对而言,结构化网格更有利于计算机存储数据和加快计算速度。

结构化网格据说计算速度快一些,但是网格划分需要技巧和耐心。非结构化网格容易生成,但相对来说速度要差一些。 4.在gambit中,只有map和submap生成的是结构化网格,其余均为非结构化网格。 采用分块网格划分的时候,在两个相邻块之间设置了connected,但是这两个块我要用不同尺寸的网格来划分。比如说我用结构化的六面体网格来划分,一遍的尺寸为2,另一边的尺寸为3,这时候公共边界面该怎么处理?如果采用cooper 的格式来划分这个网格,尺寸就是前面所说的,该怎么来做呢? 我用单独的两个块试过,就是在公共边界上采用interface的格式,但是由于与这个公共边界相邻的另一个边界也不得不用interface格式,结果导入fluent 的时候就说can not creat a bound loop,也不清楚这是什么问题。 如果中间面两侧的面网格一致,可以直接在fluent中merge,如果不一致,可以设interface 网格的正交性是指三个方向上的网格边之间互相垂直的程度。一般而言,三维网格单元中,三个方向上的网格边之间的夹角越接近90度则质量越好。这一点在规则区域(例如正方形方腔)很容易实现,但对于流动区域比较复杂的问题则非常困难。但一般情况下,应当保证所有的网格单元内的网格边夹角大于10度,否则网格本身就会引入较大的数值误差。 EquiSize Skew(尺寸扭曲率)和EquiAngle Skew(角度扭曲率)是评判网格质量最主要标准,其值越小,网格质量越高 一般来说,Fluent要求扭曲率3D小于0.85,2D小于0.75。 关于复杂模型和gambit中的实体及虚体 模型比较复杂,是在pro/E中建的模,然后用igs导入gambit,不过这样就产生了很多碎线和碎面并且在一些面交界的地方还存在尖角。我曾经做成功过把它们统统merge成一个虚面,中间设置了一个可以容忍尖角的参数,也可以划分网格,但把生成的msh文件导入fluent就会出错,这是virtual geometry的原因还是因为尖角的原因?还有,virtual geometry和普通的真实的几何体到底有什么区别?好像最大的区别是virtual geometry不能进行布尔操作,布尔操作(boolean operation)又是什么?使用virtual geometry需要注意哪些问题?virtual geometry是很头疼的问题。你把它们统统merge成一个虚面 按理说全是虚的也是可以算的。可能是因为尖角的原因,虚实最大差别:是virtual geometry不能进行布尔操作,boolean operation即是并 对于复杂外形的网格生成,不可避免的会用到virtual geometry,virtual face ,和virtual edge等, 1。作网格的时候,把所有的面全部合成一个虚面的做法不好,特别是对于复杂外形的网格生成,你最好在模型变化剧烈的地方多分几个面,这样会更有效的控制网格能够在模型表面曲率比较大的地方能够生成规则的结构或者非结构网格。

Fluent动网格专题讨论

Fluent动网格专题讨论(-) 题记:在学习使用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扩大,单元高度的变化有一临界值:

FLUENT 动网格教程

FLUENT动网格教程 摘自https://www.sodocs.net/doc/0e8338301.html,/dvbbs/dispbbs.asp?boardid=61&id=1396题记:在学习使用Fluent的时候,有不少朋友需要使用动网格模型(Dynamic Me sh Model),因此,本版推出这个专题,进行大讨论,使大家在使用动网格时尽量少走弯路,更快更好地掌握;也欢迎使用过的版友积极参与讨论指导,谢谢!。 该专题主要包括以下的主要内容: §一、动网格的相关知识介绍; §二、以NACA0012翼型俯仰振荡实例进行讲解动网格的应用过程; §三、与动网格应用有关的参考文献; §四、使用动网格进行计算的一些例子。 §一、动网格的相关知识介绍 有关动网格基础方面的东西,请具体参考FLUENT User’s Guide或FLUENT全攻略的相关章节,这里只给出一些提要性的知识要点。 1、简介 动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。网格的更新过程由FLUE NT 根据每个迭代步中边界的变化情况自动完成。在使用动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。可以用边界型函数或者UDF定义边界的运动方式。FLUENT 要求将运动的描述定义在网格面或网格区域上。如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。不同区域之间的网格不必是正则的,可以在模型设置中用FLUENT软件提供的非正则或者滑动界面功能将各区域连接起来。 注:一般来讲,在Fluent中使用动网格,基本上都要使用到UDF,所以你最好具备一定的C语言编程基础。

FLUENT动网格技术简介

FLUENT动网格简介 在固体有限元计算中,网格运动实非什么稀奇事儿。而且在绝多数固体计算的基本物理量是网格的节点位移,所以,固体计算中,网格节点运动是对的,没有运动反而不正常了。也可以这么说:正因为计算域内部节点间的相对运动,才导致了内应力的产生。 流体计算与固体完全不同。其根源在于它们使用的网格类型不同。当前固体有限元计算采用的是拉格朗日网格,而流体计算则大多数采用的欧拉网格。如果说把拉格朗日网格中的节点点看作是真实世界的物质原子的话,那么欧拉网格的节点则好比是真实世界中的一个个传感器,它们总是呆在相同的位置,真实的记录着各自位置上的物理量。正常情况下,欧拉网格系统是这样的:计算域和节点保持位置不变,发生变化的是物理量,网格节点就像一个个布置在计算域中的传感器,记录该位置上的物理量。这其实是由流体力学研究方法所决定的。宏观与微观的差异决定了固体力学计算采用拉格朗日网格,流体计算采用欧拉网格。关于这部分的详细解说,可以参阅任何一本计算流体动力学书籍。 世界是公平的。有利必有弊。朗格朗日网格适合计算节点位移,然而对于过大的网格变形却难以处理。欧拉网格生来可以处理大变形(因为节点不动),然而对于对于节点运动的处理,则是其直接软肋。然而很不幸的是,现实生活中有太多网格边界运动的实例。如汽车发动机中的气缸运动、阀门开启与关闭、机翼的运动、飞机投弹等等等等举不胜举。 计算流体动力学计算的基本物理量通常为:速度、温度、压力、组分。并不计算网格节点位移。因此要让网格产生运动,通常给节点施加的物理约束是速度。CFD中的动网格大体分为两类:(1)显式规定的网格节点速度。配合瞬态时间,即可很方便的得出位移。当然一些求解器(如FLUENT)也支持稳态动网格,这时候可以直接指定节点位移。(2)网格节点速度是通过求解得到的。如6DOF 模型基本上都属于此类。用户将力换算成加速度,然后将其积分成速度。 对于第一类动网格问题,在fluent中通常可以使用profile与UDF进行网格设置,通过规定节点或区域的速度、角速度或位移等方式来显式确定网格的运动,通常大部分的动网格问题都归于此类。而对于第二类问题,通常涉及到力的计算,力在流体中通常是对压力进行积分而来。将力转换为速度或位移,一般涉及到加

动网格流沙版完美整理.

动网格 让网格动起来(1)—闲谈动网格 在固体有限元计算中,网格运动实非什么稀奇事儿。而且在绝多数固体计算的基本物理量是网格的节点位移,所以,固体计算中,网格节点运动是对的,没有运动反而不正常了。也可以这么说:正因为计算域内部节点间的相对运动,才导致了内应力的产生。 流体计算与固体完全不同。其根源在于它们使用的网格类型不同。当前固体有限元计算采用的是拉格朗日网格,而流体计算则大多数采用的欧拉网格。如果说把拉格朗日网格中的节点点看作是真实世界的物质原子的话,那么欧拉网格的节点则好比是真实世界中的一个个传感器,它们总是呆在相同的位置,真实的记录着各自位置上的物理量。正常情况下,欧拉网格系统是这样的:计算域和节点保持位置不变,发生变化的是物理量,网格节点就像一个个布置在计算域中的传感器,记录该位置上的物理量。这其实是由流体力学研究方法所决定的。宏观与微观的差异决定了固体力学计算采用拉格朗日网格,流体计算采用欧拉网格。关于这部分的详细解说,可以参阅任何一本计算流体动力学书籍。 世界是公平的。有利必有弊。朗格朗日网格适合计算节点位移,然而对于过大的网格变形却难以处理。欧拉网格生来可以处理大变形(因为节点不动),然而对于对于节点运动的处理,则是其直接软肋。然而很不幸的是,现实生活中有太多网格边界运动的实例。如汽车发动机中的气缸运动、阀门开启与关闭、机翼的运动、飞机投弹等等等等举不胜举。 计算流体动力学计算的基本物理量通常为:速度、温度、压力、组分。并不计算网格节点位移。因此要让网格产生运动,通常给节点施加的物理约束是速度。CFD中的动网格大体分为两类:(1)显式规定的网格节点速度。配合瞬态时间,即可很方便的得出位移。当然一些求解器(如FLUENT)也支持稳态动网格,这时候可以直接指定节点位移。(2)网格节点速度是通过求解得到的。如6DOF模型基本上都属于此类。用户将力换算成加速度,然后将其积分成速度。 对于第一类动网格问题,在fluent中通常可以使用profile与UDF进行网格设置,通过规定节点或区域的速度、角速度或位移等方式来显式确定网格的运动,通常大部分的动网格问题都归于此类。而对于第二类问题,通常涉及到力的计算,力在流体中通常是对压力进行积分而来。将力转换为速度或位移,一般涉及到加速度、转动惯量等物理量的计算。在fluent 中,可以使用6DOF模型进行处理,在CFX中,可以使用刚体模型(13.0以上版本才有)。在FLUENT中,动网格涉及的内容包括: (1)运动的定义。主要是PROFILE文件与UDF中的动网格宏。 (2)网格更新。FLUENT中关于网格更新方法有三种:网格光顺、动态层、网格重构。 需要详细了解这些网格更新方法的运作机理,每个参数所代表的具体含义及设置方法,每种方法的适用范围。 动网格的最在挑战来自于网格更新后的质量,避免负体积是动网格调试的主要目标。在避免负网格的同时,努力提高运动更新后的网格质量。

ICEM CFD动网格学习

FLUENT动网格教程 该专题主要包括以下的主要内容: §一、动网格的相关知识介绍; §二、以NACA0012翼型俯仰振荡实例进行讲解动网格的应用过程; §三、与动网格应用有关的参考文献; §四、使用动网格进行计算的一些例子。 §一、动网格的相关知识介绍 有关动网格基础方面的东西,请具体参考FLUENT User’s Guide或FLUENT全攻略的相关章节,这里只给出一些提要性的知识要点。 1、简介 动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。网格的更新过程由FLUE NT 根据每个迭代步中边界的变化情况自动完成。在使用动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。可以用边界型函数或者UDF定义边界的运动方式。FLUENT 要求将运动的描述定义在网格面或网格区域上。如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。不同区域之间的网格不必是正则的,可以在模型设置中用FLUENT软件提供的非正则或者滑动界面功能将各区域连接起来。 注:一般来讲,在Fluent中使用动网格,基本上都要使用到UDF,所以你最好具备一定的C语言编程基础。 2、动网格更新方法 动网格计算中网格的动态变化过程可以用三种模型进行计算,即 弹簧近似光滑模型(spring-based smoothing)、 动态分层模型(dynamic layering) 局部重划模型(local remeshing)

径向基函数在动网格中的应用及可并行性研究

4 ·技术?/? TECHNOLOGY ·科研信息化技术与应用2012, 3(5): 4–12 径向基函数在动网格中的应用及可并行性研究 马文鹏,陆忠华,胡晓东 中国科学院计算机网络信息中心 超级计算中心,北京 100190摘 要: 关键词: Applications of Radial Basis Functions in Dynamic Mesh and Its Parallelizability Ma Wenpeng, Lu Zhonghua, Hu Xiaodong Supercomputing Center, Computer Network Information Center , Chinese Academy of Sciences , Beijing 100190, China Abstract: 径向基函数广泛应用于网格变形、气动外形优化设计、网格优化等领域。近年来,基于径向基函数的动网格技术得到了深入的研究和广泛的应用。本文结合计算流体力学和高性能计算的应用背景,从径向基函数对网格的变形质量和变形效率进行了总结和进一步研究:在网格变形方面,重点对比了不同基函数对同一网格运动变形能力和同一基函数对不同网格运动的适应能力;在网格变形效率方面,分析了算法在计算和存储的瓶颈所在,考虑了? OpenMP 和?GPU 这两种共享内存的加速方式,得到较好加速比。最后,分析了当网格规模增大时,动网格在分布式计算和存储模型?(MPI) 下的处理方法。 径向基函数;径向函数;动网格;网格变形;并行 Radial basis functions are widely used for mesh deformation, aerodynamic shape optimization, grid optimization, etc. Recently, dynamic mesh techniques based on radial basis functions are widely used and much more attention is paid to them. This paper summaries the quality and efficiency of mesh deformation with the applications of radial basis functions on both CFD (Computational Fluid Dynamics) and HPC (High Performance Computing). In addition, a further research is conducted on the following two aspects: the abilities to satisfy the same mesh motion among different radial basis functions and the abilities to satisfy different mesh motion using one radial basis function; computation and storage bottleneck are analyzed and then parallel solutions based on shared memory models including OpenMP and GPU are considered 基金项目:国家高技术研究发展计划 (863 计划) (2012AA01A304);国家自然科学基金 (91130019)

结构化网格与非结构化网格比较

对于连续的物理系统的数学描述,如航天飞机周围的空气的流动,水坝的应力 集中等等,通常是用偏微分方程来完成的。为了在计算机上实现对这些物理系统的行为或状态的模 拟,连续的方程必须离散化,在方程的求解域上(时间和空间)仅仅需要有限个点,通过 计算这些点上的未知变量既而得到整个区域上的物理量的分布。有限差分,有限体积和有限元等数值方法都是通过这种方法来 实现的。这些数值方法的非常重要的一个部分就是实现对求解区域的网格剖分。 网格剖分技术已经有几十年的发展历史了。到目前为止,结构化网格技术发展 得相对比较成熟,而非结构化网格技术由于起步较晚,实现比较困难等方面的 原因,现在正在处于逐渐走向成熟的阶段。下面就简要介绍一些这方面的情况。 从严格意义上讲,结构化网格是指网格区域内所有的内部点都具有相同的毗邻 单元。 结构化网格生成技术有大量的文献资料[1,2,3,4]。结构化网格有很多 优点: 1.它可以很容易地实现区域的边界拟合,适于流体和表面应力集中等方面的计算。 5.对曲面或空间的拟合大多数采用参数化或样条插值的方法得到,区域光滑, 与实际的模型更容易接近。 它的最典型的缺点是适用的范围比较窄。尤其随着近几年的计算机和数值方法 的快速发展,人们对求解区域的复杂性的要求越来越高,在这种情况下,结构 化网格生成技术就显得力不从心了。 代数网格生成方法。主要应用参数化和插值的方法,对处理简单的求解区域十 分有效。 同结构化网格的定义相对应,非结构化网格是指网格区域内的内部点不具有相 同的毗邻单元。即与网格剖分区域内的不同内点相连的网格数目不同。从定义 上可以看出,结构化网格和非结构化网格有相互重叠的部分,即非结构化网格 中可能会包含结构化网格的部分。 非结构化网格技术从六十年代开始得到了发展,主要是弥补结构化网格不能够 解决任意形状和任意连通区域的网格剖分的缺欠.到90年代时,非结构化网格的文献达到了它的高峰时期.由于非结构化网格的生成技术比较复杂,随着人们对 求解区域的复杂性的不断提高,对非结构化网格生成技术的要求越来越高.从现 在的文献调查的情况来看,非结构化网格生成技术中只有平面三角形的自动生

3模型的网格划分解析

3 模型的网格划分 当用户点击Operation工具框中的Mesh命令按钮时,GAMBIT将打开Mesh子工具框。Mesh子工具框包含的命令按钮允许用户对于包括边界层、边、面、体积和组进行网格划分操作。 与每个Mesh子工具框命令设置相关的图标如下。 本章以下部分将详细说明与上面列举的每个命令按钮相关的命令。 3.1 边界层 3.1.1 概述 边界层确定在与边和/或者面紧邻的区域的网格节点的步长。它们用于初步控制网格密度从而控制相交区域计算模型中有效信息的数量。 示例 作为边界层应用的一个示例,考虑包括一个代表流体流过管内的圆柱的计算模型。在正常环境下,很可能在紧靠管道壁面的区域内流体速度梯度很大,而靠近管路中心很小。通

过对壁面加入一个边界层,用户可以增大靠近壁面区域的网格密度并减小靠近圆柱中心的网格密度——从而获得表征两个区域的足够的信息而不过分的增大模型中网格节点的总数。 一般参数 要确定一个边界层,用户必须设定以下信息: ?边界层附着的边或者面 ?确定边界层方向的面或者体积 ?第一列网格单元的高度 ?确定接下来每一列单元高度的扩大因子 ?确定边界层厚度的总列数 用户还可以设定生成过渡边界层——也就是说,边界层的网格节点类型随着每个后续层而变化。如果用户设定了这样一个边界层,用户必须同时设定以下信息: ?边界层过渡类型 ?过度的列数 3.1.2 边界层命令

生成边界层 Create Boundary Layer命令允许用户在一条边或者一个面附近定义网格节点步长。 要生成一个边界层,用户必须设定以下参数: ?定义 ?过渡特性 ?附着实体和方向 设定边界层定义 要定一边界层,用户必须设定两类特征: ?尺寸 ?内部连续性 ?角形状 尺寸特征包括诸如边界层列数以及第一列高度等因数。内部连续性特征确定边界层重叠在相邻边界层印记上的印记行为。角形状特征确定网格在连接边界层与附着边的Corner 或者Reversal点周围区域的网格形状。 设定尺寸特征 要设定边界层的尺寸特征,用户必须设定以下四个参数中的三个: ?第一列高度 ?增长因子 ?列数 ?总高度 上面列举的前三个参数定义如下(如图3-1): ?第一列高度(a)设定边界层附着的边或者面与网格节点第一个完整列之间的距离。 ?增长因子提供一个比例 b/a 其中b是第一和第二个完整列之间的距离,a是第一列高度。边界层中任意两列之间的距离等于前面两列之间的距离乘以增长因数。 ?列数(n)设定边界层中完整列的总数。 所有三个参数都影响边界层的总厚度(D)。

动网格技术的研究

Fluent中被动运动Six DOF (2016-01-30 10:07:51) 转载▼ 利用CFD软件解决动网格问题,通常可分为以下两类: (1)主动型动网格 主动型动网格问题通常指的是边界运动规律及运动状态已知,可由软件使用者通过函数或程序进行描述。在程序计算过程中,求解器调用动网格运动轨迹描述程序实现边界运动。这类动网格例子很多,如各类泵、风扇等。 (2)被动型动网格 被动型动网格问题通常是指其边界运动规律往往是未知的,常常需要通过计算边界上的力或力矩,以此来求取动网格的运动规律。在这类动网格计算设置中,网格变化规律难以预料,导致网格参数经常需要进行多次调整才能达到目的。这类例子在现实中也很多,比如风力发电机的叶轮、水轮机等。 解决主动型动网格问题比较容易,利用CFD软件提供的动网格模拟能力很容易解决。需要关注的地方是边界运动后,网格节点如何重新布置和生成。如在FLUENT软件中,其动网格主要包括三种网格功能:Smoothing、Layering、Remeshing。利用Remeshing 功能几乎可以解决所有主动型动网格问题。 那被动型动网格问题怎么处理呢?一般来说,这类边界的运动都是由于内部流体对其压力所造成的,那么就涉及到力和力矩计算的问题。对于这类问题,在FLUENT软件中可以采用Six DOF模型进行计算。

需要注意的是,以上所有类型动网格计算均以刚性移动边界为前提,即不考虑由于流体作用力导致的边界变形。若要计算边界变形,则需要采用流固耦合方法,利用固体求解器计算被动型动网格中的力和力矩,均是压力对面的积分计算而来。 下面介绍一下Six DOF运用方法: 在FLUENT中利用Six DOF是需要定义UDF宏的。该宏的定义形式如下: DEFINE_SDOF_PROPERTIES(name, properties, dt ,time ,dtime) 函数中: Name:宏名称 Real *properties:存储6DOF属性的数组 Dynamic_Thread *dt:存储制定的动网格属性 Real time:当前时间 Real dtime:时间步长 该UDF宏没有返回值。用户需要定义的变变量为name、properties、dt、dtime。在利用该UDF宏的过程中,需要注意的是properties数组,其包含多种属性:SDOF_MASS //质量,定义方式如properties[SDOF_MASS]=7.0定义质量7kg SDOF_IXX,SDOF_IYY,SOF_IZZ,//X、Y、Z方向惯性矩 SDOF_IXY,SDOF_IXZ,SDOF_IYZ,//惯性积 SDOF_LOAD_LOCAL,//布尔值,FALSE为全局坐标系,TRUE为体坐标系(局部坐标系),默认为FALSE SDOF_LOAD_F_X,SDOF_LOAD_F_Y,SDOF_LOAD_F_Z,//X,Y,Z方向外力

基于三维网格模型的网格排布优化技术综述

科学与财富 0引言 近年来,随着计算机图形软硬件技术的提高及人们对绘制效果的要求越来越高,计算机图形学研究和应用呈现出场景对象越加复杂,对绘制真实感的要求越来越高,显示分辨率不断递增,模型趋于复杂化,数据精度要求较高等问题。基于此提出了提高绘制性能的主要途径:GPU加速技术,并行绘制技术,可见性剔除技术,网格简化技术,多分辨率绘制技术,存储访问优化技术,基于图像的绘制技术,图像和网格压缩技术,基于预计算的绘制技术等。 对于计算机硬件性能的不断提高,存储访问带宽与计算能力的差距越来越大,因此缓存访问效率成为影响应用程序运行效率的关键因素。而要改善缓存的性能有以下几种方法:①降低缓存访问失配率;②降低失配损失;③通过并行技术降低失配率或是失配损失;④减少命中缓存的时间。降低缓存访问失配率,可以从提高缓存硬件性能与编译优化等方面来解决,其原理是:通过调整指令顺序和数据的使用顺序,增强代码和数据使用的时间局部性和空间局部性特征,从而提高缓存命中率。体系结构方面,通过缓存硬件性能来提高缓存访问效率。应用程序方面,采用编译优化不需要修改或者增加硬件,可分为计算重排和数据重排。 计算重排,根据重新排列指令顺序,提高访问相同数据单元指令的局部性,通常由编译器对应用程序编译后的指令序列进行重排来完成,对于指令,重新组织程序而不影响程序的正确性。数据重排,根据指令对数据单元的访问方式求解出缓存连贯的数据排布,由应用程序直接对数据进行重排来完成,通过优化改善了数据的空间局部性和时间局部性[1]。目前网格排布优化技术是计算机图形学与可视化领域的重点研究方向之一,该技术基于数据重排,通过对网格图元的存储顺序进行重新排序,能够减少平均缓存访问失配率,提高大型三维网格模型和大规模虚拟场景的处理和绘制性能。 2网格排布优化技术 顶点缓存的访问性能通常用平均缓存失配率(ACMR)来衡量,定义为绘制每个三角形的平均缓存失配次数,即缓存的总失配次数与总访问次数之比,ACMR的取值范围为[0.5,3.0],因为每个顶点至少失配一次,至多失配三次。需要注意的是,ACMR无法达到最小值,主要是因为顶点缓存区容量的限制。若顶点缓存区可以装下所有顶点,则以任何方式组织的三角形都可以使ACMR接近于0.5。但是缓存容量很小,很难装下所有的顶点,并且网格的形状也会导致ACMR额外的开销。 2.2.1网格排布优化方法的分类 网格排布优化技术是图排布理论的应用与引伸,根据不同的划分方式可以将网格排布优化技术分成不同的类。根据求解技术手段的不同,网格排布优化技术可分为基于优化策略、基于空间填充曲线和基于谱序列三类[1],现代的GPU使用一个小的缓冲区来存储最近需要访问的顶点,为了最大化的利用好顶点缓存用于快速渲染的优点,对三角形进行重排序是必要的,基于优化策略即使用了这一优点。基于空间填充曲线是对二维或者三维规则网格单元的一种具有较好空间局部性的特殊线性遍历方法,是在某种程度上保留局部相关性的多维网格单元遍历。基于谱序列方法是通过特定的线性算子推导出相关的特征性、特征向量以及特征空间投影,并利用这些特征量和组合求解出问题。因为谱序列是求解图排布问题的一个有效引导策略,所以也可以应用到网格排布技术中。 根据网格描述方式的不同,可分为基于三角形、基于三角形条带、基于三角形扇[3],或者简单分为基于条带和基于非条带两种方式,每种描述方式又可分为索引形式和三角形汤形式。三角形扇和三角形条带类似,但是不如三角形条带灵活,所以很少使用。索引形式只需少量数据,传输代价小,使之成为目前使用最为普遍的方式,但顶点随机读取也带来了ACMR的增加。因此许多研究者提出对网格图元的存储顺序进行重新排布,可以减小 ACMR,降低顶点处理的运算量,提高渲染速度。 2.2.2三角形排布优化算法的介绍 为提高网格模型的处理和绘制性能,现代图形卡使用顶点缓冲器来提高顶点缓存命中率,使模型在绘制过程中减少发送的顶点数据。有效利用顶点缓冲器,在已有的图形绘制流水线基础上,通过重新排列网格模型图元的线性序列,增加缓存中顶点的命中率。下面对国内外几种常见的相关算法做一个简要的介绍。 Hoppe(Hoppe.1999)提出了一种贪心条带算法生成三角形序列[4],该算法是基于优化策略和三角形条带的研究,核心思想是沿着逆时针方向生成条带,进行三角形条带合并,在合并的过程中不断检测预期的ACMR。此算法针对一个预先指定的缓存大小,比如16,对算法进行优化求解,使用FI-FO策略对三角形进行重排,采用了三角形条带索引模式。Hoppe算法可以得到很低的平均缓存失配率,其运算时间复杂度高于O(m),该算法也存在一些待解决的问题,在网格的顶点索引中很难确定三角形的拓扑方向,对可能合并入条带的三角形进行ACMR的预估会增加算法的复杂度。Bogomjakov等人(2002)提出的面向具有任意大小的FIFO缓存的通用序列构造算法(称为BoG算法)[5],是一种最具代表性的空间填充曲线。该算法把Hilbert空间填充曲线和MLA空间填充曲线的应用推广到不规则三角网格,使用图划分软件包Metis将网格分成多个三角形簇,保证每个簇内三角形序列的ACMR最优,从而形成整个网格的ACMR最优化。该算法在相同缓存参数前提下,AMCR指比Hoppe算法增大20%左右,分割的切割边上的失配率对整体失配率有影响。 Lin等人(Lin and Thomas.2006)算法则是基于贪心优化策略的3D渲染多边形网格序列生成算法[6],该算法适用于非条带三角形的排布优化,可以应用于渐进网格,应用启发式条件对网格顶点进行全局搜索,同样可以得到很低的平均缓存失配率,其运算时间复杂度也高于O(m)。核心思想是赋予每个顶点一个缓存访问代价度量,选择代价度量最小的顶点作为当前输出顶点,找到与该顶点邻接的所有未输出三角形,按顺时针方向访问并逐一将这些三角形的顶点压入缓存中,最后以三角形环为单位逐一输出三角形,并在整个网格中对下一个需要输出的三角形环进行全局最优性搜索。Nehab等人(Nehab et al.2006)提出了一种多功能三角形序列重排算法[7],该算法不仅能减少顶点缓存的平均缓存失配率,而且能减少图元的重绘率(通过深度测试的片元总数与最终可见的像素总数之比),作者首先提出通过局部优化减少顶点处理时间,同时通过三角形序列重排减少像素处理时间是自相矛盾的,原因是基于视点的深度排序会毁掉顶点缓存性能,且局部优化会导致当前视点下的高度透支。基于此提出了基于优化策略的多功能三角形序列重排算法,实现两者之间的融合。 Sander等人(Sander et al.2009)对Lin等人算法进行了改进,使三角形排布适用于动态模型[8]。其核心思想是以顶点在缓存中的位置作为代价度量,选出代价度量最小的顶点作为当前顶点,即以三角形环作为计算单位,然后输出与该顶点邻接的所有未输出三角形(随机访问),与Lin等人算法 基于三维网格模型的网格排布优化技术综述 娄自婷 (云南师范大学信息学院,云南昆明650500) 摘要:网格排布优化技术通过对网格图元的存储顺序进行重新排序,能够减少平均缓存访问失配率,提高大型三维网格模型和大规模虚拟场景的处理和绘制性能。文中综述了网格排布优化技术的研究进展,分析比较了基于优化策略、基于空间填充曲线和基于谱序列的网格排布优化方法。 关键词:三维网格模型,网格排布优化;ACMR A Survey of mesh layout optimization for3D mesh models LOU Ziting (College of computer science and information technology,Yunnan Normal University,Kunming City Yunnan Province650500,China) Abstract:The mesh layout technology through storage order of the mesh primitive reorder,can reduce the average cache miss rate and improve the process-ing and rendering performance of large3D mesh models and large-scale virtual scene.This paper gives an introduction to advances in technology mesh layout optimization.We analyze and compare the mesh layout optimization method based optimization strategy,space-filling curve and spectral sequences. Keywords:3D mesh models,Mesh layout optimization;ACMR 科学论坛 536

相关主题