一种气动流场网格无向图的低计算复杂度构造方法

文档序号:9865791阅读:490来源:国知局
一种气动流场网格无向图的低计算复杂度构造方法
【技术领域】
[0001] 本发明属于高性能并行计算技术领域,具体设及一种气动流场网格无向图的低计 算复杂度构造方法。
【背景技术】
[0002] CFD (计算流体力学)是通过在计算机上数值求解流体与气体动力学基本方程,获 取各种条件下流动的数据和作用在绕流物体上的力、力矩、流动图像和热量的学科,在各类 航空、航天飞行器的气动外形设计和优化中发挥了重要作用。CFD计算一般采用迭代的方式 进行,达到收敛条件需要数千到数万次迭代,从而需要采用并行计算技术来加快计算速度。
[0003] 随着并行数值计算方法的不断进步W及高性能计算机技术的迅速发展,并行计算 在航空航天领域气动流场数值模拟的作用和优势越来越明显,在相关项目前期方案论证、 设计和分析优化中发挥越来越重要的作用。例如波音公司就认为高性能计算能够加速数值 模拟过程、增强模拟能力和改善模拟精度,得到更加高效的飞行器和更少的翼形和飞行测 试,从而达到缩短设计开发过程的同时保持较低的花费。
[0004] CFD并行计算一般采用分区并行的方式,分区方法主要有两种:
[0005] (1)人工分区,指气动流场网格生成时人为指定其边界,分区大小(网格数量)不 一,并行计算时难W达到负载平衡,从而需要对大分区进行重新分区W改进负载平衡。
[0006] 似自动分区,指由Metis程序等来对网格进行剖分。
[0007] 无论是方法1中的重新分区或者方法2都需要确定剖分出来的不同分区之间的 内分区边界及边界单元所属分区,从而需要对相应流场网格生成无向图,确定网格单元之 间的连接关系。无向图中的顶点对应流场的网格单元,无向图中的边对应Ξ维网格单元之 间的交界面。
[0008] 通常的气动流场网格数据可W用Tecplot形式等来表达,主要包含两个方面的数 据:
[0009] (1)M 个网格点的坐标,如(Xi, yi, Zi),(而,72, Z2),......(? 7μ,Zm),其编号为 1、 2、......、M。
[0010] (2)N个网格单元,每个网格单元由若干个网格点组成,编号为1、2、……、N。
[0011] 判断两个网格单元之间是否有邻接关系可W用相同网格点数来判别,如果相同网 格点数目大于等于3则可确定两个网格单元为邻接关系。在对应的无向图中表示为两个顶 点之间存在一条边。
[0012] 因为依赖的是图论等相关理论基础,具有科研价值,目前国内外研究对无向图剖 分的研究很多。但是对于如何针对气动流场网格生成无向图,没有见到相关公开的研究工 作或者专利。
[0013] 常用的气动流场网格无向图生成可W采用顺序比较的方式,命名为无向图生成方 法A :
[0014] (1)1号网格单元分别与2,3,……,N号网格单元中的网格点进行比较,找出相同 网格点数目大于等于3的网格单元。假设η号网格单元与1号邻接,由于是无向图,分别在 1号网格单元的邻接列表中添加编号η (代表η是1的邻居),在η号网格单元的邻接列表 中添加编号1 (代表1是η的邻居)。
[0015] (2)2号网格单元分别与3,4,……,Ν号网格单元相比较,找出邻接网格单元,并 对邻接列表进行修改。
[0016] (3)依次进行,直至Ν号网格单元。
[0017] 无向图生成方法A中主要的操作是网格单元之间的网格点的比较,计为一个操 作,则无向图生成方法A的需要的数为:
[0018]
[0019] 其计算复杂度为0(妒)。运对于大网格(网格量单元数目多),如百万、千万量级、 甚至更大的网格,其计算量是无法接受的。与此同时,网格量大的网格更加依靠并行计算技 术,需要生成无向图进行剖分。
[0020] 因此,亟需研制一种计算量低、计算复杂度低的气动流场网格无向图生成方法,满 足大网格无向图的生成需求。

【发明内容】

