强迫振动
Forced Vibration
当一个钝体在均匀来流中进行往复运动,或者处于振荡流中时,其涡脱落的模式就会发生巨大的变化,升阻力系数曲线也随之而改变。在对圆柱绕流的研究中,一些科学家设法使圆柱在均匀来流中以某一频率以及幅值进行往复运动,来研究其产生的涡的形态变化。这种圆柱在周期性的外力作用下的振动称为强迫振动(forced vibration),或受迫振动。
强迫振动对钝体绕流的研究有巨大意义,一来帮助我们揭示“卡门涡街”内在的形成机理,二来对某些需要控制涡脱落的场合有重要的指导意义。一些研究涡激振动的学者们,也会以强迫振动为辅助研究方法,意在理解幅值与升力之间的潜在关系。
本文主要介绍如何在OpenFOAM-v2006中使用重叠网格进行强迫振动算例的设置。算例文件作者已上传到gitee中:
为什么用重叠网格?
有使用动网格经验的小伙伴应该会对此深有体会:当物体运动幅度过大的时候,就会出现一边网格变窄、而另一边网格又变宽的情况,轻者影响精度和计算结果,重者则会使得整个计算发散。为了减轻(无法避免)这个问题的影响,使用者一般都会选择加大计算域范围、加大网格变形范围等,所带来的结果,往往就是网格量变得相当大,计算时间也会增加,带来不必要的计算负担。
重叠网格顾名思义,是关于两层及两层以上的网格的信息交换方法。通过相关的数值格式,将此层网格上的流场量插值到彼层去。最简单的应用,就是以其中一层网格为固定不动的背景网格,另一层为移动的以运动物体为中心的上层网格。从这个特点来考虑,重叠网格的优点是显而易见的:上层网格可以不受约束的在背景网格之上进行任意幅度的运动,而不用担心网格变形带来的影响——网格压根就不会变形。但事物总有其缺点:因为网格层之间的信息是通过一定精度的插值来交换的,所以方程就不守恒了。因此在一些小振幅、网格变化不大的场合,重叠网格反而不是最优解。需要根据情境来选对方法。
前处理:如何准备一个强迫振动算例?
网格的准备
本算例用到两套网格——背景网格圆柱网格(上层网格)。比较简单的就是圆柱网格,只需要通过blockMesh生成圆柱的贴体网格即可(用其他如ICEM的软件也可)。网格如下所示:
如果对流场模拟质量有要求的话,背景网格的生成步骤将会比较繁琐。从blockMesh开始,生成均匀的直角网格:
如果不处理的话,网格量会是正常二维算例的3~4倍,而且计算的时候也会发散。这时,使用OpenFOAM的另一个指令extrudeMesh,取背景网格上下某一面进行extrude(压制),这样就会强行把多层的区域覆盖掉,只留一层z方向的网格,这在OpenFOAM里就是二维算例的网格了(上图右)。
最后,通过mergeMeshes指令,将上下两层网格合并到一起,字面意义上实现重叠:
OpenFOAM对于往复运动有自带的库来实现。强迫振动使得圆柱在流场中以某一频率和幅值往返运动,其运动可由一个正弦函数来定义:
0文件设置初始条件以及边界条件
因为两层网格合并的关系,所以两层网格对应的边界条件会在cylinderAndBackground/0里面一起设置。与常规圆柱绕流相比,多了一类overset边界条件(左为p,右为U):
注意:U文件中的圆柱壁面边界(walls)类型改为movingwallVelocity。由此,程序就会知道哪些边界是具有重叠网格边界性质的,然后就可以按照相关的规则进行插值,传输网格信息了。0文件里还包括pointDisplacement和zoneID文件,都是和重叠网格的设置有关,缺一不可。
system/topoSetDict设置
运 行
后处理-与文献结果的比对
■ 小振幅强迫振动
以下分别为Meneghini结果(上),与本算例结果(下)。
Meneghini结果
本算例结果
可以看到,涡脱落模式与文献的基本一致。
(2)y=0流向速度扰动曲线
升阻力系数稳定后由单一频率主导,出现频率锁定现象。两个算例落在“lock-in”区域,与Meneghini的结果也符合较好。
■ 大振幅强迫振动
(1)涡脱落模式
本算例结果
(2)y=0流向速度扰动曲线
(3)升阻力系数以及频率锁定分析
以下左图为Meneghini结果,右图为本算例结果(A/D=0.65,f/fs=0.80)。
以上主要介绍了基于OpenFOAM-v2006重叠网格的强迫振动算例设置方法。算例结果与文献对比基本符合,说明重叠网格的用法基本正确,可以拓展应用到其它算例。
参考文献: