首页> 中国专利> 基于格子Boltzmann方法的并行CFD方法

基于格子Boltzmann方法的并行CFD方法

摘要

本发明公开了一种基于格子Boltzmann方法的并行CFD方法。该方法能针对各种复杂的物体并行地进行流体力学的计算与分析,其特点在于引入了适合于格子Boltzmann方法的并行分布式网格剖分方法,使得网格剖分时间大大缩短,同时根据的分布式计算机体系结构,构建了减少格子Boltzmann方法在并行迭代计算中的通信量算法,加速了迭代的速度,提高了算法的可扩展性,使得格子Boltzmann方法适用于大规模计算。大量的数值实验证明了该并行计算方法具有良好的可扩展性,并且更加适合于超大规模的计算系统。

著录项

  • 公开/公告号CN103345580A

    专利类型发明专利

  • 公开/公告日2013-10-09

    原文格式PDF

  • 申请/专利权人 上海大学;

    申请/专利号CN201310274574.3

  • 申请日2013-07-02

  • 分类号

  • 代理机构上海上大专利事务所(普通合伙);

  • 代理人何文欣

  • 地址 200444 上海市宝山区上大路99号

  • 入库时间 2024-02-19 20:03:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-23

    未缴年费专利权终止 IPC(主分类):G06F19/00 授权公告日:20160427 终止日期:20190702 申请日:20130702

    专利权的终止

  • 2016-04-27

    授权

    授权

  • 2013-11-06

    实质审查的生效 IPC(主分类):G06F19/00 申请日:20130702

    实质审查的生效

  • 2013-10-09

    公开

    公开

说明书

技术领域

本发明涉及计算流体力学和计算机领域,提出了一种基于格子Boltzmann方法的并行CFD方法。

背景技术

经过几十年的发展,计算流体力学CFD在航空航天,大型能源装置(如核电站),新型交通工具,环境保护等众多工程技术部门和领域都得到了广泛的应用。目前,计算流体力学己成为现代计算科学最有力地推动之一。尽管CFD已取得了令人嘱目的进展,但由于流体运动的复杂性和计算机资源的限制,CFD仍存在许多局限性。对某些问题的计算、预测和控制仍然没有把握。例如,由于缺少有效的计算模型和计算机条件的限制,对航天器热问题的计算的误差有时可能达到100%,许多灾害性的天气还不能进行比较准确的预报。在单机上求解这些复杂的流动问题往往需要过长的计算时间,有些大规模问题甚至无法求解,这在一定程度上限制了CFD在科学研究与工程问题中的应用。由此可见,为了求解复杂的CFD问题必须采用高效的计算模型和先进的计算机体系结构,所以,工程技术的发展和科学问题的需要对CFD的研究提出了更迫切的要求,流体计算成为一个具有挑战性的领域。

大规模并行计算机的有效利用需要新的并行算法。因为利用传统方法即使在超级计算机上求解某些工程和科学问题,如湍流的直接数值模拟等,仍需要非常长的时间。传统的求解Navier-Stokes方程的方法需要求解大规模的代数方程组,Navier-Stokes方程显式解法并行性较好,但是数值稳定性差,收敛速度慢;隐式解法数值稳定性好,收敛速度快,但是其并行可扩展性较差。

发明内容

本发明的目的在于,为了解决上述问题,提供一种基于格子Boltzmann方法的并行CFD方法,是提供时间、空间全离散的格子Boltzmann方法与并行计算相适应的一种新型的全并行高效算法,该方法基于分子动理论,具有清晰的物理背景。该方法在宏观上是离散方法,在微观上是连续方法,因而被称为介观模拟方法。该方法具有许多独特的优势,如计算效率高、边界条件处理简单、程序易于实施等优点。该方法是一种分立统计模型,计算过程中信息传递是局域的,因此并行运算程序关联度较小,各个计算节点之间需要传递的信息量较少,特别适合在具有分布式体系结构的大规模计算机上进行并行计算,可以在费用比较小的情况下进行较大规模的数值模拟,特别是云时代的到来,资源获得更加容易,更大规模的并行计算更容易展开来。

为达到上述目的,本发明的构思是:首先根据面网格的数据和实际计算的参数要求,开发分布式地进行笛卡尔网格剖分方法,加速网格剖分;同时结合一定的数据结构,加速进行网格的初始化,然后根据格子Boltzmann方法开发具有较小通信量的高可扩展性的并行格子Boltzmann方法进行迭代计算,直到满足计算的精度要求后输出流场和物面信息,之后进行可视化分析。

根据上述发明构思,针对实际计算问题的需要,流场计算范围、物面信息,本发明采用下述技术方案:

A、              根据实际问题的计算需求,读入计算的参数文件;

B、  根据参数文件中的面网格stl文件的路径,读取面网格文件;

C、  根据参数文件中的流场范围和面网格的数据,利用开发的分布式笛卡尔网格剖分方法,并行地分布式进行笛卡尔网格的剖分;