[0021] 本发明要解决的技术问题是提供一种气动流场网格无向图的低计算复杂度构造 方法,W提高气动流场网格无向图生成速度,解决气动流场网格无向图生成的计算量过大 的问题。
[0022] 为了实现运一目的,本发明采取的技术方案是:
[0023] 一种气动流场网格无向图的低计算复杂度构造方法,包括如下步骤:
[0024] 首先确定网格单元中冗余网格点删除方法和两个网格单元是否相邻的比较方 法:
[00巧]存在混合网格单元时,需要对网格单元中的网格点进行统一处理;设单元E中的 网格点为(ei,62, ···,%),首先找到重复网格点并置为一1,再删除值为一1的网格点数据, 从而将网格单元中冗余网格点删除;具体算法如图2所示;
[0026] 设单元E。中的网格点为(曰1,曰2,…,曰:),ai表示单元E。中的网格点;单元Eb中的 网格点为化1,bz,…,bj),bj表示单元Eb中的网格点;iSame为两个网格单元中相同网格点 的计数:如果iSame > 3,则运两个网格单元被视为邻接网格单元;否则视为非邻接网格单 元;具体算法如图3所示;
[0027] 确定了网格单元中冗余网格点删除方法和两个网格单元是否相邻的比较方法之 后,假设气动流场网格包含Μ个网格点,N个网格单元,本发明的无向图生成方法主要包括 如下具体步骤:
[0028] 定义顶点数为顶点对应气动流场的网格单元的数量,定义边数为对应单元之间的 交接面的数量,则无向图的数据表达方式包括两部分,一是顶点数和边数;二是集合Ρ,Ρ包 含Ν个子集合(Ρ1,Ρ2,…,ΡΝ),子集合η的所有元素对应编号为η的顶点所有的邻接顶点; 令顶点数为Ν,边数为iEdge ;
[0029] 具体步骤如下:
[0030] 步骤 1 :n = 1 ;
[0031] 步骤2 :根据本方法开始时给出的算法删除网格单元中冗余的网格点数据;
[0032] 步骤 3 :n = n+1 ; 阳03引步骤4 :如果n< = N满足,转步骤2,否则转步骤5 ;
[0034] 步骤5 :建立网格点一单元集合S,S包含Μ个子集合,编号分别为S1,S2,……, SM;每一个网格点对应一个子集合,每个子集合中元素的值η表示编号为η的网格单元包含 该网格点;
[0035] 步骤 6 :η = 1 ;
[0036] 步骤7 :把编号η加入网格单元η中所有的网格点对应的子集合;
[0037] 步骤 8 :η = n+1 ; 阳03引步骤9 :如果η《N满足,转步骤7,否则转步骤8 ;
[0039]步骤 10 :η = 1 ;iEdge = 0 ; W40] 步骤11 :设网格点一单元子集合Sn中的元素分别为(nl,n2,…,nL); |;0041]步骤 11-1 :1 = 1 ;
[0042] 步骤11-2 :根据本方法开始时的算法对网格单元η和网格单元nl进行比较,
[0043] 步骤11-3 :如果相同网格点数目iSame大于等于3,转步骤11-4,否则转步骤 11-5 ;
[0044] 步骤11-4 :子集合化加入元素 nl ;iEdge = iEdge+1 ;
[0045] 步骤 11-5 :1 = 1+1 ;
[0046] 步骤11-6 :如果1《L满足,转步骤11-2,否则转步骤12 ;
[0047] 步骤 12 :n = n+1 ; W48] 步骤13 :如果1《L满足,转步骤11-2,否则转步骤12 ;
[0049] 步骤 14 :iEdge = iEdge/2 ;
[0050] 步骤15 :输出无向图顶点数Μ、边数iEdge和集合(Pl,P2,…,PN);所有步骤完成。
[0051] 进一步的,如上所述的一种气动流场网格无向图的低计算复杂度构造方法,气动 流场网格W Tecplot数据格式作为输入文件;输出数据文件包含N+1行,第1行包含顶点数 N和边数iEdge ;剩下的N行分别为子集合化(1《η《脚中的数据。
[0052] 进一步的,如上所述的一种气动流场网格无向图的低计算复杂度构造方法,本方 法具体操作流程采用轻量级Python脚本语言实现,大小确定的集合S和Ρ采用数组实现, 大小不确定的子集合采用list0动态对象实现。
[0053] 本发明与常用的无向图生成方法相比有益效果为:
[0054] (1)能够有效提高气动流场网格无向图生成的速度;
[00对 似网格量越大,提升效果越明显;
[0056] (3)本发明提出的方法的计算复杂度为0(脚。
【附图说明】
[0057] 图1为网格单元中冗余网格点数据表示方法;
[005引图2为网格单元中冗余网格点删除;
[0059] 图3为
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1