有效
一种分布式非结构网格跨处理器面对接方法及系统
郭永恒、肖中云、刘杨、赵钟、何先耀、马率、牟斌
中国空气动力研究与发展中心计算空气动力研究所
郭
郭永恒机构 暂无
技术领域 暂无
肖
肖中云机构 暂无
技术领域 暂无
刘
刘杨机构 暂无
技术领域 暂无
赵
赵钟机构 暂无
技术领域 暂无
何
何先耀机构 暂无
技术领域 暂无
马
马率机构 暂无
技术领域 暂无
牟
牟斌机构 暂无
技术领域 暂无
摘要
本发明涉及网格处理技术领域,公开了一种分布式非结构网格跨处理器面对接方法及系统,该对接方法,采用两级索引结构并行化识别网格分区边界两侧的面对接关系;对任意两个对接面元素,依次对它们的质心坐标和归一化的网格点序列执行等价性判断。包括以下步骤:S1,并行导入分布式非结构网格基本几何数据;S2,跨处理器构造子区域之间的对偶通信列表;S3,并行构造对接边界处的曲面网格离散结构;S4,在各处理器上构造查询集合族的叉树结构;S5,跨处理器查询对接面元素之间的配对关系;S6,并行导出分布式非结构网格的面对接信息。本发明解决了现有技术存在的大规模非结构网格处理时处理效率低、数据处理能力差等问题。
1.一种分布式非结构网格跨处理器面对接方法,其特征在于,采用两级索引结构并行化识别网格分区边界两侧的面对接关系;对任意两个对接面元素,依次对它们的质心坐标和归一化的网格点序列执行等价性判断;包括以下步骤:S1,并行导入分布式非结构网格基本几何数据;S2,跨处理器构造子区域之间的对偶通信列表;S3,并行构造对接边界处的曲面网格离散结构;S4,在各处理器上构造查询集合族的叉树结构;S5,跨处理器查询对接面元素之间的配对关系;S6,并行导出分布式非结构网格的面对接信息;步骤S1包括以下步骤:S11,各处理器依次导入第0至M-1级关联子网格的空间点信息;S12,各处理器依次导入第0至M-1级关联子网格的面元素信息;S13,各处理器依次导入第0至M-1级关联子网格的体单元信息;S14,各处理器依次导入第0至M-1级关联子网格上每个面元素两侧的体单元信息以及面元素的边界性质标识;当某个面元素位于子网格内部时,该面元素的两侧都有体单元存在;当某个面元素的边界性质标识显示该面元素是物理边界或区域分解边界时,且该面元素其中的一侧在当前处理器上不存在体单元,在该面元素的不存在体单元的一侧设置虚拟单元容器;步骤S2包括以下步骤:S21,计算全局一致的网格尺度公差epsilon:在各处理器上,对第0级子网格的面元素序列以及每个面元素的棱边进行二重遍历,设第i号面元素的第j号棱边的长度为length[i][j],则当前计算区域上子网格的最小分辨率resolution=min{length[i][j],i=0,1,2,…,j=0,1,2,…},通过MPI全局规约操作得到resolution,然后利用epsilon=resolution*beta得到epsilon,再用epsilon来实现空间点的重合判断;其中,0.01≤beta≤0.1;S22,构造第0级子网格坐标序列的三阶协方差矩阵G并计算协方差矩阵G的特征向量,三阶协方差矩阵G的计算公式为:G[i][j]=Covariance(g[i],g[j]);其中,Covariance表示二元向量的协方差运算符,G[i][j]表示三阶协方差矩阵G的第i行第j列的元素;在每个处理器上,设第0级子网格空间点坐标数据依次存储于三个K维向量容器中,g[0]=(x[0],x[1],…x[s],…,x[K-1]) T ,g[1]=(y[0],y[1],…x[s],…,y[K-1]) T ,g[2]=(z[0],z[1],…x[s],…,z[K-1]) T ,其中,s表示第0级子网格空间点的网格点编号,x[s],y[s],z[s]为第s个网格点的三个空间坐标分量,K表示网格点序列的长度,T表示向量的转置运算;通过数值方法计算协方差矩阵G的全部单位特征向量e[0]、e[1]、e[2],并使单位特征向量e[0]、e[1]、e[2]满足右手系规则;S23,在各处理器上构造第0级子网格的最小边界包围盒;根据步骤S22的结果,在三维欧氏空间中选取一个长方体,此长方体同时满足以下条件:①三组平行的表面分别以单位特征向量e[0]、e[1]、e[2]为法向量;②第0级子网格完全包含在长方体区域内部;③子网格到长方体六个表面的最小距离皆等于全局一致的网格尺度公差epsilon;以此长方体作为当前处理器上第0级子网格的最小边界包围盒,结合MPI广播通信,使每个最小边界包围盒的几何参数在全部处理器上实现共享存储;S24,在各处理器上并行判断最小边界包围盒之间的相交关系,建立子区域之间的对偶通信二维表。
2.根据权利要求1所述的一种分布式非结构网格跨处理器面对接方法,其特征在于,步骤S3包括以下步骤:S31,在各处理器上,根据边界性质标识依次提取第m级子网格上对接面元素的局部编号,分别存储在C++标准模板库的向量容器中并关联到相应子网格上;S32,在各处理器上,依次提取第m级子网格上对接面元素包含的网格点总数,分别存储在C++标准模板库的向量容器中并关联到相应子网格上;S33,在各处理器上,根据S11的空间点信息和S12的面元素信息建立面元素与网格点之间的关联关系,依次提取第m级子网格上对接面元素具备的网格点坐标数据,分别存储在C++标准模板库的向量容器中并关联到相应子网格上。
3.根据权利要求2所述的一种分布式非结构网格跨处理器面对接方法,其特征在于,步骤S4包括以下步骤:S41,在各处理器上,对第m级子网格的对接面容器,以S21计算出的全局一致的网格尺度公差epsilon作为对接面网格点序列的交替方向数字树latticeBinaryTree和对接面质心序列的交替方向数字树centroidBinaryTree的公差参数,完成latticeBinaryTree和centroidBinaryTree的根结点的初始化;S42,在各处理器上,对第m级子网格的对接面容器,依次遍历每个对接面上的网格点序列,生成latticeBinaryTree的各个子结点,同时完成网格点的归一化;S43,在各处理器上,对第m级子网格的对接面容器,依次遍历每个对接面上的质心序列,生成centroidBinaryTree的各个子结点,完成质心等价面元素的初筛分组。
4.根据权利要求3所述的一种分布式非结构网格跨处理器面对接方法,其特征在于,步骤S43中,完成质心等价面元素的初筛分组的过程中,如果在centroidBinaryTree上不存在包含当前对接面元素的质心等价分组,则在相应位置上增加新的子结点,并与新建的等价对接面地址空集合链接起来,然后,把当前对接面元素的首地址插入该集合中;如果在centroidBinaryTree存在一个子结点,与之链接的对接面地址集合包含与当前对接面质心等价的元素,则无需增加新的子结点,直接将前对接面的地址插入到该集合中。
5.根据权利要求4所述的一种分布式非结构网格跨处理器面对接方法,其特征在于,步骤S5包括以下步骤:S51,在第n号处理器上,对第m级子网格的对接面元素序列,将每个对接面的编号、网格点总数以及空间坐标数据加以打包,发送到对偶处理器上进行信息共享;S52,在每个对偶处理器上,依次解析打包数据中的对接面信息,计算对接面元素的质心坐标,并结合同级子网格对应的交替方向数字树centroidBinaryTree加以查询比较,在latticeBinaryTree上找到全部的关联网格点;S53,在对偶处理器上,结合同级子网格相关的交替方向数字树latticeBinaryTree,对当前解析出的对接面元素网格点序列进行编号并排序,然后进入质心等价分组中执行精确查询与比较;如果质心等价分组中存在各网格点编号完全一致的元素,说明当前面对接元素配对成功,记录相应的对偶元素编号和当前对偶处理器的编号,否则说明配对失败,直接删除当前来自其它处理器的对接面元素的几何信息;S54,在第n号处理器的一个或多个对偶处理器上,记录第m级子网格上配对成功的几何信息并打包,结合MPI通信函数接口,逆向返回到第n号处理器上加以解析,将面对接关系存储在S14构造的虚拟单元容器中。
6.一种分布式非结构网格跨处理器面对接系统,其特征在于,基于权利要求1至5任一项所述的一种分布式非结构网格跨处理器面对接方法,包括依次电相连的并行导入模块、对偶通信构建模块、离散结构构建模块、叉树结构构建模块、配对关系查询模块、并行导出模块,并行导入模块,用以并行导入分布式非结构网格基本几何数据;对偶通信构建模块,用以跨处理器构造子区域之间的对偶通信列表;离散结构构建模块,用以并行构造对接边界处的曲面网格离散结构;叉树结构构建模块,在各处理器上构造查询集合族的叉树结构;配对关系查询模块,跨处理器查询对接面元素之间的配对关系;并行导出模块,并行导出分布式非结构网格的面对接信息。



