一種氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖的低計(jì)算復(fù)雜度構(gòu)造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于高性能并行計(jì)算技術(shù)領(lǐng)域,具體設(shè)及一種氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖的低計(jì) 算復(fù)雜度構(gòu)造方法。
【背景技術(shù)】
[0002] CFD (計(jì)算流體力學(xué))是通過(guò)在計(jì)算機(jī)上數(shù)值求解流體與氣體動(dòng)力學(xué)基本方程,獲 取各種條件下流動(dòng)的數(shù)據(jù)和作用在繞流物體上的力、力矩、流動(dòng)圖像和熱量的學(xué)科,在各類(lèi) 航空、航天飛行器的氣動(dòng)外形設(shè)計(jì)和優(yōu)化中發(fā)揮了重要作用。CFD計(jì)算一般采用迭代的方式 進(jìn)行,達(dá)到收斂條件需要數(shù)千到數(shù)萬(wàn)次迭代,從而需要采用并行計(jì)算技術(shù)來(lái)加快計(jì)算速度。
[0003] 隨著并行數(shù)值計(jì)算方法的不斷進(jìn)步W及高性能計(jì)算機(jī)技術(shù)的迅速發(fā)展,并行計(jì)算 在航空航天領(lǐng)域氣動(dòng)流場(chǎng)數(shù)值模擬的作用和優(yōu)勢(shì)越來(lái)越明顯,在相關(guān)項(xiàng)目前期方案論證、 設(shè)計(jì)和分析優(yōu)化中發(fā)揮越來(lái)越重要的作用。例如波音公司就認(rèn)為高性能計(jì)算能夠加速數(shù)值 模擬過(guò)程、增強(qiáng)模擬能力和改善模擬精度,得到更加高效的飛行器和更少的翼形和飛行測(cè) 試,從而達(dá)到縮短設(shè)計(jì)開(kāi)發(fā)過(guò)程的同時(shí)保持較低的花費(fèi)。
[0004] CFD并行計(jì)算一般采用分區(qū)并行的方式,分區(qū)方法主要有兩種:
[0005] (1)人工分區(qū),指氣動(dòng)流場(chǎng)網(wǎng)格生成時(shí)人為指定其邊界,分區(qū)大?。ňW(wǎng)格數(shù)量)不 一,并行計(jì)算時(shí)難W達(dá)到負(fù)載平衡,從而需要對(duì)大分區(qū)進(jìn)行重新分區(qū)W改進(jìn)負(fù)載平衡。
[0006] 似自動(dòng)分區(qū),指由Metis程序等來(lái)對(duì)網(wǎng)格進(jìn)行剖分。
[0007] 無(wú)論是方法1中的重新分區(qū)或者方法2都需要確定剖分出來(lái)的不同分區(qū)之間的 內(nèi)分區(qū)邊界及邊界單元所屬分區(qū),從而需要對(duì)相應(yīng)流場(chǎng)網(wǎng)格生成無(wú)向圖,確定網(wǎng)格單元之 間的連接關(guān)系。無(wú)向圖中的頂點(diǎn)對(duì)應(yīng)流場(chǎng)的網(wǎng)格單元,無(wú)向圖中的邊對(duì)應(yīng)Ξ維網(wǎng)格單元之 間的交界面。
[0008] 通常的氣動(dòng)流場(chǎng)網(wǎng)格數(shù)據(jù)可W用Tecplot形式等來(lái)表達(dá),主要包含兩個(gè)方面的數(shù) 據(jù):
[0009] (1)M 個(gè)網(wǎng)格點(diǎn)的坐標(biāo),如(Xi, yi, Zi),(而,72, Z2),......(? 7μ,Zm),其編號(hào)為 1、 2、......、M。
[0010] (2)N個(gè)網(wǎng)格單元,每個(gè)網(wǎng)格單元由若干個(gè)網(wǎng)格點(diǎn)組成,編號(hào)為1、2、……、N。
[0011] 判斷兩個(gè)網(wǎng)格單元之間是否有鄰接關(guān)系可W用相同網(wǎng)格點(diǎn)數(shù)來(lái)判別,如果相同網(wǎng) 格點(diǎn)數(shù)目大于等于3則可確定兩個(gè)網(wǎng)格單元為鄰接關(guān)系。在對(duì)應(yīng)的無(wú)向圖中表示為兩個(gè)頂 點(diǎn)之間存在一條邊。
[0012] 因?yàn)橐蕾?lài)的是圖論等相關(guān)理論基礎(chǔ),具有科研價(jià)值,目前國(guó)內(nèi)外研究對(duì)無(wú)向圖剖 分的研究很多。但是對(duì)于如何針對(duì)氣動(dòng)流場(chǎng)網(wǎng)格生成無(wú)向圖,沒(méi)有見(jiàn)到相關(guān)公開(kāi)的研究工 作或者專(zhuān)利。
[0013] 常用的氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖生成可W采用順序比較的方式,命名為無(wú)向圖生成方 法A :
[0014] (1)1號(hào)網(wǎng)格單元分別與2,3,……,N號(hào)網(wǎng)格單元中的網(wǎng)格點(diǎn)進(jìn)行比較,找出相同 網(wǎng)格點(diǎn)數(shù)目大于等于3的網(wǎng)格單元。假設(shè)η號(hào)網(wǎng)格單元與1號(hào)鄰接,由于是無(wú)向圖,分別在 1號(hào)網(wǎng)格單元的鄰接列表中添加編號(hào)η (代表η是1的鄰居),在η號(hào)網(wǎng)格單元的鄰接列表 中添加編號(hào)1 (代表1是η的鄰居)。
[0015] (2)2號(hào)網(wǎng)格單元分別與3,4,……,Ν號(hào)網(wǎng)格單元相比較,找出鄰接網(wǎng)格單元,并 對(duì)鄰接列表進(jìn)行修改。
[0016] (3)依次進(jìn)行,直至Ν號(hào)網(wǎng)格單元。
[0017] 無(wú)向圖生成方法A中主要的操作是網(wǎng)格單元之間的網(wǎng)格點(diǎn)的比較,計(jì)為一個(gè)操 作,則無(wú)向圖生成方法A的需要的數(shù)為:
[0018]
[0019] 其計(jì)算復(fù)雜度為0(妒)。運(yùn)對(duì)于大網(wǎng)格(網(wǎng)格量單元數(shù)目多),如百萬(wàn)、千萬(wàn)量級(jí)、 甚至更大的網(wǎng)格,其計(jì)算量是無(wú)法接受的。與此同時(shí),網(wǎng)格量大的網(wǎng)格更加依靠并行計(jì)算技 術(shù),需要生成無(wú)向圖進(jìn)行剖分。
[0020] 因此,亟需研制一種計(jì)算量低、計(jì)算復(fù)雜度低的氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖生成方法,滿 足大網(wǎng)格無(wú)向圖的生成需求。
【發(fā)明內(nèi)容】
[0021] 本發(fā)明要解決的技術(shù)問(wèn)題是提供一種氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖的低計(jì)算復(fù)雜度構(gòu)造 方法,W提高氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖生成速度,解決氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖生成的計(jì)算量過(guò)大 的問(wèn)題。
[0022] 為了實(shí)現(xiàn)運(yùn)一目的,本發(fā)明采取的技術(shù)方案是:
[0023] 一種氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖的低計(jì)算復(fù)雜度構(gòu)造方法,包括如下步驟:
[0024] 首先確定網(wǎng)格單元中冗余網(wǎng)格點(diǎn)刪除方法和兩個(gè)網(wǎng)格單元是否相鄰的比較方 法:
[00巧]存在混合網(wǎng)格單元時(shí),需要對(duì)網(wǎng)格單元中的網(wǎng)格點(diǎn)進(jìn)行統(tǒng)一處理;設(shè)單元E中的 網(wǎng)格點(diǎn)為(ei,62, ···,%),首先找到重復(fù)網(wǎng)格點(diǎn)并置為一1,再刪除值為一1的網(wǎng)格點(diǎn)數(shù)據(jù), 從而將網(wǎng)格單元中冗余網(wǎng)格點(diǎn)刪除;具體算法如圖2所示;
[0026] 設(shè)單元E。中的網(wǎng)格點(diǎn)為(曰1,曰2,…,曰:),ai表示單元E。中的網(wǎng)格點(diǎn);單元Eb中的 網(wǎng)格點(diǎn)為化1,bz,…,bj),bj表示單元Eb中的網(wǎng)格點(diǎn);iSame為兩個(gè)網(wǎng)格單元中相同網(wǎng)格點(diǎn) 的計(jì)數(shù):如果iSame > 3,則運(yùn)兩個(gè)網(wǎng)格單元被視為鄰接網(wǎng)格單元;否則視為非鄰接網(wǎng)格單 元;具體算法如圖3所示;
[0027] 確定了網(wǎng)格單元中冗余網(wǎng)格點(diǎn)刪除方法和兩個(gè)網(wǎng)格單元是否相鄰的比較方法之 后,假設(shè)氣動(dòng)流場(chǎng)網(wǎng)格包含Μ個(gè)網(wǎng)格點(diǎn),N個(gè)網(wǎng)格單元,本發(fā)明的無(wú)向圖生成方法主要包括 如下具體步驟:
[0028] 定義頂點(diǎn)數(shù)為頂點(diǎn)對(duì)應(yīng)氣動(dòng)流場(chǎng)的網(wǎng)格單元的數(shù)量,定義邊數(shù)為對(duì)應(yīng)單元之間的 交接面的數(shù)量,則無(wú)向圖的數(shù)據(jù)表達(dá)方式包括兩部分,一是頂點(diǎn)數(shù)和邊數(shù);二是集合Ρ,Ρ包 含Ν個(gè)子集合(Ρ1,Ρ2,…,ΡΝ),子集合η的所有元素對(duì)應(yīng)編號(hào)為η的頂點(diǎn)所有的鄰接頂點(diǎn); 令頂點(diǎn)數(shù)為Ν,邊數(shù)為iEdge ;
[0029] 具體步驟如下:
[0030] 步驟 1 :n = 1 ;
[0031] 步驟2 :根據(jù)本方法開(kāi)始時(shí)給出的算法刪除網(wǎng)格單元中冗余的網(wǎng)格點(diǎn)數(shù)據(jù);
[0032] 步驟 3 :n = n+1 ; 陽(yáng)03引步驟4 :如果n< = N滿足,轉(zhuǎn)步驟2,否則轉(zhuǎn)步驟5 ;
[0034] 步驟5 :建立網(wǎng)格點(diǎn)一單元集合S,S包含Μ個(gè)子集合,編號(hào)分別為S1,S2,……, SM;每一個(gè)網(wǎng)格點(diǎn)對(duì)應(yīng)一個(gè)子集合,每個(gè)子集合中元素的值η表示編號(hào)為η的網(wǎng)格單元包含 該網(wǎng)格點(diǎn);
[0035] 步驟 6 :η = 1 ;
[0036] 步驟7 :把編號(hào)η加入網(wǎng)格單元η中所有的網(wǎng)格點(diǎn)對(duì)應(yīng)的子集合;
[0037] 步驟 8 :η = n+1 ; 陽(yáng)03引步驟9 :如果η《N滿足,轉(zhuǎn)步驟7,否則轉(zhuǎn)步驟8 ;
[0039]步驟 10 :η = 1 ;iEdge = 0 ; W40] 步驟11 :設(shè)網(wǎng)格點(diǎn)一單元子集合Sn中的元素分別為(nl,n2,…,nL); |;0041]步驟 11-1 :1 = 1 ;
[0042] 步驟11-2 :根據(jù)本方法開(kāi)始時(shí)的算法對(duì)網(wǎng)格單元η和網(wǎng)格單元nl進(jìn)行比較,
[0043] 步驟11-3 :如果相同網(wǎng)格點(diǎn)數(shù)目iSame大于等于3,轉(zhuǎn)步驟11-4,否則轉(zhuǎn)步驟 11-5 ;
[0044] 步驟11-4 :子集合化加入元素 nl ;iEdge = iEdge+1 ;
[0045] 步驟 11-5 :1 = 1+1 ;
[0046] 步驟11-6 :如果1《L滿足,轉(zhuǎn)步驟11-2,否則轉(zhuǎn)步驟12 ;
[0047] 步驟 12 :n = n+1 ; W48] 步驟13 :如果1《L滿足,轉(zhuǎn)步驟11-2,否則轉(zhuǎn)步驟12 ;
[0049] 步驟 14 :iEdge = iEdge/2 ;
[0050] 步驟15 :輸出無(wú)向圖頂點(diǎn)數(shù)Μ、邊數(shù)iEdge和集合(Pl,P2,…,PN);所有步驟完成。
[0051] 進(jìn)一步的,如上所述的一種氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖的低計(jì)算復(fù)雜度構(gòu)造方法,氣動(dòng) 流場(chǎng)網(wǎng)格W Tecplot數(shù)據(jù)格式作為輸入文件;輸出數(shù)據(jù)文件包含N+1行,第1行包含頂點(diǎn)數(shù) N和邊數(shù)iEdge ;剩下的N行分別為子集合化(1《η《腳中的數(shù)據(jù)。
[0052] 進(jìn)一步的,如上所述的一種氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖的低計(jì)算復(fù)雜度構(gòu)造方法,本方 法具體操作流程采用輕量級(jí)Python腳本語(yǔ)言實(shí)現(xiàn),大小確定的集合S和Ρ采用數(shù)組實(shí)現(xiàn), 大小不確定的子集合采用list0動(dòng)態(tài)對(duì)象實(shí)現(xiàn)。
[0053] 本發(fā)明與常用的無(wú)向圖生成方法相比有益效果為:
[0054] (1)能夠有效提高氣動(dòng)流場(chǎng)網(wǎng)格無(wú)向圖生成的速度;
[00對(duì) 似網(wǎng)格量越大,提升效果越明顯;
[0056] (3)本發(fā)明提出的方法的計(jì)算復(fù)雜度為0(腳。
【附圖說(shuō)明】
[0057] 圖1為網(wǎng)格單元中冗余網(wǎng)格點(diǎn)數(shù)據(jù)表示方法;
[005引圖2為網(wǎng)格單元中冗余網(wǎng)格點(diǎn)刪除;
[0059] 圖3為