有效
流场变量的通信方法、装置、终端设备及存储介质
赵钟、万云博、何磊、何先耀、张勇、陈坚强
中国空气动力研究与发展中心计算空气动力研究所
赵
赵钟机构 暂无
技术领域 暂无
万
万云博机构 暂无
技术领域 暂无
何
何磊机构 暂无
技术领域 暂无
何
何先耀机构 暂无
技术领域 暂无
张
张勇机构 暂无
技术领域 暂无
陈
陈坚强机构 暂无
技术领域 暂无
摘要
本申请公开了一种流场变量的通信方法、装置、终端设备及存储介质,通过获取初始计算网格,并对初始计算网格进行分区,得到多个网格子区域;创建与第一网格子区域对应的第一虚拟网格,以及与第二网格子区域对应的第二虚拟网格;获取第一网格子区域的一个或多个流场变量数据;对一个或多个流场变量数据进行压缩,并将压缩后的数据存储到第一通信数据容器中;将第一通信数据容器通过消息传递模式发送至的第二虚拟网格。在CFD迭代计算过程中,通过建立通信数据容器,将多个流场变量数据压缩后保存在通信数据容器中,然后发送至其他的线程中,这样,可以将一个迭代步中的多次通信过程减少为一次通信过程,从而实现了并行效率的大幅提升。
1.流场变量的通信方法,其特征在于,所述方法包括:获取初始计算网格,并对所述初始计算网格进行分区,得到多个网格子区域,所述网格子区域至少包括第一网格子区域和第二网格子区域,且所述第一网格子区域和所述第二网格子区域相邻;创建与所述第一网格子区域对应的第一虚拟网格,以及与所述第二网格子区域对应的第二虚拟网格;所述虚拟网格为每个子区域中用于存储相邻子区域中网格数据的单元;获取所述第一网格子区域的一个或多个流场变量数据;对一个或多个所述流场变量数据进行压缩,并将压缩后的数据存储到第一通信数据容器中;其中,所述流场变量数据为多个多维数组数据,压缩后的数据为一维数组数据;将所述第一通信数据容器通过消息传递模式发送至的所述第二虚拟网格;所述方法还包括:接收所述第二网格子区域对应的第二虚拟网格发送的第二通信数据容器对应的数据;将所述第二通信数据容器中的数据转换成多个多维数据的数据,得到多个多维的流场变量数据,并将所述多个多维的流场变量数据对所述第一虚拟网格中的原始的流场变量数据进行更新;其中:所述获取所述第一网格子区域的一个或多个流场变量数据,包括:获取所述流场变量数据在所述第一虚拟网格中的内存地址;依次循环所述第一网格子区域中所有的交界面,并获取交界面对应的实网格单元编号;依次将所述第一网格子区域内的各个网格单元的流场变量数据对所述第一虚拟网格中的数据进行更新。
2.根据权利要求1所述的流场变量的通信方法,其特征在于,所述流场变量数据至少包括流场变量类型、名称和数组维度;其中,所述流场变量类型至少包括整型数据类型、浮点型数据类型或布尔型数据类型中的一种;所述名称至少包括字符串,所述数组维度至少包括二维以及二维以上数组。
3.根据权利要求2所述的流场变量的通信方法,其特征在于,所述对所述一个或多个所述流场变量数据进行压缩,并将压缩后的数据存储到第一通信数据容器中,包括:为所述第一通信数据容器设置内存空间,并将内存指针移动至所述内存空间首地址;计算各个流场变量数据对应的第一字节数;对于所述第一网格子区域内的各个交界面,计算每个交界面在所述第一通信数据容器中的第一面编号;根据所述第一字节数和所述第一面编号,将所述流场变量数据转换成一维数组的数据;将所述一维数组的数据压缩至所述第一通信数据容器。
4.根据权利要求3所述的流场变量的通信方法,其特征在于,所述将所述第一通信数据容器通过消息传递模式发送至的所述第二虚拟网格,包括:根据所述第一通信数据容器的数据长度和进程编号,采用消息传递模式将一维数组的数据放至所述第二虚拟网格,其中,所述数据长度为需要发送数据的总长度,所述进程编号为所述第一网格子区域的进程编号和相邻网格子区域的进程编号。
5.根据权利要求1所述的流场变量的通信方法,其特征在于,所述将所述第二通信数据容器中的数据转换成多个多维数据的数据,得到多个多维的流场变量数据,并将所述多个多维的流场变量数据对所述第一虚拟网格中的原始的流场变量数据进行更新,包括:将接收到的第二通信数据容器的内存指针移动至内存空间首地址;对所述第二通信数据容器中的数据进行解压处理,并计算解压后的各个流场变量的第二字节数;对于第二网格子区域内的各个交界面,计算每个交界面在所述第二通信数据容器中的第二面编号;根据所述第二字节数和所述第二面编号,将所述流场变量数据逐一更新到所述第一虚拟网格中。
6.一种流场变量的通信装置,其特征在于,所述装置包括:第一获取模块,用于获取初始计算网格,并对所述初始计算网格进行分区,得到多个网格子区域,所述网格子区域至少包括第一网格子区域和第二网格子区域,且所述第一网格子区域和所述第二网格子区域相邻;创建模块,用于创建与所述第一网格子区域对应的第一虚拟网格,以及与所述第二网格子区域对应的第二虚拟网格;所述虚拟网格为每个子区域中用于存储相邻子区域中网格数据的单元;第二获取模块,用于获取所述第一网格子区域的一个或多个流场变量数据;压缩模块,用于对一个或多个所述流场变量数据进行压缩,并将压缩后的数据存储到第一通信数据容器中;其中,所述流场变量数据为多个多维数组数据,压缩后的数据为一维数组数据;发送模块,用于将所述第一通信数据容器通过消息传递模式发送至的所述第二虚拟网格;所述装置还包括接收模块,所述接收模块用于:接收所述第二网格子区域对应的第二虚拟网格发送的第二通信数据容器对应的数据;将所述第二通信数据容器中的数据转换成多个多维数据的数据,得到多个多维的流场变量数据,并将所述多个多维的流场变量数据对所述第一虚拟网格中的原始的流场变量数据进行更新;其中:所述第二获取模块用于:获取所述流场变量数据在所述第一虚拟网格中的内存地址;依次循环所述第一网格子区域中所有的交界面,并获取交界面对应的实网格单元编号;依次将所述第一网格子区域内的各个网格单元的流场变量数据对所述第一虚拟网格中的数据进行更新。
7.一种终端设备,其特征在于,包括:至少一个处理器和存储器;所述存储器存储计算机程序;所述至少一个处理器执行所述存储器存储的计算机程序,以实现权利要求1-5中任一项所述的流场变量的通信方法。
8.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有计算机程序,所述计算机程序被执行时实现权利要求1-5中任一项所述的流场变量的通信方法。
暂无引用专利



