首页 > 技术 > Altair > > 【CFD专栏】MASSFLOW粒子为何与众不同?

【CFD专栏】MASSFLOW粒子为何与众不同?

作者:Simwe    来源:Altair    发布时间:2018-06-12    收藏】 【打印】  复制连接  【 】 我来说两句:(0逛逛论坛
什么是MASSFLOW粒子?

MASSFLOW粒子之所以与众不同,是因为它是唯一一类不参与计算的粒子。它存在的意义正如它的名字所揭示的那样,是为了统计某个区域的流量。既然不参加计算,那么它也不需要遵守不能与其他种类的粒子重叠的限制。所以在建模的过程中,它是唯一一类可以与任何粒子重叠的粒子。

MASSFLOW粒子如何统计流量?

每个MASSFLOW粒子会在以dx为边长的立方体内查找被标记为FLUID类型的粒子,然后计算这个立方体内所有粒子的速度总和。这个速度乘以所覆盖的面积(dx*dx)和密度,得到的就是一个MASSFLOW粒子所探测到的质量流量。而某个区域内所有MASSFLOW粒子的总质量流量,是通过将每个粒子对应的流量值进行求和运算得到的。让我们通过下面这个简单的例子来加深体会。
在这个测试算例中,一共有5种不同的phase,分别为:楔形(蓝色)、球形(青色)、立方体(绿色)、离散点(黄色)的FLUID粒子,以及红色的MASSFLOW粒子。我们想象一下左边这些流体粒子以恒定的速度向右移动并依次通过红色的MASSFLOW平面,根据上一段中解释的算法,将会得到怎样的流量统计曲线呢?
答案揭晓,每个FLUID Phase对应的流量统计曲线如下,大家是不是猜对了呢?


可能对图片中的橙色曲线,大家都能猜个八九不离十,但是蓝色的曲线究竟代表什么呢?其实从名字上来判断,橙色曲线(RUNNING_AVG_MASSFLOW)指的是每一个时间步对应的平均流量,可以认为是一个瞬态值;蓝色曲线(TOTAL_AVG_MASSFLOW)代表的则是从当前时间步一直追溯到初始时刻的所有流量值的平均值。
原则上来说,只要有橙色曲线,我们通过简单的数学计算就能得到蓝色曲线。

如何生成MASSFLOW粒子?

流量的定义是指在单位时间内流经某个有效截面的流量体,因此nanoFluidX中接受的MASSFLOW粒子是在预定义的平面中生成的。目前版本中,支持任意形状的平面作为流量监测面。我们以一个长方形的平面为例,介绍一下在HyperMesh中如何生成MASSFLOW粒子。


这里有两点需要特别注意!

首先,统计流量只需要一层粒子,因此人为拉伸出来的填充粒子的封闭空间的厚度只需要等于粒子间距dx即可。
其次,这里提到了一个很重要的概念:局部坐标。一般来说,如果监测面与全局坐标系的轴是垂直或平行的关系,我们就没有必要建立局部坐标了;而这个例子中的平面与全局坐标系的坐标轴是形成一定角度的,这种情况下如果不建立局部坐标,就会出现下图右侧的粒子排布方式。nanoFluidX规定MASSFLOW粒子必须在平面内,而不能以沿平面上下交错的方式排布。
为了避免出现这种不允许的情况,就要在建模时建立local coordinate system,并且在mesh orientation中选择这个局部坐标系。

 

至于MASSFLOW平面的形状和大小,要根据统计需求来确定。我们需要知道的是,这个统计流量的平面可以和壁面有干涉,甚至穿透壁面(如下图所示),因为只有被标记为FLUID的粒子才会被统计,属于WALL或者MOVINGWALL的粒子会被自动忽略。如此智能的MASSFLOW粒子是不是把前处理的难度降低了许多?
 

值得一提的是,如果是气液两相流的问题,那么会有不止一个FLUID Phase出现在计算域中,那么nanoFluidX又是如何统计多相流的流量的呢?
大家不用担心需要额外的操作或定义,属于不同Phase的流体粒子的流量会被分别统计,并记录在txt文件的不同数据列中,大家可以一目了然不同的气体或液体通过某个监测面的流量分别为多少。是不是很方便呢?

如何定义MASSFLOW粒子?

在cfg文件的phase definition中,我们需要对每一个MASSFLOW Phase做以下定义:

其中,gridVecMassFlow vector指的是在流量监测平面中的任意一个矢量;而normVecMassFlow vector指的是垂直于监测面的矢量,他的指向定义了流量统计的正方向,也因此决定了统计值的正负号。值得一提的是,无论是gridVecMassFlow vector还是normVecMassFlow vector,我们都不需要对输入的矢量做归一化处理。换句话说,矢量方向的定义比矢量大小的定义更重要。除此之外,在最新版本中,多了一个massOrVolume的选项,我们可以预先选择究竟是统计质量流量还是体积流量。

如何对MASSFLOW粒子的统计数据进行后处理?

这也是大家比较困惑的问题。计算完成后,我们会得到某个预定义的流量监测面对应的txt文件,所有的统计数据都在文件中。由于瞬态计算的初始阶段都会经历一段数值震荡,所以我们建议观察一下流量曲线从哪个时刻开始趋于收敛或者只在小范围内波动,那么就以这个时刻为起点,忽略之前的统计数据。一般的经验是选取后60%的数据做进一步统计,当然不同的算例会有不同的判断。
另外一个问题是关于流量统计中出现的正负号应该怎样处理。
前面提到了,前处理中我们会定义一个流量统计的正方向,与这个方向一致的为正流量,相反的则为负流量。那么在计算平均值的时候,是要全部取正,还是保留正负号直接求和呢?

这个取决于统计流量的目的。如果这个流量监测面用来判断这个区域的流体粒子通过率,比如齿轮箱中某个部件的润滑情况,那么应该将流量值取正后再相加,因为这一类的统计是不需要考虑流动的方向性的,不管从哪个方向来的流体粒子,都会起到润滑效果。如果流量监测的目的是统计进入或流出某个区域的流量,比如判断某个区域的积油情况,那么这样的统计的是具有方向性的,应该在数据处理中保留正负号。
最后提一句,nanoFluidX对MASSFLOW粒子的Phase数量没有限制,也就是说,我们可以在不同的位置建立多个MASSFLOW监测面,唯一需要注意的是,每个监测面需要分配一个Phase ID,并在cfg文件中分别定义。而有多少个不同的MASSFLOW Phase,就会在计算结束后得到相应数量的txt文件。



 
分享到: 收藏