氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)的一種后處理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于數(shù)據(jù)后處理方法技術(shù)領(lǐng)域,具體涉及氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)的 后處理方法。
【背景技術(shù)】
[0002] CFD (計(jì)算流體力學(xué))是通過在計(jì)算機(jī)上數(shù)值求解流體與氣體動(dòng)力學(xué)基本方程,獲 取各種條件下流動(dòng)的數(shù)據(jù)和作用在繞流物體上的力、力矩、流動(dòng)圖像和熱量的學(xué)科,在各類 航空、航天飛行器的氣動(dòng)外形設(shè)計(jì)和優(yōu)化中發(fā)揮了重要作用。CFD計(jì)算一般采用迭代的方式 進(jìn)行,達(dá)到收斂條件需要數(shù)千到數(shù)萬次迭代,從而需要采用并行計(jì)算技術(shù)來加快計(jì)算速度。
[0003] 隨著并行數(shù)值計(jì)算方法的不斷進(jìn)步以及高性能計(jì)算機(jī)技術(shù)的迅速發(fā)展,并行計(jì)算 在航空航天領(lǐng)域氣動(dòng)流場(chǎng)數(shù)值模擬的作用和優(yōu)勢(shì)越來越明顯,在相關(guān)項(xiàng)目前期方案論證、 設(shè)計(jì)和分析優(yōu)化中發(fā)揮越來越重要的作用。例如波音公司就認(rèn)為高性能計(jì)算能夠加速數(shù)值 模擬過程、增強(qiáng)模擬能力和改善模擬精度,得到更加高效的飛行器和更少的翼形和飛行測(cè) 試,從而達(dá)到縮短設(shè)計(jì)開發(fā)過程的同時(shí)保持較低的花費(fèi)。
[0004] METIS是一個(gè)劃分大規(guī)模不規(guī)則圖,大網(wǎng)格和計(jì)算稀疏矩陣填充約化次序的軟件 包。METIS的算法是基于多層圖劃分的算法。Metis的原理是基于多級(jí)圖形分裂,先對(duì)圖形 進(jìn)行連續(xù)粗化,對(duì)粗化后的圖形進(jìn)行分割,被計(jì)算分割后的區(qū)域映射到細(xì)小的圖形上。最 后再把這種劃分逐步還原到規(guī)模不斷增大的圖,并在還原過程中用局部方法對(duì)劃分進(jìn)行微 調(diào),直到獲得原圖的劃分。
[0005] 氣動(dòng)流場(chǎng)網(wǎng)格數(shù)據(jù)的完備性定義為該分區(qū)包含網(wǎng)格點(diǎn)、網(wǎng)格單元、內(nèi)邊界單元的 所有數(shù)據(jù)。內(nèi)邊界單元數(shù)據(jù)包含兩個(gè)部分,一是自身的網(wǎng)格單元數(shù)據(jù),二是它所依賴的網(wǎng)格 單元數(shù)據(jù)(分區(qū)編號(hào),自身編號(hào))。
[0006] 在網(wǎng)格單元的基礎(chǔ)上,氣動(dòng)流場(chǎng)網(wǎng)格采用METIS中的mpmetis劃分后,其NPART輸 出文件只包含網(wǎng)格單元屬于哪個(gè)分區(qū)和網(wǎng)格點(diǎn)屬于哪個(gè)分區(qū)的信息。需要進(jìn)行后處理實(shí) 現(xiàn):
[0007] 1)各分區(qū)網(wǎng)格單元的重新編號(hào);
[0008] 2)各分區(qū)網(wǎng)格點(diǎn)的重新編號(hào);
[0009] 3)各分區(qū)網(wǎng)格分區(qū)內(nèi)邊界單元的確定。
[0010] 國內(nèi)外研究集中在多層圖劃分的算法、如何使用METIS對(duì)具體問題進(jìn)行劃分。但 是針對(duì)使用METIS mpmetis劃分后的輸出數(shù)據(jù),由于問題類型的差異,目前沒有公開針對(duì)氣 動(dòng)流場(chǎng)網(wǎng)格劃分的后處理方法。
[0011] 所以,亟需研制一種滿足氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)要求的后處理方法,以解 決氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)的后處理問題。
【發(fā)明內(nèi)容】
[0012] 本發(fā)明要解決的技術(shù)問題是提供氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)的一種后處理方 法,從而解決氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)的后處理問題,滿足各分區(qū)的完備性需求。
[0013] 為了實(shí)現(xiàn)這一目的,本發(fā)明采取的技術(shù)方案是:
[0014] 氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)的一種后處理方法,包括以下步驟:
[0015] 設(shè)定待分區(qū)的氣動(dòng)流場(chǎng)網(wǎng)格A包含M個(gè)網(wǎng)格點(diǎn),N個(gè)網(wǎng)格單元,分區(qū)數(shù)為P ;Metis 自動(dòng)分區(qū)后生成N個(gè)網(wǎng)格單元所屬的分區(qū)的數(shù)據(jù);
[0016] 設(shè)各分區(qū)的網(wǎng)格點(diǎn)集合為Gl,G2,……,GP ;各分區(qū)的網(wǎng)格單元集合分別為E1, E2,……,EP ;各分區(qū)的內(nèi)邊界集合分別B1,B2,……,BP ;
[0017] 內(nèi)邊界集合中任一元素包含三個(gè)數(shù)據(jù)標(biāo)志(li,zi,ni) :li表示網(wǎng)格單元在本分 區(qū)內(nèi)的編號(hào),zi表示鄰接網(wǎng)格單元所屬分區(qū)號(hào)、ni表示鄰接網(wǎng)格單元的編號(hào);i = 1~P ;
[0018] 具體步驟如下:
[0019] 步驟1 :根據(jù)下述方法刪除氣動(dòng)流場(chǎng)網(wǎng)格A中N個(gè)網(wǎng)格單元中的冗余網(wǎng)格點(diǎn)數(shù)據(jù);
[0020] 冗余網(wǎng)格點(diǎn)刪除方法:設(shè)單元E中的網(wǎng)格點(diǎn)為(ei,e2, 首先找到重復(fù)網(wǎng)格 點(diǎn)并置為一 1,再刪除值為一 1的網(wǎng)格點(diǎn)數(shù)據(jù),從而將網(wǎng)格單元中冗余網(wǎng)格點(diǎn)刪除;具體算 法如下所示:
[0021]
[0022] 步驟2 :根據(jù)下述方法生成氣動(dòng)流場(chǎng)網(wǎng)格A的無向圖TA ;
[0023] 單分區(qū)氣動(dòng)流場(chǎng)網(wǎng)格無向圖低計(jì)算復(fù)雜度生成方法:1)確定網(wǎng)格單元a不重復(fù)的 網(wǎng)格點(diǎn)集合G ;2)得到所有包含G中網(wǎng)格點(diǎn)的網(wǎng)格單元集合E ;3)a與E中元素一一比較,得 到a的所有相鄰網(wǎng)格單元;其中無向圖的頂點(diǎn)為網(wǎng)格單元,邊為相鄰網(wǎng)格單元的鄰接面;
[0024] 步驟3 :創(chuàng)建數(shù)組E[4] [N] ;N代表N個(gè)網(wǎng)格單元,E[l][:]代表氣動(dòng)流場(chǎng)網(wǎng)格A中 的網(wǎng)格單元是否為邊界單元,E[l][:]中的項(xiàng)的值為0表示非邊界單元,E[l][ :]中的項(xiàng) 的值為1表示為邊界單元,默認(rèn)為〇 ;E[2][:]表示對(duì)應(yīng)編號(hào)的網(wǎng)格單元屬于哪個(gè)分區(qū),由 Metis分區(qū)數(shù)據(jù)確定;E[3][:]表示各分區(qū)網(wǎng)格單元的局部編號(hào);E[4][:]為重復(fù)使用部分; 符號(hào)":"表示相應(yīng)數(shù)組的全部項(xiàng),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 :根據(jù)無向圖TA和下述邊界單元判別方法確定網(wǎng)格A的邊界單元,置相應(yīng) E[l][:]中的項(xiàng)的值為1 ;
[0026] 邊界單元判別方法:如果網(wǎng)格單元的鄰接單元數(shù)少于其面數(shù),則視為邊界單元; 網(wǎng)格單元的鄰接單元數(shù)即為對(duì)應(yīng)無向圖的邊數(shù);
[0027] 步驟5 :根據(jù)Metis劃分后的網(wǎng)格單元所屬分區(qū),直接加載E[2][:]各項(xiàng)的值;根 據(jù)Metis劃分后的網(wǎng)格點(diǎn)所屬分區(qū),把相應(yīng)網(wǎng)格點(diǎn)加入相應(yīng)的網(wǎng)格點(diǎn)集合;
[0028] 步驟6 :把網(wǎng)格單元η加入集合Ep,其局部編號(hào)為Ip ;
[0029] 設(shè)置 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,將所有網(wǎng)格分區(qū)的局部編號(hào)并保存于E[3][:]中;
[0033] 步驟10 :如果η彡N滿足,轉(zhuǎn)步驟8,否則轉(zhuǎn)步驟11 ;
[0034] 步驟 11 :設(shè)置 Ip = 0, ρ = 1、2、......、Ρ;
[0035] 步驟 12 :m = 1 ;
[0036] 步驟13 :Ip = Ip+1 ;其中ρ的值為Metis劃分后網(wǎng)格點(diǎn)所屬分區(qū)的值加1 ;
[0037] 步驟14 :把網(wǎng)格點(diǎn)m加入集合Gp,其局部編號(hào)為Ip ;
[0038] 步驟15 :如果m彡M滿足,轉(zhuǎn)步驟13,否則轉(zhuǎn)步驟16 ;
[0039] 步驟 16 :p = 1 ;
[0040] 步驟 17 :置 E [4][:]為 0 ;
[0041] 步驟18 :根據(jù)步驟2中單分區(qū)氣動(dòng)流場(chǎng)網(wǎng)格無向圖低計(jì)算復(fù)雜度生成方法生成第 P個(gè)分區(qū)(Gp,Ep)的無向圖;
[0042] 步驟19 :根據(jù)無向圖和步驟4中的邊界單元判別方法確定分區(qū)網(wǎng)格ρ的邊界單 元,置相應(yīng)E [4][:]中的項(xiàng)值為1 ;
[0043] 分區(qū)網(wǎng)格ρ中局部網(wǎng)格單元編號(hào)到全局網(wǎng)格A的網(wǎng)格網(wǎng)格單元編號(hào)之間的映射由 E[2][:]、E[3][ :]得到;
[0044] 步驟20 :E[4][:]與E[l][:]的所有項(xiàng)值相減,得到的結(jié)果為1,0,一 1三種;結(jié)果 為1的網(wǎng)格單元為分區(qū)網(wǎng)格P的內(nèi)邊界單元,其局部編號(hào)設(shè)為11,12,…,10,全局編號(hào)為 gl,g2, ···, g0 ;
[0045] 步驟21 :根據(jù)無向圖TA鄰接頂點(diǎn),得到gi (1〈 = i〈 = 0)所有的鄰接網(wǎng)格單元, 鄰接網(wǎng)格單元的全局編號(hào)為kl,k2,…,kl ;
[0046] 根據(jù)E[2][:],刪除屬于ρ分區(qū)的鄰接網(wǎng)格單元,剩下的網(wǎng)格單元全局編號(hào)為kjl, kj2,
[0047] 根據(jù)E[2] [:],E[3][:],得到對(duì)應(yīng)全局編號(hào)的分區(qū)編號(hào)zi、局部編號(hào)ni,與全局編 號(hào) 對(duì)應(yīng);
[0048] 然后得到一系列三元組(li,zi,ni);如果(li,zi,ni)在集合Bp內(nèi)不重復(fù),則把 (li,zi,ni)加入集合 Bp ;
[0049] 步驟 22 :p = p+1 ;
[0050] 步驟23 :如果ρ彡P(guān)滿足,轉(zhuǎn)步驟17,否則轉(zhuǎn)步驟24 ;
[0051] 步驟24 :輸出各分區(qū)的網(wǎng)格點(diǎn)集合G1,G2,……,GP ;各分區(qū)的網(wǎng)格單元集合分別 為E1,E2,……4卩,內(nèi)邊界集合81,82,……,BP ;
[0052] 步驟25:后處理完成。
[0053] 進(jìn)一步的,如上所述的氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)的一種后處理方法,最終分 區(qū)完成的氣動(dòng)流場(chǎng)網(wǎng)格的數(shù)據(jù)格式為Tecplot數(shù)據(jù)格式。
[0054] 進(jìn)一步的,如上所述的氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)的一種后處理方法,本方法 的具體操作流程采用輕量級(jí)Python腳本語言來實(shí)現(xiàn)。
[0055] 進(jìn)一步的,如上所述的氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)的一種后處理方法,大小確 定的數(shù)組E[4] [N]用數(shù)組定義,集合大小不定的用IistO動(dòng)態(tài)對(duì)象來實(shí)現(xiàn)。
[0056] 本發(fā)明的有益效果為:
[0057] (1)能夠滿足各分區(qū)網(wǎng)格單元、網(wǎng)格點(diǎn)重新編號(hào)的要求;
[0058] (2)能夠快速確定各分區(qū)網(wǎng)格內(nèi)邊界的邊界單元;
【附圖說明】
[0059] 圖1是網(wǎng)格分區(qū)示意圖;
[0060] 圖2是Metis分區(qū)數(shù)據(jù)。
【具體實(shí)施方式】
[0061] 下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明技術(shù)方案進(jìn)行進(jìn)一步相信說明。
[0062] 圖1為含有1 - 6個(gè)網(wǎng)格單元的氣動(dòng)流場(chǎng),其中邊為鄰接面,圓圈為網(wǎng)格單元,劃 分為3個(gè)分區(qū),編號(hào)分別0、l、2〇Meti S自動(dòng)分區(qū)后網(wǎng)格單元部分的數(shù)據(jù)格式(命名為Metis 單元數(shù)據(jù))如圖2所示,只表示每個(gè)網(wǎng)格單元所屬的分區(qū)。網(wǎng)格點(diǎn)部分?jǐn)?shù)據(jù)格式類似。
[0063] 本發(fā)明氣動(dòng)流場(chǎng)網(wǎng)格Metis自動(dòng)分區(qū)的一種后處理方法,包括以下步驟:
[0064] 設(shè)定待分區(qū)的氣動(dòng)流場(chǎng)網(wǎng)格A包含M個(gè)網(wǎng)格點(diǎn),N個(gè)網(wǎng)格單元,分區(qū)數(shù)為P ;Metis 自動(dòng)分區(qū)后生成N個(gè)網(wǎng)格單元所屬的分區(qū)的數(shù)據(jù);
[0065] 設(shè)各分區(qū)的網(wǎng)格點(diǎn)集合為Gl,G2,……,GP ;各分區(qū)的網(wǎng)格單元集合分別為E1, E2,……,EP ;各分區(qū)的內(nèi)邊界集合分別B1,B2,……,BP ;
[0066] 內(nèi)邊界集合中任一元素包含三個(gè)數(shù)據(jù)標(biāo)志(li,zi,ni) :li表示網(wǎng)格單元在本分 區(qū)內(nèi)的編號(hào),zi表示鄰接網(wǎng)格單元所屬分區(qū)號(hào)、ni表示鄰接網(wǎng)格單元的編號(hào);i = 1~P ;
[0067] 具體步驟如下:
[0068] 步驟1 :根據(jù)下述方法刪除氣動(dòng)流場(chǎng)網(wǎng)格A中N個(gè)網(wǎng)格單元中的冗余網(wǎng)格點(diǎn)數(shù)據(jù);
[0069] 冗余網(wǎng)格點(diǎn)刪除方法:設(shè)單元E中的網(wǎng)格點(diǎn)為(ei,e2, 首先找到重復(fù)網(wǎng)格 點(diǎn)并置為一 1,再刪除值為一 1的網(wǎng)格點(diǎn)數(shù)據(jù),從而將網(wǎng)格單元中冗余網(wǎng)格點(diǎn)刪除;具體算 法如下所示:
[0070]
[0071] 如對(duì)圖1左邊的四面體單元,包含(1,2,3, 4)四個(gè)網(wǎng)格點(diǎn)。而在網(wǎng)格單元的實(shí)際數(shù) 據(jù)表示時(shí),可能為(1,2, 3, 1,4, 4, 4, 4)。需要剔除冗余的網(wǎng)格點(diǎn)數(shù)據(jù),算法如圖2所示。設(shè) 單兀E中的網(wǎng)格點(diǎn)為G1, e2,…,eK),圖2中的行1 - 4找到重復(fù)網(wǎng)格點(diǎn)并置為一1,行5 - 7刪除值為一1的網(wǎng)格點(diǎn)數(shù)據(jù)。
[0072]