一種快速查找多塊結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法
【專利摘要】本發(fā)明公開了一種快速查找多塊結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法,包括以下步驟:(1)針對計算機幾何模型劃分的兩塊以上結(jié)構(gòu)網(wǎng)格的每個網(wǎng)格塊,提取所有六個邊界面網(wǎng)格的幾何特征,生成待查找關(guān)系邊界面網(wǎng)格對的隊列;(2)在待查找對接關(guān)系的兩個不同邊界面網(wǎng)格中,查找并生成搜索種子;(3)以步驟(2)得到的搜索種子為起點,在搜索種子所在的兩個邊界面網(wǎng)格內(nèi)各自進行連續(xù)擴張,找出兩個對應(yīng)邊界面網(wǎng)格內(nèi)最大的單連通對接區(qū)域;(4)保存已查找出的對接區(qū)域信息,更新待查找關(guān)系邊界面網(wǎng)格對的隊列;(5)重復(fù)第(2)至(4)步,直至待查找關(guān)系邊界面網(wǎng)格對的隊列為空;(6)輸出所有三維網(wǎng)格模型網(wǎng)格塊的邊界面網(wǎng)格對接區(qū)域信息。
【專利說明】一種快速查找多塊結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種計算機輔助工程(CAE)、計算流體力學(xué)(CFD)、計算結(jié)構(gòu)力學(xué)(CSD)及數(shù)值仿真軟件技術(shù),具體涉及基于網(wǎng)格節(jié)點信息的網(wǎng)格拓?fù)渲貥?gòu)技術(shù),是一種快速查找多塊結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法。
【背景技術(shù)】
[0002]隨著計算機硬件技術(shù)和數(shù)值分析技術(shù)的快速發(fā)展,以計算流體力學(xué)(Computational Fluid Dynamics, CFD)軟件、計算結(jié)構(gòu)力學(xué)(Computational StructureDynami cs, CSD )軟件為代表的計算機輔助工程軟件及數(shù)值仿真技術(shù)正越來越廣泛地應(yīng)用于各種工程【技術(shù)領(lǐng)域】中,成為重要的產(chǎn)品研發(fā)與技術(shù)創(chuàng)新平臺。例如,航空飛行器的空氣動力學(xué)與結(jié)構(gòu)力學(xué)設(shè)計、汽車熱舒適性與結(jié)構(gòu)動力學(xué)設(shè)計、發(fā)動機熱力學(xué)與動力學(xué)設(shè)計、船舶水動力學(xué)設(shè)計等,都離不開大量基于CFD/CSD軟件的仿真計算與數(shù)值優(yōu)化工作。
[0003]以CFD分析為例,我們通常需要將研究對象所在的連續(xù)物理空間以網(wǎng)格的形式,剖分成離散空間。CR)軟件就是以離散的網(wǎng)格系統(tǒng)為基礎(chǔ)進行數(shù)值迭代和物理分析的。目前廣泛使用的網(wǎng)格可以分為兩大類:多塊結(jié)構(gòu)化網(wǎng)格(mult1-block structured mesh)和非結(jié)構(gòu)網(wǎng)格(unstructured mesh)。其中,多塊結(jié)構(gòu)化網(wǎng)格由于數(shù)據(jù)結(jié)構(gòu)簡單、數(shù)值迭代收斂速度快、計算結(jié)果光滑等優(yōu)勢而備受CFD工程師的青睞。
[0004]在多塊結(jié)構(gòu)化網(wǎng)格中,每個網(wǎng)格塊(block)的節(jié)點信息都是各自獨立排序的;兩個相鄰網(wǎng)格塊之間通過公共分界面(網(wǎng)格塊的邊界面之一)進行對接,并傳遞彼此之間的數(shù)據(jù)信息,但兩個網(wǎng)格塊對該分界面都有各自獨立的排序、編號和存儲(圖1,G、H:網(wǎng)格塊(block) ;g、h:相互對接的網(wǎng)格節(jié)點)。因此,CFD軟件在進行數(shù)值計算之前,首先應(yīng)根據(jù)已讀入的多塊結(jié)構(gòu)化網(wǎng)格的節(jié)點信息,重新建立相鄰網(wǎng)格塊之間的對接關(guān)系,也即重構(gòu)網(wǎng)格拓?fù)洹?br>
[0005]目前針對多塊結(jié)構(gòu)化網(wǎng)格的拓?fù)渲貥?gòu)技術(shù)主要有兩大類:
[0006]一種方案是“暴力算法”(brute-force),即針對每個網(wǎng)格塊邊界面上的任意一點g,對其他網(wǎng)格塊邊界面上的所有節(jié)點進行遍歷搜索,在誤差范圍內(nèi)得到與點g位置完全重合的另一點h,也即h及其所在的網(wǎng)格塊就是點g的對接點及對接網(wǎng)格塊(圖1)。這種方法構(gòu)造簡單、可靠性高,但搜索時間非常長。通過對網(wǎng)格塊邊界面的節(jié)點數(shù)據(jù)進行預(yù)處理,如采用k-d樹(k-維樹)數(shù)據(jù)結(jié)構(gòu)來存儲和管理網(wǎng)格塊的節(jié)點數(shù)據(jù),可以大幅減少查詢次數(shù)。但即便如此,“暴力算法”的搜索時間仍比較長,且算法實現(xiàn)非常復(fù)雜。
[0007]另一種方案是“分治法”(divide and conquer),即人為地將網(wǎng)格塊的邊界面劃分成一系列更小的子面,將兩個相鄰網(wǎng)格塊的邊界面對接問題轉(zhuǎn)化為一系列子面的對接面,并且整個計算過程可以遞歸地進行下去。其具體實施過程包括如下步驟:(I)計算網(wǎng)格塊邊界面的幾何特征,包括邊界面中心C和包絡(luò)半徑r (三維空間中為球半徑),如圖3所示;
(2)從待查找隊列中取出兩個邊界面,如G、H,計算其面中心距離d,判斷d是否大于其包絡(luò)半徑之和(rl+r2);(3)若d> (rl+r2),則表明G、H不可能相交,此時應(yīng)更換其中一個邊界面(如H),再重復(fù)比較;(4)若G與所有其他邊界面均不相交,則表明G為計算域的物理邊界,可以從查找隊列中剔除;(5)若d〈(rl+r2),則對G、H進行細(xì)分,如分別切割成m和η個子面,即G={G1,G2,...,Gm}、H={H1,H2,...,Hn} ; (6)依次計算各子面的幾何特征(圖3),并類似第(2)步,判斷任意兩個子面間的相交特性;(7)若G上某個子面Gi與H面上所有子面均不相交,則將Gi從當(dāng)前隊列中剔除;(8)若Gi與H面上的某個子面Hj相交,則可以參照第(5)步對二者繼續(xù)細(xì)分,直至每個子面的點數(shù)小于一定值后不再細(xì)分,而改對兩個子面直接逐點循環(huán)判斷是否存在節(jié)點重合及對接范圍。相對于第一種方案來說,“分治法”可以利用子面之間的位置關(guān)系排除一部分遍歷搜索量,但在CFD分析中,由于網(wǎng)格節(jié)點大都集中在分析對象表面的附近區(qū)域,因此即使在子面的包絡(luò)半徑范圍內(nèi),仍然存在大量與該子面并無對接關(guān)系的子面。因此“分治法”的計算量仍十分可觀。
[0008]隨著相關(guān)硬件技術(shù)的發(fā)展,當(dāng)前的計算機輔助設(shè)計對數(shù)值仿真結(jié)果的精細(xì)化程度要求已經(jīng)越來越高,這導(dǎo)致數(shù)值計算所采用的網(wǎng)格量(網(wǎng)格節(jié)點總數(shù))也越來越大,通常都在千萬量級以上。對于多塊結(jié)構(gòu)化網(wǎng)格來說,當(dāng)網(wǎng)格塊數(shù)和節(jié)點總數(shù)較大時,采用“分治法”查找網(wǎng)格對接關(guān)系的時間過長,基于遍歷搜索的“暴力算法”的運行時間更是無法接受。例如,針對一個由347塊網(wǎng)格塊(block)拼接而成的計算網(wǎng)格,其網(wǎng)格節(jié)點總數(shù)約為1450萬個、邊界面上的節(jié)點數(shù)約為200萬個,此時采用分治法在3.4GHz主頻的CPU上計算,大約需要50分鐘才能獲得所有網(wǎng)格塊邊界面之間的對接關(guān)系,查找效率非常低。
【發(fā)明內(nèi)容】
[0009]發(fā)明目的:本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供一種快速查找多塊結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法。
[0010]為了解決上述技術(shù)問題,本發(fā)明公開了一種快速查找多塊結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法,包括以下步驟:
[0011](I)針對計算機幾何模型劃分的兩塊以上結(jié)構(gòu)網(wǎng)絡(luò)三維網(wǎng)格模型的每個網(wǎng)格塊,提取每個網(wǎng)格塊中所有六個邊界面網(wǎng)格的幾何特征,生成待查找關(guān)系邊界面網(wǎng)格對的隊列;
[0012](2)在待查找對接關(guān)系的兩個不同邊界面網(wǎng)格中,查找并生成搜索種子,搜索種子是一對分別位于所述兩個不同邊界面網(wǎng)格上的完全重合的網(wǎng)格節(jié)點;網(wǎng)格節(jié)點是指結(jié)構(gòu)網(wǎng)格內(nèi)網(wǎng)格線的交點;結(jié)構(gòu)網(wǎng)格的網(wǎng)格節(jié)點在邊界面網(wǎng)格內(nèi)可以通過兩個下標(biāo)值唯一確定;
[0013](3)以步驟(2)得到的搜索種子為起點,在搜索種子所在的兩個邊界面網(wǎng)格內(nèi)各自進行連續(xù)擴張,找出兩個對應(yīng)邊界面網(wǎng)格內(nèi)最大的單連通對接區(qū)域;
[0014](4)保存已查找出的對接區(qū)域信息,更新待查找關(guān)系邊界面網(wǎng)格對的隊列;
[0015](5)重復(fù)第(2)至(4)步,直至待查找關(guān)系邊界面網(wǎng)格對的隊列為空;
[0016](6)輸出所有三維網(wǎng)格模型網(wǎng)格塊的邊界面網(wǎng)格對接區(qū)域信息。
[0017]步驟(I)中,提取邊界面幾何特征包括以下步驟:
[0018](Ia)提取邊界面網(wǎng)格中心p、包絡(luò)半徑r、邊界面網(wǎng)格角點eg及該邊界面網(wǎng)格角點eg的對角點eg’;邊界面網(wǎng)格中心P坐標(biāo)為該邊界面網(wǎng)格上所有節(jié)點坐標(biāo)的算術(shù)平均,包絡(luò)半徑r指邊界面內(nèi)其他網(wǎng)格節(jié)點到邊界面網(wǎng)格中心P的最大距離;其中邊界面網(wǎng)格的角點指的是邊界面網(wǎng)格的邊界線相交處的網(wǎng)格節(jié)點,邊界面網(wǎng)格角點的對角點指的是索引的兩個下標(biāo)值與該邊界面網(wǎng)格角點索引的兩個下標(biāo)值均相差I(lǐng)的網(wǎng)格節(jié)點,每個邊界面網(wǎng)格的角點均對應(yīng)唯—個對角點;
[0019](Ib)按順時針方向生成邊界面網(wǎng)格角點Cg及其對應(yīng)對角點eg’的列表;
[0020](Ic)提取所有邊界面網(wǎng)格的幾何特征后,將未確定對接關(guān)系的邊界面網(wǎng)格放入待查找關(guān)系邊界面網(wǎng)格對的隊列中。
[0021]在待查找關(guān)系邊界面網(wǎng)格對的隊列中,查找并生成從兩個相異邊界面網(wǎng)格上各取一個網(wǎng)格節(jié)點組成的搜索種子,包括以下步驟:
[0022](2a)從待查找關(guān)系邊界面網(wǎng)格對的隊列中取出隊首兩個邊界面網(wǎng)格,分別記為邊界面網(wǎng)格G和邊界面網(wǎng)格H,計算兩者邊界面網(wǎng)格中心的距離d ;若邊界面中心距離小于兩者包絡(luò)半徑之和,則執(zhí)行第(2d)至(2h)步,否則,執(zhí)行第(2b )至(2c )步;
[0023](2b)標(biāo)記邊界面網(wǎng)格G和邊界面網(wǎng)格H不相交;
[0024](2c)若邊界面網(wǎng)格G與待查找關(guān)系邊界面對的隊列中其他所有邊界面網(wǎng)格均不相交,則將面網(wǎng)格G標(biāo)記為計算域的物理邊界;
[0025](2d)針對邊界面網(wǎng)格G的角點和對角點組合,在邊界面網(wǎng)格H中查找是否存在一組邊界面角點和對角點組合,使得邊界面網(wǎng)格G的角點與邊界面網(wǎng)格H的角點重合,并且邊界面網(wǎng)格G角點對應(yīng)的對角點與邊界面網(wǎng)格H的角點對應(yīng)的對角點也重合;所述兩個網(wǎng)格節(jié)點重合指的是兩個網(wǎng)格節(jié)點小于預(yù)設(shè)的容許誤差,預(yù)設(shè)的容許誤差取值為全部三維網(wǎng)格模型區(qū)域中最小網(wǎng)格節(jié)點間距的一半;
[0026](2e)若存在,則將面網(wǎng)格G上的該邊界面網(wǎng)格角點和邊界面網(wǎng)格H上與所述邊界面網(wǎng)格G的角點重合的點作為搜索種子;
[0027](2f)若不存在,則記錄邊界面網(wǎng)格G的角點和邊界面網(wǎng)格H的角點中距離最近的一對角點,以這對角點為初值,在邊界面網(wǎng)格G和邊界面網(wǎng)格H面內(nèi)搜索兩個角點所在的連通區(qū)域之間的最小距離值d’ ;
[0028](2g)若最小距離值d’大于容許誤差,則邊界面網(wǎng)格G和邊界面網(wǎng)格H不相交,更換邊界面網(wǎng)格H,返回步驟(2a)
[0029](2h)若最小距離值d’小于容許誤差,則達到最小距離值d’的邊界面網(wǎng)格G和邊界面網(wǎng)格H上的網(wǎng)格節(jié)點對就是所需的搜索種子。
[0030]步驟(3)中以步驟(2h)得到的搜索種子為起點,進行連續(xù)擴張,查找出邊界面網(wǎng)格G和邊界面網(wǎng)格H內(nèi)與兩個搜索種子連通的最大對接區(qū)域,包括以下步驟:
[0031](3a)將邊界面網(wǎng)格G中所有網(wǎng)格節(jié)點標(biāo)記為未訪問狀態(tài);
[0032](3b)將搜索種子,即邊界面網(wǎng)格G中網(wǎng)格節(jié)點g以及邊界面網(wǎng)格H中與之重合的網(wǎng)格節(jié)點h形成的網(wǎng)格節(jié)點對g〈_>h放入查找隊列Q中;
[0033](3c)若查找隊列Q為空集,表明連續(xù)擴張已完成,輸出面網(wǎng)格G和面網(wǎng)格H面內(nèi)對接區(qū)域的網(wǎng)格節(jié)點標(biāo)號;步驟3結(jié)束;
[0034](3d)若查找隊列Q非空,取出隊首元素q,q為網(wǎng)格節(jié)點對,由邊界面網(wǎng)格G中網(wǎng)格節(jié)點g以及邊界面網(wǎng)格H中的網(wǎng)格節(jié)點h形成,標(biāo)記邊界面網(wǎng)格G中網(wǎng)格節(jié)點g為已訪問;
[0035](3e)測試步驟(3d)邊界面網(wǎng)格H中的網(wǎng)格節(jié)點h以及網(wǎng)格節(jié)點h的相鄰網(wǎng)格節(jié)點中,是否存在與步驟(3d)中的邊界面網(wǎng)格G的網(wǎng)格節(jié)點g重合的網(wǎng)格節(jié)點h’ ;[0036](3f)若步驟(3e)中邊界面網(wǎng)格H存在網(wǎng)格節(jié)點h’與邊界面網(wǎng)格G中網(wǎng)格節(jié)點g重合,遍歷邊界面網(wǎng)格G中所有與網(wǎng)格節(jié)點g相鄰且未訪問過的網(wǎng)格節(jié)點g’,將形成的所有網(wǎng)格節(jié)點對g’ <_>h’加入查找隊列Q中;
[0037](3g)返回步驟(3c)。
[0038]有益效果:本發(fā)明可以大幅提高搜索效率,快速查找出多塊結(jié)構(gòu)化網(wǎng)格的對接關(guān)系;并且,本發(fā)明構(gòu)造的搜索方法計算流程簡單,容易實現(xiàn)。以一個1450萬節(jié)點、由347塊網(wǎng)格塊拼接而成的計算網(wǎng)格為例,其邊界面的節(jié)點總數(shù)約為200萬個,在3.4GHz主頻的CPU上查找網(wǎng)格塊對接關(guān)系:采用“暴力算法”進行搜索需要6小時;采用“分治法”進行搜索需要52分鐘;而采用本發(fā)明給出的快速搜索方法僅需I分21秒,用戶體驗非常好。
【專利附圖】
【附圖說明】
[0039]下面結(jié)合附圖和【具體實施方式】對本發(fā)明做更進一步的具體說明,本發(fā)明的上述和/或其他方面的優(yōu)點將會變得更加清楚。
[0040]圖1為多塊結(jié)構(gòu)化網(wǎng)格對接示意圖。
[0041]圖2為“分治法”對網(wǎng)格塊邊界面進行預(yù)處理:劃分子面,計算其中心及包絡(luò)半徑示意圖。
[0042]圖3為本發(fā)明流程圖。
[0043]圖4為網(wǎng)格邊界面的角點g及其所在網(wǎng)格單元的對角點g’示意圖。
[0044]圖5為本發(fā)明中生成“搜索種子”的流程圖。
[0045]圖6為本發(fā)明計算G、H邊界面之間最小間距的流程圖。
[0046]圖7為本發(fā)明中邊界面內(nèi)連續(xù)擴張的計算流程圖。
【具體實施方式】
[0047]如圖3所示,本發(fā)明包括如下步驟:
[0048](I)針對所有網(wǎng)格塊的所有邊界面,提取其幾何特征,包括面中心、包絡(luò)半徑、面角點及其對角點。
[0049](2)在帶查找對接關(guān)系的邊界面隊列中,首先查找并生成搜索種子。搜索種子是一對分別位于兩個不同邊界面網(wǎng)格(如G、H)上的重合的網(wǎng)格節(jié)點(如g、h)。
[0050](3)以上述種子為起點,在其所在的邊界面內(nèi)進行連續(xù)擴張,可以找出兩個對應(yīng)邊界面網(wǎng)格(如G、H)內(nèi)最大的單連通對接區(qū)域。
[0051](4)保存已查找出的對接信息,更新待查邊界面網(wǎng)格隊列。
[0052](5)重復(fù)第(2)至(4)步,直至待查邊界面網(wǎng)格隊列為空。
[0053](6)輸出所有網(wǎng)格塊的邊界面對接信息,結(jié)束。
[0054]步驟(I)中:提取網(wǎng)格塊邊界面網(wǎng)格的幾何特征。
[0055](Ia)如圖4所示,p為邊界面網(wǎng)格中心,r為包絡(luò)半徑,在多塊結(jié)構(gòu)化網(wǎng)格中,網(wǎng)格塊每個邊界面網(wǎng)格包含4個角點(如g等)及其所在網(wǎng)格單元的對角點(如g’)。邊界面網(wǎng)格中心可以是其幾何中心,也可以在面內(nèi)任取一個節(jié)點作為其中心,包絡(luò)半徑r指邊界面網(wǎng)格內(nèi)其他網(wǎng)格節(jié)點到邊界面網(wǎng)格中心P的最大距離。
[0056](Ib)得到邊界面幾何特征后,按順時針方向存儲4個角點及其對角點的列表。[0057](Ic)提取所有邊界面的幾何特征后,將未確定對接關(guān)系的邊界面放入待查找關(guān)系邊界面對的隊列中,以執(zhí)行下一步操作。
[0058]本發(fā)明在充分分析并提取網(wǎng)格塊邊界面一般特征的基礎(chǔ)上,構(gòu)造出一種快速查找多塊結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法。針對上述347塊網(wǎng)格,采用本發(fā)明方法查找出該網(wǎng)格對接關(guān)系的時間僅為“分治法”的1/40。圖2為“分治法”對網(wǎng)格塊邊界面進行預(yù)處理:劃分子面,計算其中心及包絡(luò)半徑示意圖。
[0059]步驟(2)中:生成搜索種子,具體計算流程如圖5所示。
[0060](2a)從待查找關(guān)系邊界面對的隊列中取出隊首兩個面網(wǎng)格,分別記為G和H。計算二者面中心的距離d。若面中心距離小于二者包絡(luò)半徑之和(rl+r2,可以乘以某個大于I的安全系數(shù)后再作比較),則執(zhí)行第(d)至(h)步;否則,執(zhí)行第(b)至(c)步。
[0061](2b)若d>rl+r2,表明G、H不相交。此時,可更換H,并重復(fù)第(a)步操作。
[0062](2c)若G與邊界面隊列中其他所有邊界面均不相交,則將G標(biāo)記為計算域的物理邊界,并將其從待查隊列中剔除。
[0063](2d)針對G的4個角點-對角點組合,在H面網(wǎng)格中查找是否存在一個與之完全重合的角點-對角點組合,即二者間距d小于預(yù)設(shè)的容許誤差。
[0064](2e)若存在,則G面上的該角點(如g)和H面上與之重合的角點(如h)就是所需的搜索種子。“生成搜索種子”步驟結(jié)束。
[0065](2f)若不存在,則記錄上述間距最近的一對角點(如g’ -h’),以此為初值,在G、H面內(nèi)分別搜索g’連通區(qū)域和h’連通區(qū)域之間的最小距離值d’。
[0066](2g)若最小距離值d’大于容許誤差,則G、H不相交。此時,可更換H,并重復(fù)第Ca)步操作。
[0067](2h)若最小距離值d’小于容許誤差,則其所對應(yīng)的一對網(wǎng)格節(jié)點(如g’、h’)就是所需的搜索種子?!吧伤阉鞣N子”步驟結(jié)束。
[0068]其中,給定邊界面網(wǎng)格H上一個網(wǎng)格節(jié)點h和邊界面網(wǎng)格G上一個網(wǎng)格節(jié)點g,計算H上與網(wǎng)格節(jié)點h連通區(qū)域的網(wǎng)格節(jié)點中與網(wǎng)格節(jié)點g的最小間距d的計算流程如圖6所示:
[0069](3a)初始時將網(wǎng)格節(jié)點h放入優(yōu)先隊列Q中,將最小間距d初始化為網(wǎng)格節(jié)點g和網(wǎng)格節(jié)點h之間的距離;H中的所有節(jié)點標(biāo)記為未訪問狀態(tài);
[0070](3b)測試隊列Q是否非空。若隊列已空,此時記錄的最小距離d和達到該距離的邊界面網(wǎng)格中H中的節(jié)點即為所求,步驟(3)結(jié)束。
[0071](3c)若隊列Q非空,取出隊首元素網(wǎng)格節(jié)點h’,標(biāo)記該網(wǎng)格節(jié)點為已訪問;計算網(wǎng)格節(jié)點h’與網(wǎng)格節(jié)點g之間的距離d’ ;若(1’比當(dāng)前記錄的d小,則將d用d’替換,并記錄對應(yīng)的網(wǎng)格節(jié)點h’ ;
[0072](3c)訪問網(wǎng)格節(jié)點h’周圍所有未訪問的點q,計算q與g點的距離I I q, g I I ;
[0073](3d)若q與g點的距離I |q,g| |比網(wǎng)格節(jié)點h’與網(wǎng)格節(jié)點g之間的距離小,則將q點放入隊列Q ;重復(fù)執(zhí)行(b)到(d)步。
[0074]步驟(4)中:以邊界面網(wǎng)格G上網(wǎng)格節(jié)點g以及與之重合的邊界面網(wǎng)格H上的網(wǎng)格節(jié)點h構(gòu)成的搜索種子g、h為起點,進行連續(xù)擴張,可以查找出G、H邊界面網(wǎng)格內(nèi)與g、h連通的最大對接區(qū)域,具體計算流程如圖7所示。匕網(wǎng)格對接關(guān)系的方法,具體實現(xiàn)該技術(shù)方選實施方式,應(yīng)當(dāng)指出,對于本【技術(shù)領(lǐng)域】的:下,還可以做出若干改進和潤飾,這些改進1未明確的各組成部分均可用現(xiàn)有技術(shù)加以
【權(quán)利要求】
1.一種快速查找多塊結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法,其特征在于,包括以下步驟: (1)針對計算機三維幾何模型劃分的兩塊以上結(jié)構(gòu)網(wǎng)絡(luò)的每個網(wǎng)格塊,提取每個網(wǎng)格塊所有六個邊界面網(wǎng)格的幾何特征,生成待查找關(guān)系邊界面網(wǎng)格對的隊列; (2)在待查找對接關(guān)系的兩個不同邊界面網(wǎng)格中,查找并生成搜索種子,搜索種子是一對分別位于所述兩個不同邊界面網(wǎng)格上的重合的網(wǎng)格節(jié)點;網(wǎng)格節(jié)點是指結(jié)構(gòu)網(wǎng)絡(luò)內(nèi)網(wǎng)格線的交點;結(jié)構(gòu)網(wǎng)格的網(wǎng)格節(jié)點在面網(wǎng)格內(nèi)可以通過兩個下標(biāo)值唯一確定; (3)以步驟(2)得到的搜索種子為起點,在搜索種子所在的兩個邊界面網(wǎng)格內(nèi)各自進行連續(xù)擴張,找出兩個對應(yīng)邊界面網(wǎng)格內(nèi)最大的單連通對接區(qū)域; (4)保存已查找出的對接區(qū)域信息,更新待查找關(guān)系邊界面網(wǎng)格對的隊列; (5)重復(fù)第(2)至(4)步,直至待查找關(guān)系邊界面網(wǎng)格對的隊列為空; (6)輸出所有網(wǎng)格塊的邊界面網(wǎng)格對接區(qū)域信息。
2.根據(jù)權(quán)利要求1所述的一種快速查找兩塊及以上結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法,其特征在于,步驟(1)中,提取邊界面幾何特征,包括以下步驟: (Ia)提取邊界面網(wǎng)格中心P、包絡(luò)半徑r、邊界面網(wǎng)格角點eg及該邊界面網(wǎng)格角點eg的對角點eg’ ;邊界面網(wǎng)格中心P的坐標(biāo)為邊界面網(wǎng)格上所有網(wǎng)格節(jié)點坐標(biāo)的算術(shù)平均,包絡(luò)半徑r指邊界面網(wǎng)格內(nèi)其他網(wǎng)格節(jié)點到邊界面網(wǎng)格中心P的最大距離;邊界面網(wǎng)格的角點指的是邊界面網(wǎng)格的邊界線相交處的網(wǎng)格節(jié)點,邊界面網(wǎng)格角點的對角點指的是索引的兩個下標(biāo)值與該邊界面網(wǎng)格角點索引的兩個下標(biāo)值均相差I(lǐng)的網(wǎng)格節(jié)點,每個邊界面網(wǎng)格角點均對應(yīng)唯--個對角點; (Ib)按順時針方向生成邊界面網(wǎng)格角點eg及其對應(yīng)對角點eg’的列表; (Ic)提取所有邊界面網(wǎng)格的幾何特征后,將未確定對接關(guān)系的邊界面網(wǎng)格放入待查找關(guān)系邊界面網(wǎng)格對的隊列中。
3.根據(jù)權(quán)利要求2所述的一種快速查找多塊結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法,其特征在于,在待查找關(guān)系邊界面網(wǎng)格對的隊列中,查找并生成從兩個相異邊界網(wǎng)格面上各取一個網(wǎng)格節(jié)點組成的搜索種子,包括以下步驟: (2a)從待查找關(guān)系邊界面網(wǎng)格對的隊列中取出隊首兩個邊界面網(wǎng)格,分別記為邊界面網(wǎng)格G和邊界面網(wǎng)格H,計算兩者面網(wǎng)格中心的距離d ;若面網(wǎng)格中心距離小于兩者包絡(luò)半徑之和,則執(zhí)行第(2d)至(2h)步,否則,執(zhí)行第(2b )至(2c )步; (2b)標(biāo)記邊界面網(wǎng)格G和邊界面網(wǎng)格H不相交; (2c)若邊界面網(wǎng)格G與待查找關(guān)系邊界面網(wǎng)格對的隊列中其他所有邊界面網(wǎng)格均不相交,則將邊界面網(wǎng)格G標(biāo)記為計算域的物理邊界,并將其從待查找關(guān)系邊界面網(wǎng)格對的隊列中剔除; (2d)針對邊界面網(wǎng)格G的角點和對角點組合,在邊界面網(wǎng)格H中查找是否存在一組邊界面網(wǎng)格角點和對角點組合,使得邊界面網(wǎng)格G的角點與邊界面網(wǎng)格H的角點重合,并且邊界面網(wǎng)格G角點對應(yīng)的對角點與邊界面網(wǎng)格H的角點對應(yīng)的對角點也重合;所述兩個網(wǎng)格節(jié)點重合指的是兩個網(wǎng)格節(jié)點小于預(yù)設(shè)的容許誤差,預(yù)設(shè)的容許誤差取值為全部三維網(wǎng)格模型區(qū)域中最小網(wǎng)格節(jié)點間距的一半; (2e)若存在,則將邊界面網(wǎng)格G上的該邊界面網(wǎng)格角點和邊界面網(wǎng)格H面上與所述邊界面網(wǎng)格G的角點重合的角點作為搜索種子;(2f)若不存在,則記錄邊界面網(wǎng)格G的角點和邊界面網(wǎng)格H的角點中距離最近的一對角點,以這對角點為初值,在邊界面網(wǎng)格G和邊界面網(wǎng)格H內(nèi)搜索兩個角點所在的連通區(qū)域之間的最小距離值d’ ; (2g)若最小距離值d’大于容許誤差,則邊界面網(wǎng)格G和邊界面網(wǎng)格H不相交,更換邊界面網(wǎng)格H,返回步驟(2a) (2h)若最小距離值d’小于容許誤差,則達到最小距離值d’的邊界面網(wǎng)格G和邊界面網(wǎng)格H上的網(wǎng)格節(jié)點對就是所需的搜索種子。
4.根據(jù)權(quán)利要求3所述的一種快速查找多塊結(jié)構(gòu)化網(wǎng)格對接關(guān)系的方法,其特征在于,步驟(3)中以步驟(2h)得到的搜索種子為起點,進行連續(xù)擴張,查找出邊界面網(wǎng)格G和邊界面網(wǎng)格H內(nèi)與兩個搜索種子連通的最大對接區(qū)域,包括以下步驟: (3a)將邊界 面網(wǎng)格G中所有網(wǎng)格節(jié)點標(biāo)記為未訪問狀態(tài); (3b)將搜索種子,即邊界面網(wǎng)格G中網(wǎng)格節(jié)點g以及邊界面網(wǎng)格H中與之重合的網(wǎng)格節(jié)點h形成的網(wǎng)格節(jié)點對g〈_>h放入查找隊列Q中; (3c)若查找隊列Q為空集,表明連續(xù)擴張已完成,輸出邊界面網(wǎng)格G和邊界面網(wǎng)格H對接區(qū)域的網(wǎng)格節(jié)點索引;步驟3結(jié)束; (3d)若查找隊列Q非空,取出隊首元素q,q為網(wǎng)格節(jié)點對,由邊界面網(wǎng)格G中網(wǎng)格節(jié)點g以及邊界面網(wǎng)格H中的網(wǎng)格節(jié)點h形成,標(biāo)記邊界面網(wǎng)格G中網(wǎng)格節(jié)點g為已訪問;(3e)測試步驟(3d)邊界面網(wǎng)格H中的網(wǎng)格節(jié)點h以及網(wǎng)格節(jié)點h的相鄰網(wǎng)格節(jié)點中,是否存在與步驟(3d)中的邊界面網(wǎng)格G的網(wǎng)格節(jié)點g重合的網(wǎng)格節(jié)點h’ ; (3f)若步驟(3e)中邊界面網(wǎng)格H存在網(wǎng)格節(jié)點h’與邊界面網(wǎng)格G中網(wǎng)格節(jié)點g重合,對邊界面網(wǎng)格G中所有與網(wǎng)格節(jié)點g相鄰且未訪問過的網(wǎng)格節(jié)點g’,形成的所有網(wǎng)格節(jié)點對g’ <_>h’加入查找隊列Q中; (3g)返回步驟(3c)。
【文檔編號】G06F17/50GK103838852SQ201410093541
【公開日】2014年6月4日 申請日期:2014年3月13日 優(yōu)先權(quán)日:2014年3月13日
【發(fā)明者】毛峰, 丁可琦, 張日葵 申請人:北京大學(xué)工學(xué)院南京研究院, 南京北大工道軟件技術(shù)有限公司