分享

浅谈常见的几种CFD算法-FVM MPS SPH LBM究竟什么区别?

 Esniper 2018-06-06

最近小编收到了很多提问,shonDy所采用的粒子法与LBM方法有什么区别?粒子法的优势在哪里?等等。为了弄清楚这些问题,本篇随笔从CFDer常见的几种算法讲起。

上图是我重点围绕粒子法对常用CFD方法的一个简单分类,并非以偏概全。如果详细地整理CFD算法,可以有上百种之多。为了有的放矢,上图作为一个不完全分类展示给大家。


1.有限体积法

这是目前CFD领域最成熟的算法。该算法是将流体的Euler控制方程在单元控制体内进行积分后离散求解。目前大家常用的CFD软件,例如Fluent,CFX,Starccm+和OpenFoam等都是主要基于这种方法。小编这里推荐一本入门的读物“H. Versteeg, W. - An Introduction to Computational Fluid Dynamics: The Finite Volume Method”,国内网上可以买到英文原版的影印版。采用这种方法模拟流体,首先需要对流体区域进行网格划分。个人常用的画网格工具是OpenFOAM的snappyHexMesh,无论多么复杂的几何体,进行适当处理之后存储为STL或Obj格式,然后配置控制参数,便可以自动生成Hex-dominated的网格,也就是大部分网格都是六面体的。snappyHexMesh网格生成分为三步:(1)对正六面体的背景网格进行局部加密,然后删除掉位于几何模型以外(或以内)的网格;(2)将所有靠近几何体壁面的网格节点移动到几何面上;(3)对指定的壁面添加边界层。从核反应堆到航天飞行器,都可以用snappyHexMesh生成理想的网格。


2.粒子法

这是一种基于拉格朗日近似方法,无需网格,对流体和固体的物质本身进行离散,并非离散空间。相对于LBM,该方法和有限体积法(DNS除外)的尺度较宏观,更适合于实际工程问题。第一种SPH光滑粒子法,该算法最早由Gingold and Monaghan (1977) 和Lucy (1977)提出,该方法对流体压力采用显示求解,特点是计算快速,弱点压力场计算不准确。第二种MPS半隐式运动粒子法是由Koshizuka教授于1995年提出,该算法通过求解压力泊松方程获得流体的压力场,并通过压力梯度修正预测的流体速度。MPS方法在提出后的很长时间内都存在很多底层的数值稳定性问题,主要体现在压力场不符合物理实际的波动。后来很多学者对该方法提出了修正和改进。小编所开发的shonDy软件就是基于MPS的改进算法。最后一种FVP粒子法,相对比MPS的区别将控制方程在假想的粒子体积空间内进行积分,获得新的梯度和Laplacian算子,该算法与MPS无太大本质区别。 前两周,小编在KIT有幸见再次到了后两种粒子法的鼻祖,一位是日本东京大学的Koshizuka教授,另一位是日本九州大学的Morita教授。个人观点是,SPH方法虽然快,但是有失准确度,适合于追求视觉效果的场景,例如某些电影里的海啸场景,就采用该算法。MPS和FVP方法虽然计算速度较慢,但物理量计算更加准确,适合于工程场景。


上图是应用shonDy软件快速建模的两个转动齿轮对流体作用的算例,创建算例时间只需20分钟。同样的问题,如果采用网格方法,划分动态网格会占用大量时间。


3.LBM方法

该方法属于介观尺度的方法,相对前两种方法离散尺度上微观,但没有微观到分子的尺度。该方法并没有像前其他CFD方法那样求解流体的Navier–Stokes方程,而是通过计算微观粒子间的streaming和collision两个过程,从而模拟整体流体的运动行为。该算法最大的特点是并行计算效率非常高,主要是因为算法过程相对简单容易并行。其缺点在于目前离广泛的实际工程应用还有段距离,目前主要应用于基础科研领域。原因是该算法模拟一个几何模型需要创建的格子数非常大,对于large scale的工程问题,计算量和计算时间无法接受。 这里向大家推荐一款KIT开发的开源软件OpenLB,适合于学习和科研。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多