本發(fā)明涉及計算流體力學,尤其涉及一種用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索方法、用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索裝置及宿主單元搜索系統(tǒng)。
背景技術(shù):
1、在計算流體動力學(cfd)中,物理量(如速度、壓力、溫度等)往往是在網(wǎng)格節(jié)點或網(wǎng)格單元內(nèi)部定義的。當需要計算某個位置的物理量時,通常需要通過插值來從周圍單元獲取值。插值計算過程中需要確定插值點的宿主單元以及插值計算的貢獻單元。
2、相鄰單元搜索算法是cfd中宿主單元搜索的常用方法,主要用于快速確定質(zhì)點或位置所在的網(wǎng)格單元,并在非結(jié)構(gòu)化網(wǎng)格中實現(xiàn)流暢、高效的插值計算和質(zhì)點追蹤。其核心思想是:從已知的起始單元出發(fā),根據(jù)網(wǎng)格拓撲關(guān)系,逐步漫游(或遍歷)到包含目標點的宿主單元,該算法能夠迅速找到包含目標點的單元,而無需進行全局搜索。
3、相鄰單元搜索算法具有搜索效率高的特點,但是也存在搜索路徑一旦被洞邊界阻隔就會搜索失敗的不足。隨著工程中cfd計算問題復雜性的增加,相鄰單元搜索路徑被洞邊界阻隔是經(jīng)常會出現(xiàn)的情況,而且這種被阻隔問題是任何網(wǎng)格單元類型都會遇到的。
4、因此,如何能夠解決相鄰單元搜索算法中相鄰單元搜索路徑被洞邊界阻隔以增強相鄰單元搜索算法在cfd中的適用性和搜索穩(wěn)定性成為本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問題。
技術(shù)實現(xiàn)思路
1、本發(fā)明提供了一種用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索方法、用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索裝置及宿主單元搜索系統(tǒng),解決相關(guān)技術(shù)中存在的無法解決相鄰單元搜索路徑被洞邊界阻隔的問題。
2、作為本發(fā)明的第一個方面,提供一種用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索方法,其中,包括:
3、當相鄰單元搜索被洞邊界阻隔時,構(gòu)建被洞邊界阻隔前的最后一個判斷單元中心到查詢節(jié)點的第一矢量;
4、確定阻隔當前相鄰單元搜索的洞邊界的邊界域;
5、對所述邊界域的面單元進行循環(huán)遍歷,以判斷所述第一矢量是否穿過所述邊界域的面單元所在的多邊形;
6、當確定所述第一矢量穿過所述邊界域的面單元所在的多邊形時,根據(jù)所穿過的邊界域的面單元確定目標搜索邊界面單元;
7、根據(jù)所述目標搜索邊界面單元所屬網(wǎng)格單元確定目標判斷單元,并根據(jù)所述目標判斷單元確定搜索路徑。
8、進一步地,對所述邊界域的面單元進行循環(huán)遍歷,以判斷所述第一矢量是否穿過所述邊界域的面單元所在的多邊形,包括:
9、對所述邊界域的所有面單元進行循環(huán)遍歷;
10、在所述循環(huán)遍歷中針對所述邊界域的每個面單元均判斷所述第一矢量與當前面單元所在平面是否存在交點;
11、若所述第一矢量與當前面單元所在平面存在交點,則根據(jù)所述交點是否落在當前面單元所在多邊形內(nèi)以判斷所述第一矢量是否穿過所述邊界域的面單元所在的多邊形。
12、進一步地,若所述第一矢量與當前面單元所在平面存在交點,則根據(jù)所述交點是否落在當前面單元所在多邊形內(nèi)以判斷所述第一矢量是否穿過所述邊界域的面單元所在的多邊形,包括:
13、若所述第一矢量與當前面單元所在平面存在交點,則確定投影平面并將所述交點以及該當前面單元均投影至投影平面,獲得位于投影平面的投影面單元和投影交點;
14、在所述投影平面中判斷投影交點與投影面單元的位置關(guān)系,以確定交點是否落在當前面單元所在多邊形內(nèi);
15、若所述交點落在當前面單元所在多邊形內(nèi),則確定所述第一矢量穿過所述邊界域的面單元所在的多邊形;
16、若所述交點未落在當前面單元所在多邊形內(nèi),則確定所述第一矢量未穿過所述邊界域的面單元所在的多邊形。
17、進一步地,在所述投影平面中判斷投影交點與投影面單元的位置關(guān)系,以確定交點是否落在當前面單元所在多邊形內(nèi),包括:
18、根據(jù)射線法判斷投影交點與投影面單元所在多邊形的所有邊的交點個數(shù),以確定所述投影交點與所述投影面單元的位置關(guān)系;
19、若所述投影交點位于所述投影面單元所在多邊形內(nèi),則確定所述交點落在當前面單元所在多邊形內(nèi);
20、若所述投影交點位于所述投影面單元所在多邊形外,則確定所述交點落在當前面單元所在多邊形外。
21、進一步地,根據(jù)射線法判斷投影交點與投影面單元所在多邊形的所有邊的交點個數(shù),以確定所述投影交點與所述投影面單元的位置關(guān)系,包括:
22、從所述投影交點發(fā)出射線,確定所述射線與所述投影面單元所在多邊形的所有邊的交點個數(shù);
23、若所述交點個數(shù)為奇數(shù),則確定所述投影交點位于所述投影面單元所在多邊形內(nèi);
24、若所述交點個數(shù)為偶數(shù),則確定所述投影交點位于所述投影面單元所在多邊形外。
25、進一步地,從所述投影交點發(fā)出射線,確定所述射線與所述投影面單元所在多邊形的所有邊的交點個數(shù),包括:
26、從所述投影交點發(fā)出x軸方向射線;
27、將所述投影交點的y坐標與所述投影面單元所在多邊形的每條邊的兩個端點的y坐標均進行比較,獲得所述投影交點所在x軸方向橫線與所述投影面單元所在多邊形的每條邊的交點的列表;
28、將所述投影交點的x坐標與交點的列表中所有交點的x坐標進行比對,確定所述射線與所述投影面單元所在多邊形的所有邊的交點個數(shù)。
29、進一步地,在所述循環(huán)遍歷中針對所述邊界域的每個面單元均判斷所述第一矢量與當前面單元所在平面是否存在交點,包括:
30、構(gòu)建每個面單元中心到查詢節(jié)點的第二矢量;
31、分別計算所述第一矢量和第二矢量在當前面單元所在平面的面法矢上的投影長度;
32、若所述第二矢量在當前面單元所在平面的面法矢上的投影長度為0,或者,當所述第二矢量在當面前單元所在平面的面法矢上的投影長度不為0且所述第一矢量和第二矢量在當前面單元所在平面的面法矢上的投影長度的比值大于1,確定所述第一矢量與當前面單元所在平面存在交點,否則所述第一矢量與當前面單元所在平面不存在交點。
33、進一步地,當確定所述第一矢量穿過所述邊界域的面單元所在的多邊形時,根據(jù)所穿過的邊界域的面單元確定目標搜索邊界面單元,包括:
34、當確定所述第一矢量穿過所述邊界域的面單元所在多邊形時,記錄被穿過的所述邊界域的面單元的編號信息,其中所述被穿過的所述邊界域的面單元的數(shù)量至少包括兩個,且所述被穿過的所述邊界域的面單元的數(shù)量中至少包括被洞邊界阻隔時遇到的洞邊界面單元;
35、若被穿過的所述邊界域的面單元的數(shù)量為兩個,則將排除被洞邊界阻隔時遇到的洞邊界面單元后剩余的所述邊界域的面單元確定為目標搜索邊界面單元;
36、若被穿過的所述邊界域的面單元的數(shù)量大于兩個,則將排除被洞邊界阻隔時遇到的洞邊界面單元后剩余的所述邊界域的面單元中距離查詢節(jié)點最近的所述邊界域的面單元確定為目標搜索邊界面單元。
37、作為本發(fā)明的另一個方面,提供一種用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索裝置,用于實現(xiàn)前文所述的用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索方法,其中,包括:
38、構(gòu)建模塊,用于當相鄰單元搜索被洞邊界阻隔時,構(gòu)建被洞邊界阻隔前的最后一個判斷單元中心到查詢節(jié)點的第一矢量;
39、第一確定模塊,用于確定阻隔當前相鄰單元搜索的洞邊界的邊界域;
40、循環(huán)遍歷模塊,用于對所述邊界域的面單元進行循環(huán)遍歷,以判斷所述第一矢量是否穿過所述邊界域的面單元所在的多邊形;
41、第二確定模塊,用于當確定所述第一矢量穿過所述邊界域的面單元所在的多邊形時,根據(jù)所穿過的邊界域的面單元確定目標搜索邊界面單元;
42、第三確定模塊,用于根據(jù)所述目標搜索邊界面單元所屬網(wǎng)格單元確定目標判斷單元,并根據(jù)所述目標判斷單元確定搜索路徑。
43、作為本發(fā)明的另一個方面,提供一種宿主單元搜索系統(tǒng),其中,包括:相鄰單元搜索裝置和前文所述的用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索裝置,所述用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索裝置與所述相鄰單元搜索裝置通信連接,
44、所述相鄰單元搜索裝置用于提供相鄰單元搜索算法,以實現(xiàn)宿主單元搜索;
45、所述用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索裝置用于當相鄰單元搜索被洞邊界阻隔時確定判斷單元的搜索路徑,以輔助相鄰單元搜索裝置完成宿主單元搜索。
46、本發(fā)明提供的用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索方法,通過構(gòu)造被洞邊界阻隔時最后一個判斷單元中心指向查詢節(jié)點的第一矢量,遍歷洞邊界所有面單元,判斷第一矢量穿過哪些洞邊界面單元,并根據(jù)遍歷后的這些洞邊界面單元確定突破洞邊界阻隔的下一步搜索方向,即確定目標判斷單元,從而確定被洞邊界阻隔的搜索路徑。本發(fā)明的這種用于相鄰單元搜索被洞邊界阻隔的宿主單元搜索方法能夠處理任何網(wǎng)格單元類型的計算網(wǎng)格以及任何形狀的洞邊界形式,能夠有效解決相鄰單元搜索路徑被洞邊界阻隔的問題,具備很好的適應性和突破洞邊界阻隔搜索穩(wěn)定性。