ANSYS仿真软件Fluent对真实产品进行液晃分析的解决方法
液晃(Sloshing)是液舱晃荡的简称,一般指带有液舱的载具(如船舶、汽车、飞行器等)在环境载荷(如加速度、外力等)的作用下,激励液舱内液体产生晃荡的一种现象。
液舱晃荡的现象广泛存在于多个领域,如船舶、汽车、航天飞机、高铁机车、火箭等。以油船为例,其往往带有很大的液舱,在海上航行时受风浪流的作用影响较大,从而不可避免的发生舱内液体晃荡的现象。一旦晃荡的液体多舱室结构形成的冲击力致使舱壁发生破损,那么舱内的原油将发生泄漏。这种泄漏的原油将对海洋环境和生物造成难以估量的损坏。
液晃问题具有很强的随机性和流动性,其产生的冲击载荷对舱壁具有相当大的破环作用,轻则时舱壁结构变形,重则会使舱壁发生破损;当然,除了对舱壁的影响外,液晃还会明显的影响气液两相间的界面位置,从而对油箱吸油口工作环境产生影响。
随着科技水平的发展,液晃问题在国内外也获得了更高的重视。目前,在晃动理论、微幅晃动、自旋液体晃动、微重力环境下晃动、复杂贮箱结构中液体晃动、非线性大幅晃动等方面的理论研究已经取得了巨大的进步。
但是对于实际的工业品,由于其三维模型复杂、工况多变,因此并不适用于纯理论的研究和分析,为此,通常采用有限元的方法进行真实产品的液晃分析,比如:航空机翼油箱、液体燃料贮箱、载液车辆等。
Fluent中具备完善的物理模型和动网格方法,可以准确描述液晃问题的细节情况,是使用有限元思想进行液晃分析的最佳工具。接下来,本文将从几个技术要点入手,对Fluent中的液晃模型进行简单的介绍。
1、多相流模型
液晃问题通常是包含气液两相的流场研究,而且主要关注气液的交界面情况。因此,必须要采用VOF多相流模型进行分析,才能够准确获取液晃的实际状态。相比之下,Mixture对界面描述的不够精细,欧拉方法的计算量又远超VOF,因此在模型的选择上是不存在任何争议的。
当然,对于VOF模型中的一些子模型,可选择的方法就相对较多,比如Implicit / Explicit Scheme的时间离散化方法,Sharp/Dispersed的交界面类型,Geo-Reconstruct/ Compressive/ Modified HRIC等差值格式。对于这些可选的情况,建议大家根据案例的需求进行选择;当然,不同的模型对应的仿真结果也是有差别的,会对气液界面的情况有较大影响。
2、表面张力和接触角模型
对于使用VOF计算的气液两相问题,就不得不提他们之间的表面张力和接触角。Fluent可以考虑任意多相(气、液、固)之间的表面力和接触的情况,但是需要额外的计算资源,导致总体的求解时间会小幅的增加。
实际上,液晃问题是否考虑表面张力主要取决于无量纲数We。只有当We << 1时表面张力才必须计算,但是根据实际的情况,稍微剧烈一些的液晃情况,对应的We都会远远大于 1,因此,不考虑表面张力与接触角才是合理的。
3、湍流模型
部分流体工程师在仿真之前都会评估流动的雷诺数,从而判断湍流与层流的情况;这是非常好的习惯,值得所有人学习。但是对于液晃的Fluent仿真,却出现了让人头疼的难题:空气粘性较小,评估雷诺数之后是湍流;油的粘性较大,评估雷诺数之后是层流;那么究竟要选哪个湍流模型呢?
这个问题确实存在,由于在Fluent的单个算例之中,无法在A区域使用层流计算的同时将B区域设置为湍流,因此,必须二者选其一才能让仿真继续进行下去。
根据笔者的经验,有以下几种处理方法。
①最严谨的方法:使用非时均的湍流(即大涡模拟相关)模型来做。这样既可以减小在层流区域使用时均湍流模型所产生的误差,又可以精准的计算液晃的实际情况。但是,对应的仿真工作量是极其巨大的,实际的工业仿真中并不适用,仅存在于科研范畴之内。
②最合理的方法:使用时均的湍流模型(如k-w SST等)进行仿真。对于绝大多数的液晃问题(晃动特别稳定的情况除外),都会或多或少的存在液滴飞溅、二次破碎等湍流的情况,因此对这一部分液体使用湍流计算是合理的;同时,另外一部分相对稳定的区域,也可以使用湍流模型来处理,只是该区域粘性力更强,层流占主导,因此对应的湍流强度会很小。当然,这样做的方法一定会带来某种程度上精度的损失,不过对比高精度的大涡方法,计算效率会极大提高,因此是首选方法。
③按照层流计算:如果惯性力没有达到远远超出粘性力的状态,那么对于瞬态问题来讲,使用层流和时均湍流模型计算得到的结果,几乎是没有太大差别的,至少主要的流动状态是完全一致的。因此,使用层流来计算液晃问题,也是可以接受的:既可以减小计算量,还能够得到不俗的精度(对比时均的湍流模型)。
4、传热模型、相变模型、密度模型及其他物理模型
对于通常意义上的液晃计算,是不需要考虑这些额外模型的。因为温度对这一类问题的影响是相对较小的,即使考虑了,在计算结果上也与不考虑的情况相差不大,所以通常忽略这一类温度与传热相关的物理模型。
除了温度之外,与相变相关的模型通常也是不涉及的;当然,剩下的物理模型(如噪声、多则分等)就更不可能实际的应用在液晃问题之中了。
5、网格自适应
液晃问题主要关注气液交界面的情况,因此对于网格的精细化程度要求较高。同时,由于交界面的情况随时间不断的变化,因此,通常无法在网格划分的时候进行局部加密。
为此,液晃问题经常使用网格自适应的方式进行加密处理:对于体积分数梯度较大的区域(气液交界面),采用较为精细的网格,其他区域采用相对粗糙的网格;随着界面的改变,网格自适应的进行瞬态加密,其余非交界的区域,则恢复为初始的粗糙网格状态。
6、液晃问题的两种解决方法:
第一、动网格方法
对于液晃问题,如果我们能够给定液舱的位移(或速度)与时间的关系,那么就可以使用动网格的方法进行仿真。这个时候,我们将静止不动的大地作为固定的全局坐标系,整个液舱的体网格(Cell-Zone)则被固定在运动坐标系之中,其速度与时间的关系按照之前已知的分布来给定(Profile或UDF方法均可)。网格运动的方式没有任何的限制,使用Cell-Zone中的Mesh Motion方法或Dynamic Mesh中的Rigid Body的方法都能够有效达成我们需求的目的。
这样做的方法可以有效的减少问题的难度,便于理解和修改;同时,液晃所展现的场景,也与我们日常观测的情况一致。
这种方法唯一的缺点是:计算量相对较大。由于考虑了网格运动的影响,实际计算中还要求解所有网格的位移量;而且,网格节点的位置更改后,还必须要使用插值的方法才能得到新的变量分布,这些过程实际上都需要耗费额外的计算资源。
那么有没有哪种方法能够有效计算液晃的状态,同时又不需要网格的真实运动呢?答案是有的!
第二、变重力方法
实际上的液舱是运动的,如果我们希望网格固定不动,那么就必须把参考系建立在液舱上才行。根据高中的物理知识,匀速运动的参考系是惯性参考系,加速(或减速)运动的参考系是非惯性参考系,需要考虑惯性力。
液晃的问题,100%都是非惯性参考系(匀速的话就不存在液晃了),因此需要在已有的体积力之外新增惯性力。对于Fluent软件来讲,可以等效为其他方向的“另一种重力”。
当然,实际上想要施加这样一个额外的重力并不容易,需要使用UDF的方法进行力的设定,随后还需要通过Scheme语言进行模型的更新,当然,实际上液晃问题的后处理也是比较考验工程师水准的。由于篇幅所限,变重力方法计算液晃的详细步骤可能再本文中无法展开介绍,还请大家见谅。
图6 变重力方法计算液晃问题
总的来讲,变重力的方法,相对于动网格计算来说,难度会有所增加,求解设置过程也相对要复杂一些;但是仿真求解计算量小,速度块,而且精度高,与实验结果更加吻合,实际上是进行液晃仿真的首选方法。