D、 根据参数文件中的计算要求,分布式并行地将剖分后的笛卡尔网格进行初始化;

E、 利用开发的高可扩展性的并行格子Boltzmann方法进行并行迭代计算,直到满足参数文件中的精度需求;

F、  输出计算结果中的流场信息和物面信息;

G、              计算结果的可视化分析。

 

本发明的基于格子Boltzmann方法的并行CFD方法,与现有技术相比较,具有以下突出的实质性特点和显著优点:

1.   该方法建立了一种快速的分布式网格剖分方法,加速了网格剖分的速度。由于网格是分布式进行剖分,进行剖分的各个节点之间是不需要进行通讯的,是完全并行模式,有近线性的加速比。

2.   由于网格剖分后是分布式存储在各个计算节点上的,所以可以分布式进行网格计算信息初始化,不需要进行通信,加速了初始化时间,同时也具有近线性的加速比。

3.   该方法同时根据格子Boltzmann方法,给出了一种具有高可扩展的并行格子Boltzmann方法,加速地进行了迭代计算,缩短了原有方法的并行计算时间,同时该方法也具有良好的可扩展性。

附图说明

图1是本发明的基于格子Boltzmann方法的并行CFD方法的流程图。

图2是图1中步骤C中分布式并行处理笛卡尔网格剖分的具体流程图。

图3是图1中步骤D所述的流场信息进行初始化的流程图。

图4是图1中步骤E和F所述的流程图。

图5是格子Boltzmann方法中D3Q19的模型速度结构图。

图6是二维格子Boltzmann方法的通信并发式。

图7是二维格子Boltzmann方法的通信顺序式。

图8是规模与效率的测试结果图。

图9是三种规模测试问题的加速比图。

图10是三种规模测试问题的效率图。

具体实施方式

以下结合附图对本发明的优选实施例详细说明。

实施例一:

参见图1,本基于格子Boltzmann方法的并行CFD方法,是提供时间、空间全离散的格子Boltzmann方法与并行计算相适应的一种新型的全并行高效算法,其特征在于:针对给定的实际流体计算问题,能够采用该方法进行高效模拟,具体操作步骤如下:

A、              根据实际计算问题的需要,给定计算参数并保存为ini格式参数文件,读取该参数文件;具体步骤包括:

A1、主进程读入参数文件;

A2、主进程将读入的参数文件内容发送到其余各个进程中;

B、 根据步骤A中提供的面网格stl文件存储位置,读入该文件;具体步骤包括:

B1、主进程读入面网格stl文件;

B2、主进程将读入的面网格数据发送到其余各个进程中;

C、  根据步骤A和步骤C中的内容,分布式并行进行网格剖分;

D、              根据参数文件中的计算要求,每个计算节点将其负责的笛卡尔网格进行初始化;

E、 利用开发的高可扩展性的并行格子Boltzmann方法进行并行迭代计算,直到满足参数文件中的精度需求为止;

F、  输出计算的结果;具体步骤如下:

F1、主计算节点输出物面结果和流场结果,结果的输出格式为Tecplot/VTK文件格式;

F2、其余计算节点按照顺序将物面和流场计算结果输入到主节点输出的结果后面,形成完整的物面和流场计算结果;

G、              物面和流场计算结果的可视化:主要采用Tecplot商业软件或者ParaView开源软件。

实施例二:

本实施例中,本基于格子Boltzmann方法的并行CFD方法的实验在上海超级计算机中心的魔方5000A,魔方5000A是基于集群概念设计的大型计算机系统,其整体计算能力理论峰值为200T flops (1Tflops 即为每秒1012 浮点计算)。

针对实际计算问题的需要,流场计算范围、物面信息,本发明的基于格子Boltzmann方法的并行CFD方法,如图1-图7所示,包括以下步骤:

H、              根据实际计算问题的需要,给定计算参数并保存为ini格式参数文件,读取该参数文件。具体步骤包括:

A1、主进程读入参数文件;

A2、主进程将读入的参数文件内容发送到其余各个进程中。

I、   根据步骤A中提供的面网格stl文件存储位置,读入该文件。具体步骤包括:

B1、主进程读入面网格stl文件;

B2、主进程将读入的面网格数据发送到其余各个进程中。

J、    根据步骤A和步骤C中的内容,分布式并行进行网格剖分。具体步骤包括:

C1、根据参数文件中的计算参数和面网格的信息,将各个计算节点所负责的网格剖分区域进行划分。具体步骤包括:

C11、根据计算节点n和流场区域大小,将流场区域(xyz三个方向)均匀划分为n等份,每个计算节点其中的一份,即每个进程负责的范围为:

x∈[min_ximax_xi]、y∈[min_yimax_yi]、z∈[min_zimax_zi];

