气动流场网格Metis自动分区的一种后处理方法
【技术领域】
[0001] 本发明属于数据后处理方法技术领域,具体涉及气动流场网格Metis自动分区的 后处理方法。
【背景技术】
[0002] CFD (计算流体力学)是通过在计算机上数值求解流体与气体动力学基本方程,获 取各种条件下流动的数据和作用在绕流物体上的力、力矩、流动图像和热量的学科,在各类 航空、航天飞行器的气动外形设计和优化中发挥了重要作用。CFD计算一般采用迭代的方式 进行,达到收敛条件需要数千到数万次迭代,从而需要采用并行计算技术来加快计算速度。
[0003] 随着并行数值计算方法的不断进步以及高性能计算机技术的迅速发展,并行计算 在航空航天领域气动流场数值模拟的作用和优势越来越明显,在相关项目前期方案论证、 设计和分析优化中发挥越来越重要的作用。例如波音公司就认为高性能计算能够加速数值 模拟过程、增强模拟能力和改善模拟精度,得到更加高效的飞行器和更少的翼形和飞行测 试,从而达到缩短设计开发过程的同时保持较低的花费。
[0004] METIS是一个划分大规模不规则图,大网格和计算稀疏矩阵填充约化次序的软件 包。METIS的算法是基于多层图划分的算法。Metis的原理是基于多级图形分裂,先对图形 进行连续粗化,对粗化后的图形进行分割,被计算分割后的区域映射到细小的图形上。最 后再把这种划分逐步还原到规模不断增大的图,并在还原过程中用局部方法对划分进行微 调,直到获得原图的划分。
[0005] 气动流场网格数据的完备性定义为该分区包含网格点、网格单元、内边界单元的 所有数据。内边界单元数据包含两个部分,一是自身的网格单元数据,二是它所依赖的网格 单元数据(分区编号,自身编号)。
[0006] 在网格单元的基础上,气动流场网格采用METIS中的mpmetis划分后,其NPART输 出文件只包含网格单元属于哪个分区和网格点属于哪个分区的信息。需要进行后处理实 现:
[0007] 1)各分区网格单元的重新编号;
[0008] 2)各分区网格点的重新编号;
[0009] 3)各分区网格分区内边界单元的确定。
[0010] 国内外研究集中在多层图划分的算法、如何使用METIS对具体问题进行划分。但 是针对使用METIS mpmetis划分后的输出数据,由于问题类型的差异,目前没有公开针对气 动流场网格划分的后处理方法。
[0011] 所以,亟需研制一种满足气动流场网格Metis自动分区要求的后处理方法,以解 决气动流场网格Metis自动分区的后处理问题。
【发明内容】
[0012] 本发明要解决的技术问题是提供气动流场网格Metis自动分区的一种后处理方 法,从而解决气动流场网格Metis自动分区的后处理问题,满足各分区的完备性需求。
[0013] 为了实现这一目的,本发明采取的技术方案是:
[0014] 气动流场网格Metis自动分区的一种后处理方法,包括以下步骤:
[0015] 设定待分区的气动流场网格A包含M个网格点,N个网格单元,分区数为P ;Metis 自动分区后生成N个网格单元所属的分区的数据;
[0016] 设各分区的网格点集合为Gl,G2,……,GP ;各分区的网格单元集合分别为E1, E2,……,EP ;各分区的内边界集合分别B1,B2,……,BP ;
[0017] 内边界集合中任一元素包含三个数据标志(li,zi,ni) :li表示网格单元在本分 区内的编号,zi表示邻接网格单元所属分区号、ni表示邻接网格单元的编号;i = 1~P ;
[0018] 具体步骤如下:
[0019] 步骤1 :根据下述方法删除气动流场网格A中N个网格单元中的冗余网格点数据;
[0020] 冗余网格点删除方法:设单元E中的网格点为(ei,e2, 首先找到重复网格 点并置为一 1,再删除值为一 1的网格点数据,从而将网格单元中冗余网格点删除;具体算 法如下所示:
[0021]
[0022] 步骤2 :根据下述方法生成气动流场网格A的无向图TA ;
[0023] 单分区气动流场网格无向图低计算复杂度生成方法:1)确定网格单元a不重复的 网格点集合G ;2)得到所有包含G中网格点的网格单元集合E ;3)a与E中元素一一比较,得 到a的所有相邻网格单元;其中无向图的顶点为网格单元,边为相邻网格单元的邻接面;
[0024] 步骤3 :创建数组E[4] [N] ;N代表N个网格单元,E[l][:]代表气动流场网格A中 的网格单元是否为边界单元,E[l][:]中的项的值为0表示非边界单元,E[l][ :]中的项 的值为1表示为边界单元,默认为〇 ;E[2][:]表示对应编号的网格单元属于哪个分区,由 Metis分区数据确定;E[3][:]表示各分区网格单元的局部编号;E[4][:]为重复使用部分; 符号":"表示相应数组的全部项,E[l][:]表示E[l] [1],E[1] [2],……,E[1] [N] ;E[2][:] 表示 E[2] [1],E[2] [2],……,E[2] [N] ;E[3][:]表示 E[3] [1],E[3] [2],……,E[3] [N]; E[4][:]表示 E[4][1],E[4][2],……,E[4][N];
[0025] 步骤4 :根据无向图TA和下述边界单元判别方法确定网格A的边界单元,置相应 E[l][:]中的项的值为1 ;
[0026] 边界单元判别方法:如果网格单元的邻接单元数少于其面数,则视为边界单元; 网格单元的邻接单元数即为对应无向图的边数;
[0027] 步骤5 :根据Metis划分后的网格单元所属分区,直接加载E[2][:]各项的值;根 据Metis划分后的网格点所属分区,把相应网格点加入相应的网格点集合;
[0028] 步骤6 :把网格单元η加入集合Ep,其局部编号为Ip ;
[0029] 设置 Ip = 0, p = 1、2、......、P;
[0030] 步骤 7 :n = I ;
[0031] 步骤 8 :Ip = Ip+1 ;其中 p = E[2] [n]+l ;
[0032] 步骤9 :E[3] [η] = Ip,将所有网格分区的局部编号并保存于E[3][:]中;
[0033] 步骤10 :如果η彡N满足,转步骤8,否则转步骤11 ;
[0034] 步骤 11 :设置 Ip = 0, ρ = 1、2、......、Ρ;
[0035] 步骤 12 :m = 1 ;
[0036] 步骤13 :Ip = Ip+1 ;其中ρ的值为Metis划分后网格点所属分区的值加1 ;
[0037] 步骤14 :把网格点m加入集合Gp,其局部编号为Ip ;
[0038] 步骤15 :如果m彡M满足,转步骤13,否则转步骤16 ;
[0039] 步骤 16 :p = 1 ;
[0040] 步骤 17 :置 E [4][:]为 0 ;
[0041] 步骤18 :根据步骤2中单分区气动流场网格无向图低计算复杂度生成方法生成第 P个分区(Gp,Ep)的无向图;
[0042] 步骤19 :根据无向图和步骤4中的边界单元判别方法确定分区网格ρ的边界单 元,置相应E [4][:]中的项值为1 ;
[0043] 分区网格ρ中局部网格单元编号到全局网格A的网格网格单元编号之间的映射由 E[2][:]、E[3][ :]得到;
[0044] 步骤20 :E[4][:]与E[l][:]的所有项值相减,得到的结果为1,0,一 1三种;结果 为1的网格单元为分区网格P的内边界单元,其局部编号设为11,12,…,10,全局编号为 gl,g2, ···, g0 ;
[0045] 步骤21 :根据无向图TA邻接顶点,得到gi (1〈 = i〈 = 0)所有的邻接网格单元, 邻接网格单元的全局编号为kl,k2,…,kl ;
[0046] 根据E[2][:],删除属于ρ分区的邻接网格单元,剩下的网格单元全局编号为kjl, kj2,
[0047] 根据E[2] [:],E[3][:],得到对应全局编号的分区编号zi、局部编号ni,与全局编 号 对应;
[0048] 然后得到一系列三元组(li,zi,ni);如果(li,zi,ni)在集合Bp内不重复,则把 (li,zi,ni)加入集合 Bp ;
[0049] 步骤 22 :p = p+1 ;
[0050] 步骤23 :如果ρ彡P满足,转步骤17,否则转步骤24 ;
[0051] 步骤24 :输出各分区的网格点集合G1,G2,……,GP ;各分区的网格单元集合分别 为E1,E2,……4卩,内边界集合81,82,……,BP ;
[0052] 步骤25:后处理完成。
[0053] 进一步的,如上所述的气动流场网格Metis自动分区的一种后处理方法,最终分 区完成的气动流场网格的数据格式为Tecplot数据格式。
[0054] 进一步的,如上所述的气动流场网格Metis自动分区的一种后处理方法,本方法 的具体操作流程采用轻量级Python脚本语言来实现。
[0055] 进一步的,如上所述的气动流场网格Metis自动分区的一种后处理方法,大小确 定的数组E[4] [N]用数组定义,集合大小不定的用IistO动态对象来实现。
[0056] 本发明的有益效果为:
[0057] (1)能够满足各分区网格单元、网格点重新编号的要求;
[0058] (2)能够快速确定各分区网格内边界的边界单元;
【附图说明】
[0059] 图1是网格分区示意图;
[0060] 图2是Metis分区数据。
【具体实施方式】
[0061] 下面结合附图和具体实施例对本发明技术方案进行进一步相信说明。
[0062] 图1为含有1 - 6个网格单元的气动流场,其中边为邻接面,圆圈为网格单元,划 分为3个分区,编号分别0、l、2〇Meti S自动分区后网格单元部分的数据格式(命名为Metis 单元数据)如图2所示,只表示每个网格单元所属的分区。网格点部分数据格式类似。
[0063] 本发明气动流场网格Metis自动分区的一种后处理方法,包括以下步骤:
[0064] 设定待分区的气动流场网格A包含M个网格点,N个网格单元,分区数为P ;Metis 自动分区后生成N个网格单元所属的分区的数据;
[0065] 设各分区的网格点集合为Gl,G2,……,GP ;各分区的网格单元集合分别为E1, E2,……,EP ;各分区的内边界集合分别B1,B2,……,BP ;
[0066] 内边界集合中任一元素包含三个数据标志(li,zi,ni) :li表示网格单元在本分 区内的编号,zi表示邻接网格单元所属分区号、ni表示邻接网格单元的编号;i = 1~P ;
[0067] 具体步骤如下:
[0068] 步骤1 :根据下述方法删除气动流场网格A中N个网格单元中的冗余网格点数据;
[0069] 冗余网格点删除方法:设单元E中的网格点为(ei,e2, 首先找到重复网格 点并置为一 1,再删除值为一 1的网格点数据,从而将网格单元中冗余网格点删除;具体算 法如下所示:
[0070]
[0071] 如对图1左边的四面体单元,包含(1,2,3, 4)四个网格点。而在网格单元的实际数 据表示时,可能为(1,2, 3, 1,4, 4, 4, 4)。需要剔除冗余的网格点数据,算法如图2所示。设 单兀E中的网格点为G1, e2,…,eK),图2中的行1 - 4找到重复网格点并置为一1,行5 - 7删除值为一1的网格点数据。
[0072]