图1 圆柱震荡及其动网格
OpenFOAM中的动网格类型很多,且动网格功能与OpenFOAM中所有其它物理模型都兼容,动网格的使用不影响湍流模型、多相流模型、燃烧模型等其它物理模型的使用。
Part 1
动网格简介
与通用的控制方程区别主要体现在以下两方面:
1 | 控制方程中的体积dV是时间的函数,用来表示网格的形状在计算过程中是随时间变化的。由于网格体积是随时间变化的,当单个时间步内网格体积变化过大会引起网格质量问题,影响计算效果。因此在使用动网格时,要选择合适的时间步防止两次迭代间网格体积变化过大。 |
2 | 在对流项中除了流体的速度,还新增了网格的速度ug,用来表示固体运动等方式带来的网格运动速度。 |
图2 劣质动网格
图3 mesh.update函数
Part 2
动网格的使用方法
在OpenFOAM中通过在算例的constant目录下存放dynamicMeshDict字典调用动网格功能,当求解器检测到constant/dynamicMeshDict字典文件的存在时会自动调用动网格模块。
图4 动网格类型
在画好网格、配置好constant/dynamicMeshDict字典文件后,部分动网格类型还需要在0文件夹下对边界条件做出相应的设置。例如采用基于mesh displacement的动网格求解器需要在0文件夹下添加pointDisplacement字典;采用基于mesh velocity的动网格求解器需要在0文件夹下添加pointMotionU字典等。
Part 3
常见动网格设置
滑移网格
滑移网格常用来计算旋转机械,例如泵、螺旋桨和电风扇等等,几何附近的贴体网格会随着固体转动,远场的网格则保持静止,效果如下图:
图5 滑移网格
在使用滑移网格时,需要在constant/dynamicMeshDict字典文件中需要指定动网格类型为dynamicFvMesh,同时在参数设置中给定旋转域、旋转中心、旋转轴和旋转角速度等等,此外还需要对0文件夹下的边界条件做出相应的设置。
自适应网格
自适应网格是依据加密准则自动加密和稀疏网格,重点捕捉我们关注的梯度场,多用于单向流中捕捉涡结构或多相流中捕捉两相界面,此外还可以捕捉压力梯度、温度梯度和速度梯度等变量突变较大的地方。下图展示的是用自适应网格捕捉溃坝过程中的两相界面,水面抵达之处网格自动加密捕捉流动细节,水面流过之后网格自动稀疏为背景网格。在OpenFOAM中,网格自适应加密需要在背景网格上进行,网格稀疏的过程不会对背景网格进行稀疏。
图6 溃坝及其自适应网格加密
图7 自适应网格计算溃坝效果
重叠网格常用于模拟单个或多个物体的六自由度复杂运动或流固耦合问题。在该方法中,对不同的固体和计算域分别划分网格,形成的多套网格可以在空间内重叠,重叠区域通过合适的插值方法进行联结和共享。各套网格既可以是结构化网格也可以是非结构化网格,只要OpenFOAM支持该网格格式即可,不同的网格在不同的case目录下生成,之后通过mergeMeshes工具整合到主算例目录中,且主算例目录包含background背景网格。之后指定重叠网格的patches和zones就能进行计算了。
图8 重叠网格示意图
图9 重叠网格计算效果
目前,主流版本的OpenFOAM中没有重叠网格技术(www.openfoam.org),仅在ESI版本的OpenFOAM中发行(www.openfoam.com)。按照官方的说法,虽然重叠网格能解决普通网格做不到的复杂运动,但其复杂的理论方法 会导致新的数值耗散,且多套网格间的插值方法是不守恒的。