最近总有小伙伴向我询问Fluent中的动网格问题,因此决定做一期关于Fluent动网格技术的内容。
动网格技术在流体仿真中很特殊,应用也很广。生活中能够碰到形形色色的包含有部件运动的问题,比如说我现在想要出门,那么开门的一瞬间,门的运动会影响到房间内部的空气流动,这就是一个典型的动网格问题。在工程中,动网格应用也非常的广泛,如依靠转子运动而工作的泵和压缩机、依靠旋翼旋转而飞行的直升机、随海浪起伏的船只、内燃机缸内活塞运动等等。
CFD中才有动网格
为什么只有搞CFD的人才会提动网格这个事儿?
固体结构仿真中并不会有动网格的提法。因为在结构计算中,网格节点的运动位移是要求解计算的基本物理量,而模型边界上的位移则可以直接作为载荷条件输入。结构仿真计算基于拉格朗日坐标系, 每一个网格节点都具有转动和(或)平动自由度,因此节点运动是理所当然的事情。
然而流体计算基于欧拉坐标系,在欧拉坐标系中,计算空间与网格节点保持固定,因此在利用CFD计算流体问题时,要考虑区域中部件的变形或运动,则需要通过特殊的手段来解决。
CFD中运动的解决方案
当前很多的CFD软件都有针对边界或区域运动的解决方案。
商业CFD软件中用得比较多的方法包括:
- 方法一:针对区域运动的单参考系、多参考系及混合平面模型
- 方法二:针对区域运动的滑移网格
- 方法三:针对边界运动及区域运动的动网格
其中方法一为稳态模型,采用的是动参考系模型,在计算过程中,网格实际上并不运动。滑移网格方法中,网格的确是在运动,然而滑移网格只能解决区域运动问题,对于只有区域内各边界以不同规则运动的情况则无能为力。而这些问题都可以采用动网格技术来实现。动网格最接近真实物理状态。
其实还有一种情况,比如说在CFD中可以设定壁面是运动的还是静止的,可以设定运动壁面的平动速度或转动速度。但这仅仅只是边界条件的设定罢了,并未涉及到区域或边界的真实运动,网格也不会产生任何变化。
动网格包含的内容
动网格(Dynamic Mesh)通常包含两个方面的内容:运动方式描述以及网格的处理。
运动方式的描述
在CFD中由于速度是可以求解的量,因此在定义物体部件的运动时常用速度进行表达。
主要有两种类型:
- 显式定义。直接给定运动部件的运动速度。可以是常数,也可以是与时间相关的函数。
- 隐式定义。无法直接获得速度,但是速度可以通过牛顿定律计算得到。
对于可以显示定义的运动方式,我们可以称之为主动运动;而无法直接得到速度的运动方式,可以称之为被动运动。对于被动运动,目前很多主流的CFD求解器都提供了6DOF模型进行解决。
网格的处理
部件的运动势必会影响原始网格,当运动量较大时,可能会导致网格退化,甚至产生负体积。
目前成熟的CFD软件对于动网格中网格的处理主要分为两个阵营:
- 采用网格重构。当部件产生运动后,程序检测部件运动对于初始网格的影响,并对运动后的网格进行重新划分,以确保网格质量能够满足要求。
- 采用重叠网格。重叠网格基本原理很简单,采用两套网格,一套为背景网格,一套为前景网格。部件运动过程中,程序不断的检测背景网格与前景网格的重合区域,并计算交接界面。重叠网格有点儿类似于区域运动,只不过这个区域是叠加在背景网格上而已。
Fluent中的动网格
Fluent中动网格功能非常齐全,对于部件的运动,Fluent提供了Profile及UDF宏来进行定义,只要运动规律能够用数学语言描述,软件可以定义任意复杂程度的运动。
对于网格的处理,Fluent以网格重构(Remeshing)见长,同时还包含了网格光顺方法及动态铺层方法,以应对不同的应用场合。同时在新版本的Fluent中,还加入了Overset重叠网格,对于复杂运动的网格处理提供了更为强大的功能。
在被动运动方面,Fluent可以利用UDF将被动运动转化为主动运动,也可以利用6DOF模型。同时还针对发动机缸内运动提供了in-cylinder运动描述。除此之外,Fluent还提供了接触检测功能以应对边界运动过程中发生的接触问题。
在后续的文章中,我们将会逐步的剖析Fluent处理动网格所采用的方法。
更多CFD资料可微信扫描下方二维码关注微信公众号。