CN104933225B - 实现计算流体力学大规模实时模拟的方法 - Google Patents

实现计算流体力学大规模实时模拟的方法 Download PDF

Info

Publication number
CN104933225B
CN104933225B CN201510272453.4A CN201510272453A CN104933225B CN 104933225 B CN104933225 B CN 104933225B CN 201510272453 A CN201510272453 A CN 201510272453A CN 104933225 B CN104933225 B CN 104933225B
Authority
CN
China
Prior art keywords
grid
equation group
time step
subregion
equation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510272453.4A
Other languages
English (en)
Other versions
CN104933225A (zh
Inventor
杨宁
舒树礼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Process Engineering of CAS
Original Assignee
Institute of Process Engineering of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Process Engineering of CAS filed Critical Institute of Process Engineering of CAS
Priority to CN201510272453.4A priority Critical patent/CN104933225B/zh
Publication of CN104933225A publication Critical patent/CN104933225A/zh
Application granted granted Critical
Publication of CN104933225B publication Critical patent/CN104933225B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种实现计算流体力学大规模实时模拟的方法,包括:接收模拟请求消息,从文件中读取模拟对象、模拟对象的空间离散网格信息以及计算方程组所需的数据信息,根据数据信息包含的区域划分参数以及模拟对象的空间离散网格信息为各进程分配计算子区域,其中,不同计算复杂度的方程组对应不同时间步长信息,各进程根据所述网格信息和所述时间步长信息在对应的计算子区域上求解方程组,直到达到约束条件。本发明实施例能够在保证求解时空精度的情况下根据方程组的计算复杂度为方程组使用不同的时空尺度,解决求解复杂不同方程存在计算速度瓶颈问题,提高了方程求解速度和计算效率。

Description

实现计算流体力学大规模实时模拟的方法
技术领域
本发明实施例涉及计算流体力学技术领域,尤其涉及一种实现计算流体力学大规模实时模拟的方法。
背景技术
计算流体力学是对在时间与空间上连续的流体力学控制方程进行离散,建立离散节点上变量满足的代数方程组,并利用计算机进行数值求解。由流体力学的基本特点可以发现,流体力学的发展包括以下几个方面:建立流体力学控制方程;建立高精度稳定的离散算法;对流体空间区域进行离散划分;代数方程的高效快速的数值求解算法;计算机程序实现以及高效求解;以及方法的理论实验验证。
在实际工业应用中,一方面需要研究的物理对象空间尺寸大,如轮船,飞机,工业反应设备(米级),需要研究的过程演化时间长,如石油储存过程需要研究的时间尺度以天计算;另一方面流动现象特征时空尺度小,实际工业设备中流动多为湍流,流动的时空特征尺度为科尔莫戈罗夫尺度Kolmogorov scale,一般远远小于设备尺度及关心的物理时间尺度,因此对实际工业应用问题的准确模拟预测需要巨大计算量。与此同时工程实际希望模拟预测的速度越快越好,在尽可能短的时间内得到需要的模拟结果。因此需要大规模计算流体力学计算进行加速。
而计算流体力学模拟一般为多物理场耦合求解,在求解过程中不同方程求解的速度不一致,导致计算速度受到了计算效率最低的方程的控制。例如在格子波尔兹曼方法耦合求解雷诺时均的湍流模型时,湍流流动方程的求解占据了整个求解过程的绝大多数时间,极大降低了模拟计算的效率,是计算的瓶颈。
发明内容
本发明实施例提供一种实现计算流体力学大规模实时模拟的方法,能够提高方程求解速度,提高计算效率。
本发明实施例提供了一种实现计算流体力学大规模实时模拟的方法,包括:
步骤11、接收模拟请求消息,所述模拟请求消息中包含模拟对象;
步骤12、从文件中读取模拟对象、模拟对象的空间离散网格信息以及计算方程组所需的数据信息,所述数据信息包含区域划分参数和时间步长信息;其中,不同计算复杂度的方程组对应不同时间步长信息;
步骤13、根据所述区域划分参数和模拟对象的空间离散网格信息为各进程分配计算子区域,分别确定各进程对应计算子区域中与相邻进程对应计算子区域无数据交换的内部节点、与相邻进程对应计算子区域有数据交换的边界节点及计算边界节点所需要的相邻进程对应计算子区域计算数据的虚拟节点,并开辟所述虚拟节点空间;所述计算子区域包括不同计算复杂度的方程组对应的不同网格信息;
步骤14、各进程根据所述网格信息和所述时间步长信息在对应的计算子区域上求解方程组,重复步骤14直到达到约束条件。
本发明实施例通过接收模拟请求消息,从文件中读取计算方程组所需的数据信息和模拟对象,所需的数据信息包含模拟对象的网格信息、区域划分参数和时间步长信息;其中,不同计算复杂度的方程组对应不同的网格信息和/或不同时间步长信息;根据所述区域划分参数和模拟对象的网格信息为各进程分配计算子区域,各进程根据所述网格信息和所述时间步长信息在对应的计算子区域上求解方程组,直到达到约束条件。本发明实施例在保证求解时空精度的情况下根据方程组的计算复杂度为方程组使用不同的时空尺度,解决求解复杂不同方程存在计算速度瓶颈问题,提高了方程求解速度和计算效率。
附图说明
图1a为本发明实施例一提供的实现计算流体力学大规模实时模拟的方法的流程示意图;
图1b为本发明实施例一提供的实现计算流体力学大规模实时模拟的方法中的区域划分示意图;
图1c为本发明实施例一提供的实现计算流体力学大规模实时模拟的方法中的不同类型节点分布示意图;
图2是本发明实施例二提供的实现计算流体力学大规模实时模拟的方法的流程示意图;
图3是本发明实施例三提供的实现计算流体力学大规模实时模拟的方法的流程示意图;
图4a是本发明实施例四提供的实现计算流体力学大规模实时模拟的方法的模拟效果示意图;
图4b是现有技术中模拟方法的模拟效果示意图;
图4c是本发明实施例四提供的实现计算流体力学大规模实时模拟的方法与现有技术中模拟方法的计算时间比较示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
本发明实施例提供的实现计算流体力学大规模实时模拟的方法的执行主体,可为安装在终端设备上的实现计算流体力学大规模实时模拟的装置,该装置可以采用硬件或软件实现。
实施例一
图1a为本发明实施例一提供的实现计算流体力学大规模实时模拟的方法的流程示意图,如图1a所示,具体包括:
步骤11、接收模拟请求消息,所述模拟请求消息中包含模拟对象;
例如,模拟请求消息可以为实现计算流体力学大规模实时模拟的装置上的启动按钮或开关等。模拟对象立方体槽等。
步骤12、从文件中读取模拟对象、模拟对象的空间离散网格信息以及计算方程组所需的数据信息,所述数据信息包含区域划分参数和时间步长信息;其中,不同计算复杂度的方程组对应不同的网格信息和/或不同时间步长信息;
其中,文件中存储了模拟对象的空间离散网格信息,包括大尺寸网格和小尺寸网格,还存储了计算方程组所需的数据信息,这些数据信息均是由专业人员事先根据实际的流动或者物理情况给出的各个方程组的求解所需的必要参数。例如,需要计算的方程组为方程组1、方程组2和方程组3,且三个方程组对应的计算复杂度均不相同,则可以将方程组1、方程组2和方程组3的计算子区域预先设置为下表一所示:
方程组1 方程组2 方程组3
网格信息 网格尺寸1 网格尺寸2 网格尺寸3
时间步长信息 时间步长1 时间步长2 时间步长3
其中,网格尺寸1、网格尺寸2和网格尺寸3可以互不相同,时间步长1、时间步长2和时间步长3可以互不相同。
步骤13、根据所述区域划分参数和模拟对象的空间离散网格信息为各进程分配计算子区域,分别确定各进程对应计算子区域的网格中与相邻进程对应计算子区域无数据交换的内部节点、与相邻进程对应计算子区域有数据交换的边界节点及计算边界节点所需要的相邻进程对应计算子区域计算数据的虚拟节点,并开辟所述虚拟节点空间;所述计算子区域包括不同计算复杂度的方程组对应的不同网格信息;
例如,在实际计算时,采用多个进程同时进行计算。具体的,将当地流动计算区域分配到各个进程中过去。另外,在区域划分的过程中应根据模拟对象的几何形状采取不同的网格划分方式(例如一维、二维、或三维分割),例如,如图1b所示,为模拟对象流动区域二维划分示意图,区域划分后网格中的虚拟节点、边界节点和内部节点的分布如图1c所示。而且区域划分过程中应遵循以下原则:尽可能使得每个进程对应的计算网格数量相近,使得各个进程之间的计算速度匹配;不同网格划分方式是为了尽可能减少进程之间数据交换量,减少通讯,同时可以通过先计算边界节点,将边界节点的数据传递与内部节点的计算同时进行来掩盖相邻计算域之间的数据交换带来的通讯开销,从而提高并行效率,加快计算速度。
步骤14、各进程根据所述网格信息和所述时间步长信息在对应的计算子区域上求解方程组,重复步骤14直到达到约束条件。
其中,所述约束条件可以为待求解方程不同时刻的解的差值小于预设值,或者待求解方程的求解时间达到预设时间。
例如,需要计算的方程组为方程组1、方程组2和方程组3对应的不同尺寸网格,则分别在对应的尺寸网格上求解。
本实施例通过接收模拟请求消息,根据从文件中读取模拟对象和计算方程组所需的数据信息,包含模拟对象的网格信息、区域划分参数和时间步长信息;其中,不同计算复杂度的方程组对应不同的网格信息和/或不同时间步长信息;根据所述区域划分参数和模拟对象的网格信息为各进程分配计算子区域以及网格,各进程根据所述网格信息和所述时间步长信息在对应的计算子区域上求解方程组,直到达到约束条件。本发明实施例在保证求解时空精度的情况下根据方程组的计算复杂度为方程组使用不同的时空尺度,解决求解复杂不同方程存在计算速度瓶颈问题,提高了方程求解速度和计算效率。
示例性的,在上述实施例的基础上,所述网格信息包括小尺寸网格和大尺寸网格,所述小尺寸网格为计算复杂度小于预设阈值的方程组对应的网格,所述大尺寸网格为计算复杂度大于或等于预设阈值的方程组对应的网格;
各进程根据所述网格信息和所述时间步长信息在对应的计算子区域上求解方程组包括:
各进程在小尺寸网格上计算计算复杂度小于预设阈值的方程组,在大尺寸网格上计算计算复杂度大于或等于预设阈值的方程组。
其中,预设阈值可以由专业人员根据统计的方程组的计算算法复杂度或者实际求解器测试速度或时间进行自定义。
例如,文件中包含两种网格信息,根据网格尺寸的大小,将网格尺寸较小的网格称为小网格,同理,将网格尺寸较大的网格称为大网格,由于计算复杂度小于预设阈值的方程组,其计算复杂度较低,相应的其计算速度相对计算复杂度大于或等于预设阈值的方程组较快,所以,将计算复杂度较小的方程组在小网格上进行计算;反之,由于计算复杂度大于或等于预设阈值的方程组,其计算复杂度较高,相应的其计算速度相对计算复杂度小于预设阈值的方程组较慢,所以,将计算复杂度较大的方程组在大网格上进行计算,以提高其计算速度。
优选的,所述大尺寸网格的网格尺寸与所述小尺寸网格的网格尺寸之比为正整数;
或者,
所述大尺寸网格的网格尺寸ΔX满足如下公式一:
其中,n1为该进程对应的计算复杂度小于预设阈值的方程组的空间离散精度,n2为计算复杂度大于或等于预设阈值的方程组的空间离散精度,Δx为小尺寸网格的网格尺寸。
其中,空间离散精度是由专业人员根据方程组计算得出的。
示例性的,上述方法还包括:在从小尺寸网格映射到大尺寸网格的过程中进行第一数据交换操作。
示例性的,所述第一数据交换操作包括:将小尺寸网格对应的计算子区域内的边界节点对应的数据求加权平均值,将加权平均值对应写入到大尺寸网格对应的计算子区域内的边界节点。
示例性的,上述方法还包括:在从大尺寸网格映射到小尺寸网格的过程中进行第二数据交换操作。
示例性的,所述第二数据交换操作包括:
采用插值法将该大尺寸网格对应的节点的数据插值到小尺寸网格的边界节点。
示例性的,在上述实施例的基础上,所述时间步长信息包括小时间步长和大时间步长,所述小时间步长为计算复杂度小于预设阈值的方程组对应的时间步长,所述大时间步长为计算复杂度大于或等于预设阈值的方程组对应的时间步长;
各进程根据所述网格信息和所述时间步长信息在对应的计算子区域上求解方程组包括:
各进程采用小时间步长在所述网格信息对应的计算子区域计算计算复杂度小于预设阈值的方程组,采用大时间步长在所述网格信息对应的计算子区域计算计算复杂度大于或等于预设阈值的方程组。
例如,优选的文件中包含两种时间步长信息,根据时间步长的大小,将时间步长较小的时间步长称为小时间步长,将时间步长较大的时间步长称为大时间步长。对于计算复杂度较小计算速度较快的方程组,则采用小时间步长计算;对于计算复杂度较大计算速度较慢的方程组,则采用大时间步长进行计算,以提高其计算速度。
优选的,所述小时间步长与大时间步长之比为正整数;
或者,
所述大时间步长ΔT满足如下公式二:
其中,n1为该进程对应的计算复杂度小于预设阈值的方程组的时间离散精度,n2为计算复杂度大于或等于预设阈值的方程组的时间离散精度,Δt为小时间步长。
示例性的,在上述实施例的基础上,所述区域划分参数为预先设定的区域划分方式;
根据所述区域划分参数和模拟对象的网格信息为各进程分配计算子区域包括:
根据预先设定的区域划分方式为各进程分配对应的计算子区域。
例如,区域划分方式可以为一维、二维或三维;或者,规定在某个方向上划分,例如,对于三维的模拟对象,可以预先设定分别在三个维度上进行划分。
本实施例采用在较小的网格尺寸和/或时间步长上对计算复杂度较低的方程组进行求解,提高时空分辨率;在较大的网格尺寸和/或时间步长求解计算复杂较高的方程组进行求解,以降低方程组的计算量,提高计算效率,从而提高了方程组求解的整体计算效率和速度。
实施例二
图2是本发明实施例二提供的实现计算流体力学大规模实时模拟的方法的流程示意图,本实施例模拟一种对雷诺平均湍流模型以及溶质输运方程与流体流动求解器在不同时间尺度与空间尺度求解的并行算法,以CPU-GPU混合架构系统为基础,采用并行计算系统实现模拟。其并行系统为Mole-8.5超级计算系统,该系统由多个计算节点组成,每个计算节点上有一个Intel(R)Xeon E5520CPU(RAM 16G)与4块NVIDIA TESLA C2050GPU显卡,节点直接通过高速网络进行连接。本实施例采用了Mole-8.5超级计算系统中的一个节点,使用了4个进程,共计使用了4个CPU核心与4个GPU显卡。本实施例的并行系统配置仅起到了示意作用,在其他实施例中可以采用现有的各种纯CPU架构或CPU-GPU混合架构以及其他计算机架构的并行计算系统。
在本实施例中涉及到多松弛时间的格子波尔兹曼方法(不限于该流体模拟方法)、标准k-epsilon湍流模型(不限于该湍流模型)以及溶质输运扩散方程。其中,多松弛时间的格子波尔兹曼方法的表达式如下述公式三:
上述公式三中,f为离散速度分布函数向量,ei是离散速度矢量,M是变换矩阵,S是矩阵,m由m=Mf计算得到是速度矩向量,meq是平衡矩,I是单位矩阵,F为矩空间中的作用力。在计算过程中,先计算方程的右侧,这个过程仅涉及到当地计算节点的计算,然后再对左侧的变量进行赋值,此过程涉及到数据在网格点间进行迁移。
标准k-epsilon湍流模型如下述公式四所示:
上述公式四中,k为湍动动能,ε为湍动耗散率,ui为当地流场速度的分量,v0为流体的动力学粘度,为湍动粘度,Gk=vtS2,S=(2SijSij)1/2以及σk=1.0,σε=1.3,c1=1.44,c2=1.92和Cμ=0.09。
溶质输运方程如下述公式五所示:
其中,C为入口处溶质的浓度,Di为溶质的扩散系数,ui为流体的运动速度。
如图2所示,本实施例的方法包括:
步骤21、模拟区域的分解、计算任务划分以及变量空间的开辟;
具体的,消息传递接口(Message Passing Interface,MPI)的初始化,获得每个进程对应MPI空间中的序列号。各进程从文件中读入流体流动区域的构体以及网格信息,同时根据设定的流动区域分割方式将不同进程对应的网格信息(包括大,小尺寸网格)发送到相应的进程中。区域划分过程中应遵循以下原则:使得各个进程之间的计算速度匹配;不同网格划分方式是为了尽可能减少进程之间数据交换量,减少通讯,同时可以通过先计算边界节点,将边界节点的数据传递与内部节点的计算同时进行来掩盖相邻计算域之间的数据交换带来的通讯开销,从而提高并行效率,加快计算速度。建立起与当前进程对应的区域相邻区域对应进程的关系,以便于计算过程中数据交换与传输。为每个GPU进程分配对应的GPU计算设备。根据网格信息,在CPU上开辟相应的大小空间的变量指针并初始化,在开辟变量空间时应注意为需要求解的变量在分配的流动区域边界外再分配一层网格(虚拟网格),用于储存变量求解时所需的相邻边界的数据;同时在GPU上开辟指针变量空间,将CPU上相应的变量拷贝到GPU中(若使用高版本的CUDA,CUDA5.5以上,可以不需要在程序中给出拷贝的过程)。由于计算过程中需要传递数据,应为需要传递的数据在GPU与CPU各开辟合适大小的指针空间。
步骤22、在较小尺寸网格和时间步长上求解计算复杂度较低(求解速度较快)的方程(格子波尔兹曼方程);
该计算在较小的网格尺寸以及时间步长上进行,求解的过程中使用运算平台(Compute Unified Device Architecture,CUDA)中的流技术Stream,开辟两个流分别对应着与虚拟网格相邻的边界网格点的计算以及内部网格点的计算。这两个流共发进行,这样可以实现在边界网格点计算完成后进行GPU到GPU、CPU与CPU之间以及CPU到GPU的数据交换的同时计算内部节点的碰撞迁移过程,来掩盖数据传输带来的额外计算开销。在计算碰撞过程中,需要将离散速度分布函数转换到矩空间,在这一过程中需要进行矩阵操作,在此计算中可以直接使用Mf的展开形式进行求解而不是通过使用for循环来求解,从而减少计算量;同理在将矩空间的变量转换到离散速度空间时也需要进行矩阵操作而且需要对矩阵求逆,由于需要求逆的矩阵是正交矩阵而且矩阵中每一个分量值并未发生变化,因此也可以直接使用其展开形式进行求解,来减少计算量。需要注意的是,格子波尔兹曼求解的过程中需要湍流模型方程计算提供的湍流粘度,由于湍流粘度计算的时间步长比格子波尔兹曼方法的时间步长大,格子波尔兹曼方法使用的湍流粘度为上一湍流粘度计算时刻所得的粘度,也可以通过外推的方法来获得当前时刻格子波尔兹曼方法需要的粘度。在碰撞-迁移过程完成以后,对边界处的数据进行交换,数据交换的过程中,先完成一个方向上的数据交换后,再进行下一个方向上的数据交换,最终完成整体的数据交换过程。
步骤23、在较大尺寸网格和时间步长上求解计算复杂度较大的方程(湍流方程以及溶质输运方程);
该计算在较大的网格尺寸和时间步长上进行,求解过程依然采用了CUDA中的流技术Stream,开辟两个流分别对应着与虚拟网格相邻的边界网格点的计算以及内部网格点的计算。这两个流共发进行,这样可以实现在边界网格点计算完成后进行GPU到GPU、CPU与CPU之间以及CPU到GPU的数据交换的同时计算内部节点的碰撞迁移过程,来掩盖数据传递带来的额外计算开销。为了保证湍流方程以及其他标量方程在模拟过程中与流体求解器方法在时空精度上保持一致。求解速度较慢的方程的时间步长由时间离散精度以及求解速度较快方程的时间步长来确定其中n1为求解速度较快方程的时间离散精度(阶数),n2为求解速度较慢方程的离散精度(阶数),Δt为求解速度较快方程的时间步长,ΔT为求解速度较慢方程的时间步长;求解速度较慢方程的空间步长由方程空间离散精度以及求解速度较快方程的空间步长来确定其中n1为求解速度较快方程的空间离散精度(阶数),n2为求解速度较慢方程的空间离散精度(阶数),Δx为求解速度较快方程的空间步长,ΔX为求解速度较慢方程的空间步长,为了保证加速n1≤n2。因此在求解过程中需要对计算的离散格式与计算步长做相应的选择与规划。由于湍流方程中存在非线性源项,在方程离散过程中可以将非线性源项线性化正系数化处理。由于高阶空间离散格式虽然精度高但是在边界处需要多层相邻计算区域的数据,数据通讯开销大,不适合并行,故在计算实施过程中对边界网格节点采用一阶离散格式,而在内部节点上使用高阶离散格式。这样可以提高数值精度而不降低并行效率。隐式求解迭代过程使用的是亚松弛迭代法(也可以选用计算速度更快的GERMS等),松弛因子选为0.5;计算过程中湍流模型方程的变量与湍流粘度耦合求解;迭代过程中,选取最大迭代此次为20次,也可以加入最小残差的限制。其他标量方程也可以按照上述方法加入程序中进行求解。
步骤24、是否到达到用户需求的状态;
若是,则返回执行步骤22和23;若否,则执行步骤25。
步骤25、将所需的计算结果按后处理所需的数据格式并行输出。
一个算例的终止条件可以为流动达到稳定状态,或者某些被考察的物理量达到稳定不变或者统计要求,或者为满足用户所要求计算的物理时间或者更新次数。
本实施例在较小尺寸网格和时间步长上对计算复杂度较低的方程进行求解,提高时空分辨率;在较大尺寸网格和时间步长上对计算复杂度较高的方程进行求解,克服这类方程求解时计算量大,并行效率低的缺点;从而提高了计算效率和速度。另外,利用并行计算机集群以及GPU等计算设备对方程进行并行求解,加快了求解的速度,提高了计算效率,可扩展性好。另外提出了边界处采用数据交换量较小的空间离散数值格式来减少并行计算时数据传输开销,在内部节点采用精度较高的空间离散计算格式来保证计算精度。
实施例三
图3是本发明实施例三提供的实现计算流体力学大规模实时模拟的方法的流程示意图,本实施例为基于离散格子玻尔兹曼方法(Lattice Boltzmann Method,LBM)的大规模GPU并行计算方法的实施例。如图3所示,具体包括:
步骤31、设置并行参数,从文件中读取计算方程组所需的数据信息,所述数据信息包含模拟对象的构体信息、区域划分参数和时间步长信息,执行步骤32;
步骤32、开辟计算所需变量的物理空间,执行步骤33;
步骤33、在较小尺寸网格和时间步长上更新边界节点处的流动方程;
步骤34、进行边界处数据交换同时更新小尺寸网格的内部节点,执行步骤34;
步骤35、判定待求解方程对应的尺寸网格是否为大尺寸网格;
若是,则执行步骤36,否则执行39。
步骤36、在较大尺寸网格和时间步长上更新边界节点处的湍流等其它流动方程,执行步骤37;
步骤37、进行边界处数据交换同时更新大尺寸网格的内部节点,执行步骤38;
步骤38、判定迭代是否完成;
若是,则执行步骤39,若否则返回步骤35。
步骤39、是否达到约束条件。
若是,则结束求解;若否,则执行步骤33。
本实施例通过为计算所需的变量开辟物理空间,设置GPU上计算所需的变量。而后计算在较小尺寸网格和时间步长上更新边界处的节点,而后传输边界处的信息与此同时开始内部的节点计算,隐藏通讯带来的开销。若更新进行到时间步长上,需要对大尺寸网格和时间步长模拟的方程进行更新。在更新的时候,先更新边界上的节点,而后边界节点数据的传输与内部节点的计算共发(同时)进行,达到掩盖通讯开销的目的。大的尺寸网格和时间步长上的计算达到迭代次数时,进行下一时间的流动方程的更新。直到达到计算终止的条件,加快了求解的速度,提高了计算效率。
实施例四
本实施例为模拟一个流体力学标准算例即模拟一个立方体槽内的湍流混合过程。其中,立方槽的高度为10米,入口为正方形位于槽的右侧面中心位置离底部5米,出口位于槽的左侧中心位置离底部1.5米,网格尺寸为0.1米,网格量为1,000,000。入口为充分发展湍流速度入口,出口为压力出口,壁面采用无滑移边界条件。入口处湍动动能为5%,湍动耗散率设置为基于湍动粘度计算的入口雷诺数为1,000。入口速度为5m/s,槽内流体的密度为1000kg/m3,流入的流体密度为711kg/m3,湍动施密特数sct=0.7,流体的动力学粘度均为1.0*10-4m2/s。出口处的湍动动能和湍动耗散率为诺依曼边界条件。计算过程中使用了4个Intel(R)Xeon E5430CPU(RAM 16G)与4块NVIDIA TESLA C2050卡。图4a为采用本发明实施例提供的方法进行模拟的效果示意图,图4b为采用现有技术提供的方法进行模拟的效果示意图,可以看出模拟结果吻合的很好。而达到相同的模拟效果所需的计算时间如图4c所示,为分别采用本发明实施例提供的方法和采用现有技术提供的方法进行模拟的计算时间的示意图,可以看出,本发明实施例提供的方法比现有技术的方法加速接近20倍,现有技术的方法计算物理时间1秒,需要计算时间201秒;本发明实施例提供的方法计算物理时间1秒,需要10.7秒。
从上述试验可知,本发明实施例中所提供的模拟方法,不仅保留了LBM方法并行性好加速快的特点,而且克服了隐式求解RANS湍流模型计算速度慢,不适合并行的缺点。在计算效率和并行可扩展性上有了很大的提高。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种实现计算流体力学大规模实时模拟的方法,其特征在于,包括:
步骤11、接收模拟请求消息,所述模拟请求消息中包含模拟对象;
步骤12、从文件中读取模拟对象、模拟对象的空间离散网格信息以及计算方程组所需的数据信息,所述数据信息包含区域划分参数和时间步长信息;其中,不同计算复杂度的方程组对应不同时间步长信息;
步骤13、根据所述区域划分参数和模拟对象的空间离散网格信息为各进程分配计算子区域,分别确定各进程对应计算子区域中与相邻进程对应计算子区域无数据交换的内部节点、与相邻进程对应计算子区域有数据交换的边界节点及计算边界节点所需要的相邻进程对应计算子区域计算数据的虚拟节点,并开辟所述虚拟节点空间;所述计算子区域包括不同计算复杂度的方程组对应的不同网格信息;
步骤14、各进程根据所述网格信息和所述时间步长信息在对应的计算子区域上求解方程组,重复步骤14直到达到约束条件。
2.根据权利要求1所述的方法,其特征在于,所述网格信息包括小尺寸网格和大尺寸网格,所述小尺寸网格与大尺寸网格是对相同的物理空间进行离散,其中小尺寸网格的空间分辨率高,网格数量大,大尺寸网格的空间分辨率低,网格数量小;所述小尺寸网格为计算复杂度小于预设阈值的方程组对应的尺寸网格,所述大尺寸网格为计算复杂度大于或等于预设阈值的方程组对应的尺寸网格;
各进程根据所述网格信息和所述时间步长信息在对应的计算子区域上求解方程组包括:
各进程在小尺寸网格对应的方程组的计算复杂度小于预设阈值,在大尺寸网格对应的方程组的计算复杂度大于或等于预设阈值。
3.根据权利要求2所述的方法,其特征在于,所述大尺寸网格与所述小尺寸网格的网格尺度之比为正整数;
或者,
所述大尺寸网格的网格尺寸ΔX满足如下公式一:
<mrow> <mi>&amp;Delta;X</mi> <mo>&amp;le;</mo> <msup> <mrow> <mo>(</mo> <mi>&amp;Delta;x</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>n</mi> <mn>1</mn> </msub> <mo>/</mo> <msub> <mi>n</mi> <mn>2</mn> </msub> </mrow> </msup> </mrow>
其中,n1为该进程对应的计算复杂度小于预设阈值的方程组的空间离散精度,n2为计算复杂度大于或等于预设阈值的方程组的空间离散精度,Δx为小尺寸网格的网格尺寸。
4.根据权利要求2所述的方法,其特征在于,还包括:在从小尺寸网格映射到大尺寸网格的过程中进行第一数据交换操作。
5.根据权利要求4所述的方法,其特征在于,所述第一数据交换操作包括:将小尺寸网格对应的计算子区域内的边界节点对应的数据求加权平均值,将加权平均值对应写入到大尺寸网格对应的计算子区域内的边界节点。
6.根据权利要求2所述的方法,其特征在于,还包括:在从大尺寸网格映射到小尺寸网格的过程中进行第二数据交换操作。
7.根据权利要求6所述的方法,其特征在于,所述第二数据交换操作包括:
采用插值法将该大尺寸网格对应的计算子区域内的边界节点的数据插值到小尺寸网格对应的计算子区域内的边界节点。
8.根据权利要求1所述的方法,其特征在于,所述时间步长信息包括小时间步长和大时间步长,所述小时间步长为计算复杂度小于预设阈值的方程组对应的时间步长,所述大时间步长为计算复杂度大于或等于预设阈值的方程组对应的时间步长;
各进程根据所述网格信息和所述时间步长信息在对应的计算子区域上求解方程组包括:
各进程采用小时间步长在所述网格上计算计算复杂度小于预设阈值的方程组,采用大时间步长在所述网格上计算复杂度大于或等于预设阈值的方程组。
9.根据权利要求8所述的方法,其特征在于,所述小时间步长与大时间步长之比为正整数;
或者,
所述大时间步长ΔT满足如下公式二:
<mrow> <mi>&amp;Delta;</mi> <mi>T</mi> <mo>&amp;le;</mo> <msup> <mrow> <mo>(</mo> <mi>&amp;Delta;</mi> <mi>t</mi> <mo>)</mo> </mrow> <mrow> <msub> <mi>n</mi> <mn>1</mn> </msub> <mo>/</mo> <msub> <mi>n</mi> <mn>2</mn> </msub> </mrow> </msup> <mo>;</mo> </mrow>
其中,n1为该进程对应的计算复杂度小于预设阈值的方程组的时间离散精度,n2为计算复杂度大于或等于预设阈值的方程组的时间离散精度,Δt为小时间步长。
10.根据权利要求1~9任一项所述的方法,其特征在于,所述区域划分参数为预先设定的区域划分方式;
根据所述区域划分参数和模拟对象的空间离散网格信息为各进程分配计算子区域包括:
根据预先设定的区域划分方式为各进程分配对应的计算子区域。
CN201510272453.4A 2015-05-25 2015-05-25 实现计算流体力学大规模实时模拟的方法 Active CN104933225B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510272453.4A CN104933225B (zh) 2015-05-25 2015-05-25 实现计算流体力学大规模实时模拟的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510272453.4A CN104933225B (zh) 2015-05-25 2015-05-25 实现计算流体力学大规模实时模拟的方法

Publications (2)

Publication Number Publication Date
CN104933225A CN104933225A (zh) 2015-09-23
CN104933225B true CN104933225B (zh) 2018-01-09

Family

ID=54120391

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510272453.4A Active CN104933225B (zh) 2015-05-25 2015-05-25 实现计算流体力学大规模实时模拟的方法

Country Status (1)

Country Link
CN (1) CN104933225B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109102568A (zh) * 2018-05-28 2018-12-28 杭州阿特瑞科技有限公司 基于区域分解的血管血流模拟方法及相关装置
CN109409016B (zh) * 2018-12-13 2022-07-29 中国空气动力研究与发展中心计算空气动力研究所 一种航空发动机压气机非定常流动可视化方法
CN110188462A (zh) * 2019-05-29 2019-08-30 无锡恒鼎超级计算中心有限公司 基于神威架构的lbm算法优化方法
CN111858066B (zh) * 2020-07-30 2022-07-15 中国空气动力研究与发展中心超高速空气动力研究所 气体动理论统一算法中的cpu+gpu异构并行优化方法
CN111930491B (zh) * 2020-09-29 2020-12-25 中国人民解放军国防科技大学 一种全局通信优化加速方法、装置和计算机设备
CN112992294B (zh) * 2021-04-19 2021-08-10 中国空气动力研究与发展中心计算空气动力研究所 多孔介质lbm计算网格生成方法
CN116302573B (zh) * 2023-05-23 2023-08-18 北京云道智造科技有限公司 一种并行计算中的核心分配方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102096948A (zh) * 2011-03-01 2011-06-15 西安邮电学院 一种适用图形硬件的分格化方法
CN103345580A (zh) * 2013-07-02 2013-10-09 上海大学 基于格子Boltzmann方法的并行CFD方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102096948A (zh) * 2011-03-01 2011-06-15 西安邮电学院 一种适用图形硬件的分格化方法
CN103345580A (zh) * 2013-07-02 2013-10-09 上海大学 基于格子Boltzmann方法的并行CFD方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HemeLB: A high performance parallel lattice-Boltzmann code for large scale fluid flow in complex geometries;M.D. Mazzeo, P.V. Coveney;《Computer Physics Communications》;20080304;全文 *
基于GPU带有复杂边界的三维实时流体模拟;柳有权 等;《软件学报》;20060331;第17卷(第3期);全文 *

Also Published As

Publication number Publication date
CN104933225A (zh) 2015-09-23

Similar Documents

Publication Publication Date Title
CN104933225B (zh) 实现计算流体力学大规模实时模拟的方法
Xiao et al. A novel CNN-based Poisson solver for fluid simulation
Griebel et al. A multi-GPU accelerated solver for the three-dimensional two-phase incompressible Navier-Stokes equations
Ergul et al. A hierarchical partitioning strategy for an efficient parallelization of the multilevel fast multipole algorithm
Körner et al. Parallel lattice Boltzmann methods for CFD applications
CN102053945B (zh) 一种面向多尺度离散模拟的并行计算系统
CN108563867A (zh) 一种基于OpenFOAM实现WRF和CFD耦合模拟风场的方法
CN103345580B (zh) 基于格子Boltzmann方法的并行CFD方法
CN103425833B (zh) 一种基于熵格子波尔兹曼模型的并行流体计算实现方法
CN108334952A (zh) 一种新型通用量子门及量子线路优化方法
CN103699714B (zh) 一种基于有限元和无网格耦合的柔性物体实时切割仿真方法
CN105574809B (zh) 基于矩阵指数的电磁暂态仿真图形处理器并行计算方法
CN103699715A (zh) 一种基于光滑粒子流体动力学和非线性有限元的流固耦合方法
CN105302974A (zh) 一种基于有限元和时变模态分析的柔性物体实时切割仿真方法
CN102681972A (zh) 一种利用GPU加速格子-Boltzmann的方法
CN107133397A (zh) 一种基于ale法对生物瓣膜进行双向流固耦合分析的方法
CN109726433A (zh) 基于曲面边界条件的三维无粘低速绕流的数值模拟方法
Vanka 2012 Freeman scholar lecture: computational fluid dynamics on graphics processing units
CN110188462A (zh) 基于神威架构的lbm算法优化方法
Lesser et al. Loki: a unified multiphysics simulation framework for production
Sierakowski GPU-centric resolved-particle disperse two-phase flow simulation using the Physalis method
CN103065358B (zh) 一种基于影像体元运算的器官几何重建方法
CN105389853A (zh) 一种基于多gpu的人脑变形仿真方法
Zimmerman et al. High-order spectral difference: verification and acceleration using GPU computing
Fortmeier et al. A parallel strategy for a level set simulation of droplets moving in a liquid medium

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant