weixin 发表于 2018-4-23 16:11

计算气动声学CAA若干学习经验分享,强烈推荐!

  在论坛上看到越来越多的人也在做气动声学相关的东西,颇有得遇同道中人的喜悦。本人在硕士阶段就开始接触一些气动声学相关的东西,工作后主要的研究内容就更专一了:航空声学。工作一年后,通过各种乱七八糟的学习过程,对计算气动声学有了更多的理解。受版主水若无痕的影响(他是我的同学),因此打算在此写个与计算气动声学(CAA)相关的东西,和大家交流交流。


  对气动声学的关注始于上世纪的50年代,原因就是当时涡喷式航空发动机的喷流噪声实在是太吓人了。于是,牛逼的莱特希尔(Lighthill)坐在火车上,在一个信封上一顿写,就把N-S方程给改写成了波动方程的形式。方程的左边是一个经典声学的波动方程,而右边则是一个主要与湍流相关的源项,被后人称为莱特希尔应力张量。这就是所谓的莱特希尔方程了,气动声学的开山之作。莱尔希尔方程的声源为四极子声源,也就是湍流噪声源,主要适用于高速、湍流为主要噪声源的情况,如高速喷流。方程的声源项未知,需要采用CFD或者试验来获取。

  再后来,柯尔(Curler)同志对莱特希尔方程进一步发展,得出了考虑了固壁影响的柯尔方程。柯尔方程主要适用于低速情况下的固壁绕流噪声计算,如低速的圆柱绕流、机翼绕流等。此时,气动噪声源主要为偶极子声源,声源的强度为声源表面对流体的作用力。这种作用力不单是压力,还包括表面动量流量。当然,对于固壁来说,法向速度为零,也就没有动量流量了,因此采用固壁表面作为声源面时,只需要壁面的压力脉动即可。而在采用通流面作为积分面时,则需要考虑动量流量了,这在后面会有介绍。

  福茨威廉斯与霍金斯(Ffcows Williams&Hawkings)两位在莱特希尔方程的基础上,发展出FW-H方程。FW-H方程的发展主要是针对运动壁面的发声情况。这里说的运动壁面指的是在来流中的运动,也就是说壁面具有加速度,如螺旋桨。FW-H方程包含了所有的噪声源,单极子、偶极子和四极子。这三种声源的发声效率递减,指向性差异很大。一般来说,FW-H方程能够描述所有的气动噪声问题,只不过你需要根据你计算问题的具体情况,来确定哪种噪声源为主,哪种噪声源可以忽略。现在主流的气动声学计算软件基本上都用的是FW-H方程。

  上面大概介绍了一下气动声学理论方面你的东西。具体的方程形式复杂,推导困难,我是不会的。不过随便找本相关的书都有这方面的介绍,大家可以好好看看。这三个方程有个一致的假设,就是声场与流场不存在相互影响。这三个方程的主要作用有两个:一是告诉了我们声源的发声机理,以及怎么由流场参数去求声源参数;二是方程的积分解可以用来解决一些简单的气动声学问题,后面会提及。


  有了这些方程后,我们就应该想着去计算气动噪声了。一个完整的气动噪声计算应该包括以下三个部分:声源计算、声传播计算和声辐射计算。如下面这张图片所示。

  1 声源计算
  如果你能看到上述的三个方程,那么你会发现方程右边的源项主要是由流场中的参数构成的,比如雷诺应力、粘性应力、压力、动量流量、质量流量等等。显然,这些参数的获取则需要靠CFD计算了,这也就是所谓的声源计算了。因此,准确的CFD流场计算是CAA计算的基础。一般来说,声源的计算需要采用高级的湍流模型,如LES、DES,进行非稳态计算来实现。当然,URANS模型也可,不过计算出来的结果往往只有主要特征的影响,得不到细节方面的东西。需要补充的是,稳态计算,也能在一定的程度上得到声源分布,这种牛逼的算法叫随机噪声产生与传播(Stochastic Noise Generation and Radiation,SNGR),它是根据湍动能的概率分布来转换噪声源的。德国人在这方面做的比较多,FLUENT里面所谓的宽频噪声源法采用的也是这种理论。

  2 声传播计算
  问题的复杂性不同,声传播计算的重要性也就不同。对于一些简单问题,声传播计算并不是必要的。比如说低速圆柱绕流噪声。不需要考虑声传播计算的主要原因是结构和流场对声传播的影响可以忽略。因此,对于这种简单的情况,直接利用CFD的计算结果,对FW-H方程求积分解,就可以得到圆柱绕流的辐射噪声了。FLUENT里面的声学模块就是这么干的。

  这里说一下FW-H方程积分法。积分法的思想是比较简单的,它实际上是一种解析方法,当然求起来就不一定简单了。以圆柱绕流噪声计算为例,我们把圆柱表面划分成一个个的微元,每个微元当做一个偶极子声源,声源的强度就是脉动压力大小,然后对每一偶极子求解波动方程,得到其在声接受点处的辐射声压,再把每个偶极子所产生的声压相加,就得到了总声压,问题就解决了。不过积分法里面一个很重要的参数是延迟时间。所谓延迟时间指的是,声源产生的声波传到声接收点需要一定的时间。声源位置不同,延迟时间也就不同,因此在编程计算中是一个比较麻烦的东西。

  而对于复杂的问题,那么声传播的计算则是必须的了。举几个例子,一是管内流噪声问题。声波产生后,在管道内的传播受到管道结构的影响,必须以某种声模态来传播。这时候,你想用FLUENT来计算噪声那是行不通的。第二个例子,航空发动机的风扇噪声的计算。航空发动机短舱在进气段一般都安装了消声用的声衬,也就是说边界条件直接对声传播有影响,所以也必须进行声传播计算。第三个例子,航空发动机喷流噪声计算。发动机尾流中存在强烈的剪切层,有着很多大的速度梯度和温度梯度,将影响到声的传播,因此必须进行声传播计算。总得来说,当结构和流场对声的传播有这不可忽略的影响,你就得做声传播计算了。

  3 声辐射计算
  声辐射计算的目的在于求取远场的声压。当然,如果你的计算机很牛逼,你的声传播计算算法也很牛逼,那么你可以直接建立庞大的计算域,直接采用传播计算来求取远场的声压。否则的话,你就得用上面说过的FW-H方程积分法来求了。目前来说,这个难度不大,对算法没什么要求,方程也比较好求解,花点时间基本上也能捣腾出来。或者直接用FLUENT现有的也可以,因此不多说了。

  好了,通过上面的介绍,我们知道,一个问题的难度主要就在于是否要考虑声传播计算了。为什么不能用传统的CFD算法直接来计算声传播呢?主要的原因有两个:一是CFD的控制方程,N-S方程也好,Euler方程也好,都是非线性的,而声压相对于流场压力是一个非常小的量,在计算过程总很快就会被忽略掉;二是声压信号是一个非常小的量,传统的低阶格式对声压来说具有很大的耗散性,将导致声压信号迅速被耗散掉。因此,对CAA来说,真正有技术含量的工作都集中在声传播计算这一块。

  接下来将针对简单问题和复杂问题分别介绍一些我做的计算。

  简单问题
  由上面的介绍我们知道,简单问题只需要采用FW-H方程的积分解,就可以解决。这对一些简单的工程问题已经足够了。对于简单问题,计算的重点有两个:一是CFD流场的计算,你必须算对了算准了才行;二是声源面的选取了。前一个问题在于你对CFD的理解和掌握程度了,这里主要说一下第二个问题。

  声源面的选取有两种方法,一是直接选取固体壁面作为声源面,二则是选取虚拟的通流面作为声源面,即所谓的积分面。积分面就是采用通流面,对应着FLUENT里面的interior边界条件,将声源区域给包起来。采用积分面的原因是为了简化计算当中的体积分问题。我们知道,对于固体边界不是主要噪声源的情况,如喷流噪声,噪声主要由湍流产生,而湍流的分布则是空间分布了。如果我们采用积分法来求解湍流噪声源的声辐射,那么就必须采用体积分了,这将导致计算量的剧增。而采用积分面,则可将体积分转换为面积分,从而大大减小计算量。

  积分面的选取方法有多种,用的比较多的主要由基尔霍夫(KirchhoffMethod)法和可通流面FW-H方程(PorousSurface FW-H Equation)。FLUENT当中的积分面法采用的应当是后一种(不确定,里面介绍的不多)。积分面的选取比较麻烦。一个比较重要的注意事项是:应当避免尾流或者涡直接穿过积分面,导致声信号的污染。此外,积分面的位置不同,对计算结果有一定的影响。
  下面的一个例子是利用FLUENT,采用固壁面和积分面两种方法来计算二维圆柱绕流噪声。圆柱直径50mm,来流马赫数0.12,采用的湍流模型为SST。网格如下图所示,其中绿色线框就是两个积分面了,记为IS100和IS200。而红色的面就是积分面的封闭面,由于有尾流和涡穿过,其声信号是被污染的,计算时不能取用,但你可以用它来对比一下,研究它的影响。

  计算的过程是比较简单的。画好网格之后,首先做稳态计算,然后在稳态计算的基础上开始非稳态计算。当非稳态计算达到一个动态稳定的状态后,开启气动声学模块,设定声源面,输出声源文件。这里有一个比较重要的问题。当你采用interior作为声源面的时候,必须将流域设成多个计算域,其中积分面内设成一个域,积分面外设成另一个域,如此你才能选取两个域之间的interior面作为声源面,并选取相应的声源计算域。声源数据输出后,指定声接收点,然后使用积分法计算声信号,计算就完成了。我的计算结果如下图所示。
  对比壁面和积分面的计算结果,低频区基本一致,而在高频区,由于积分面法考虑了尾流中湍流的影响,因此相差较大。但是由于主要噪声源是偶极子噪声源,即低频段,因此两种方法在总声压级相差并不大。而噪声的指向性应该如第二张图中紫色曲线所示,像一个猪腰子,这就是偶极子声源的指向特性,说明低速圆柱绕流主要的噪声源是偶极子噪声源。  好了,对于一个简单的问题,上面的方法基本能够满足工程上的需要了。总结,对于简单问题,重点在于你的CFD计算结果,以及声源面的选取了。接下来介绍复杂问题。

  复杂问题
  CAA真正有难度的在于复杂问题的声传播这一块。声传播的计算有两种方法,一种是频域法,另一种是时域法。频域法是计算声学最常用的方法,如sysnoise、ACTRAN等它们采用声学有限元的方法来求解频域上的波动方程,来实现声传播的计算。而时域法则是真正有技术含量的工作了,它需要好的算法和高阶格式。这两种方法理论上应当是等效的,但是在实际情况中还是应该有所偏重的。

  当对声传播产生影响的主要因素是结构边界时,这时候采用频域法是比较适宜的。这主要是因为频域法对边界条件的处理比较方便。比如说,对与声衬或者有消声材料的情况,采用时域法时该边界条件需要一个复杂的方程来描述,而对于频域法来说,只需要给定阻抗即可。

  当对声传播产生影响的主要因素是流场时,这时候采用时域法是比较合适的,频域法往往都无能为力。比如说发动机尾流,存在着强烈的剪切层时。下面的介绍则针对频域法与时域法分别展开

  频域法
  对于比较喜欢现有软件的同志们来说,有两个软件可以作为频域法求解的工具: ACTRAN和LMS VirtualLab。这两个软件采用的都是频域法,过程大致相同:首先由CFD计算结果转换出声源参数,得到声源的时域分布,然后对声源参数做DFT变换,得到声源的频域分布,最后采用计算声学的方法来求取声源作用下的声压。两个软件有着很大的差异。ACTRAN的声源取的是体声源,VL取的是面声源;ACTRAN采用声学有限元计算近场声压分布,在采用声学无限元对远场插值,求取辐射噪声,而VL则是直接采用边界元法来求取声压分布。客观的说,ACTRAN在气动声学方面的计算能力要优于VL。

  下面给出的是我采用ACTRAN计算的一个分支管气动噪声结果。

  首先,做非稳态CFD计算,结果如下所示:
  接下来,根据Lighthill方程,做声源转换,得到声源的时域分布
  对声源做DFT变换,得到声源的频域分布:
  最后采用声学有限元法,求管内声压分布
  由管内声压分布可以看出,这种方法能够得出管内声传播的高阶模态。指定声接受点,取各个频率下的声压级,则可得到声压的频谱曲线了。

  这就是采用ACTRAN做管内气动噪声的完全过程了。答案对不对不好说,但是过程肯定是完整的,呵呵。当然,ACTRAN同样可以用来做自由场的声学问题,下图是我用ACTRAN做的一个喷流噪声计算结果,用的是ACTRAN自带的CFD结果和网格文件。

  时域法
  时域法的难度可想而知,反正我是没本事去试水了。所以这方面的东西我只能做些基础的介绍了。各位同仁如果想玩玩这个的话,就得多花点力气了。

  前面说过,传统的CFD方法不能应用在声传播计算的主要原因是控制方程和离散格式不给力,因此,要想做声传播的时域计算,就必须需要新的控制方程和高阶格式了。

  在声传播计算中用的比较多的控制方程主要有线性欧拉方程(LinearlisedEuler Equatuon,LEE)和声扰动方程(AcousticPerturbation Equation,APE)。

  LEE方程是对欧拉方程进行变换得出的。它将流场参数分成平均量与脉动量两部分,代入到欧拉方程中,略掉高阶小量后,就得到了脉动量的控制方程。所谓线性,指的就是脉动量的偏微分项前的系数不包含脉动量本身。在网上随便搜一下LEE,你就能得到LEE方程的推导过程。在LEE方程中,脉动量前面的系数都是平均量的函数,因此,方程就包含了流场对脉动量传播的影响,也就是说反映了流场对声传播的影响。

  同样的,APE方程则是对N-S方程进行线性化后得出的,也有很多文献可参考,不再多说。

  有了控制方程,接下来要考虑的就是怎么去解这些方程了。而方程的解法则很多了,如有限差分法、有限体积法、间断迦辽金法等等。每种算法都有很多文献可查,这里就不多说了,一则是确实不怎么明白,二则是那玩意讲起来也不是一会就能完事的。

  解决了控制方程的问题后,接下来的就需要解决高阶离散格式(四阶及以上)的问题了。而高阶离散格式则更多了,如高阶Rungr-Kutta格式,Adams-Bashforth格式,DRP格式,ENO格式,等等。我的理解,离散格式的基础基本上都是泰勒级数,只不过采用的级数的阶数不同,同时计算时取的节点数不同而已。离散格式相关的文献也是多如牛毛。搞算法的那些人随便改改就能给弄出种格式来,至于实不实用则另当别论了。受水平限制,对高阶格式这玩意我是讲不出多少东西了,所以同样不多说了,大家针对感兴趣的格式可以多看文献。

  而在声学计算当中另一个重要的事情就是计算的边界条件了。通常来说,我们比较关心噪声对环境的影响,也就是噪声污染。因此,求远场的辐射噪声往往是主要目的之一。在需要考虑声传播计算的情况下,我们的计算域不可能取的很大,最终还是需要取声传播计算域的边界作为声源面,然后采用积分法来求远场的声辐射。此时,我们必须考虑计算域边界引起的伪反射,壁面反射声波对声信号的污染。此时我们就需要引入无反射边界条件。而能够实现无反射条件的边界主要有特征边界条件(Characteristic boundary conditions)、吸收层(absorbinglayers)、完全匹配层(Perfectly Matched Layers)等多种,具体的情概况则需要阅读文献了。

  下面这张图片给出了则是一个发动机尾流场中声传播的时域计算结果了。由图中可以看出,由于剪切层的存在,声的传播方向发生了偏转。
  对于不想编程的同志来说,ACTRAN软件的DGM模块是你一个不错的选择。这个模块是采用间断迦辽金法DGM来求解LEE。下面一个图片给出了采用ACTRAN的DGM模块来求解发动机尾流中声传播的模型设定和计算结果。需要说明的是,ACTRAN的试用版软件里面没有DGM这个模块,而破解版,貌似现在还没有。要是哪位大哥手上有的话,记得多和我交流一下!!
  好了,对于CAA,本人所懂的也就这些了。很多说得不对的地方,大家指出来,多交流交流。总的来说,求解一个气动噪声问题,你需要以下几个步骤:

  1) 分析问题的噪声源特性,看看哪种噪声源是主要的,而哪种是可以忽略的;

  2) 分析结构和流场是否会对声的传播产生影响;

  3) 如果是个简答难问题,那好说,FLUENT可以帮你搞定。根据你主要的噪声源情况,来确定你的声源面。偶极子情况下,固壁面或积分面都行。而湍流噪声和旋转机械的情况下,你就只能用积分面做声源面了。

  4) 如果是个复杂问题,看看对声传播的影响因素是什么。结构的话,有ACTRAN能够帮帮你。而流场的话,你就只有两条路了,要么自己弄个程序出来,要么掏钱去买个ACTRAN的DGM模块了。

  本文来源于仿真科技论坛,作者:daocaorenzgc,工程事微信公众号曾转发过该文。

页: [1]
查看完整版本: 计算气动声学CAA若干学习经验分享,强烈推荐!