式中min_xi代表流场区域x方向的最小值,max_xi代表流场区域x方向的最大值,min_yi代表流场区域y方向的最小值,max_yi代表流场区域y方向的最大值,min_zi代表流场区域z方向的最小值,max_zi代表流场区域z方向的最大值;

C12、根据步骤A中读入的参数文件中的网格尺寸size,每个计算节点中都将其负责的一份分别向xyz三个方向都增加和减少一个size,即每个进程负责的范围为:

x∈[min_xi-sizemax_xi+size]、y∈[min_yi-sizemax_yi+size]、z∈[min_zi-sizemax_zi+size];

C2、每个计算节点对各自负责的范围进行网格剖分,同时判断各个网格点的类型。具体步骤为:

C21、生成初始笛卡尔网格;

C22、判断每个网格点与物面相交的情况;

C3、每个计算节点中对固体内部(即物面包围形成)的网格点进行删除。

K、              根据参数文件中的计算要求,每个计算节点将其负责的笛卡尔网格进行初始化。具体步骤包括:

D1、根据参数文件中的计算参数,对不同的网格类型进行流场宏观信息的赋值;

D2、根据赋值的宏观信息和格子Boltzmann方法的D3Q19速度模型的平衡态分布函数计算出微观信息量,具体计算公式见如下:

式中代表第个离散速度方向的平衡态分布函数值,代表密度,代表速度,代表第个离散速度(见图5)为:

  

权函数为:

声速:,其中c为格子速度。

L、 利用开发的高可扩展性的并行格子Boltzmann方法进行并行迭代计算,直到满足参数文件中的精度需求为止。具体步骤如下:

E1、迭代次数变量Iteration,如果达到参数文件中的迭代次数,则退出迭代,否则继续进行迭代;

E2、计算宏观量的误差,根据参数文件中的精度要求进行判断,如果满足则退出,否则继续;

E21、根据微观量和如下公式,计算网格点上的新宏观量:

式中代表第个离散速度方向的分布函数值;

E22、将计算得到的新宏观量与网格点上原有的宏观量相减后取绝对值得到宏观量的误差;

E23、判断误差是否满足精度要求,如果满足则退出,否则继续;

E3、格子Boltzmann方法的并行碰撞迁移过程,主要的计算公式见如下:

式中代表松弛因子,代表时间,代表时间间隔,该公式分为两个部分:迁移和碰撞,具体步骤如下:

E31、移动格子(迁移过程),在每个计算节点负责的网格点的迁移过程中,都需要用到相邻计算节点的网格信息,这就需要进行计算节点间的通信操作,存在如下两种操作步骤:

E311、根据图6中二维情况下的通信并发式,可以方便地推广到三维情况下。各个计算节点先按照类似的并发模式进行通信

E312、或者根据图7中二维情况下的通信顺序式,也可以方便地推广到三维情况下。各个计算节点先按照类似的顺序模式进行通信

E32、通信完成后,每个计算节点可以进行碰撞操作,该步骤不需要进行通信,是完全并行化的,但是碰撞只在符合x∈[min_ximax_xi]、y∈[min_yimax_yi]、z∈[min_zimax_zi]范围内的网格点上进行

E33、迭代变量Iteration = Iteration + 1,继续执行E1步。

M、             输出计算的结果。具体步骤如下:

F1、主计算节点输出物面结果和流场结果,结果的输出格式为Tecplot/VTK文件格式;

F2、其余计算节点按照顺序将物面和流场计算结果输入到主节点输出的结果后面,形成完整的物面和流场计算结果;

N、              物面和流场计算结果的可视化。主要采用Tecplot商业软件或者ParaView开源软件。

 

下面的图8-10主要针对本发明的基于格子Boltzmann方法的并行CFD方法在上海超算曙光5000A上的计算测试结果进行说明。

参照图8,给出了本发明的基于格子Boltzmann方法的并行CFD方法在针对不同计算规模问题下的效率图。说明了本发明方法能够适用于大规模问题的处理,且能保持良好的效率。

图9给出了针对三种不同规模下的并行加速比与理想值的对比图,从图中可以看出,本发明的方法具有良好的可扩展性。

图10给出了和图9中同样三种规模下的并行效率图,从图中可以看出,本发明的方法并行效率在4000核量级上仍然维持了80%以上的效率。

综上所述,图8~图10表明,本发明的基于格子Boltzmann方法的并行CFD方法,能够针对大规模问题进行计算,并且该方法的可扩展性好,效率能维持在较高水平,同时该方法能够很好地发挥超大规模的超级计算机的效用,用计算资源换取计算时间。该并行CFD方法是传统CFD方法的有效补充,且实现起来较为方便。

本文结合说明书附图和具体实施例进行阐述只是用于帮助理解本发明的方法和核心思想。本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员依据本发明的方法和思想得出的其它实施方式,同样属于本发明的技术创新范围。本说明书内容不应理解为对本发明的限制。 

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号