鄭朝亮,楊余旺
(南京理工大學計算機科學與工程學院,江蘇 南京 210094)
網(wǎng)格劃分是計算機圖形學研究的重要內(nèi)容,目前,有多種網(wǎng)格劃分算法,如拓撲分解法、節(jié)點連接法、映射單元法、基于柵格法等。建立計算模型是流體力學(CFD)的重要環(huán)節(jié),通常來說CFD 的計算模型都是簡單的規(guī)則體或者是規(guī)則體的疊加[1]。目前多款商業(yè)構(gòu)型軟件都能生成網(wǎng)格文件,但是在網(wǎng)格文件的結(jié)構(gòu)上存在差異。
本文對導入Fluent 的網(wǎng)格文件以OpenGL 圖形處理軟件進行物理模型的顯示,主要針對以Gambit軟件生成的網(wǎng)格文件,由于鮮有文獻對網(wǎng)格文件的結(jié)構(gòu)進行說明以及解釋,所以對網(wǎng)格文件的解析是通過對大量網(wǎng)格文件的分析與總結(jié)得出的。最終通過程序解讀,在VC 平臺用C 語言編程,逐步實現(xiàn)點、線、面、體的模型構(gòu)建,使網(wǎng)格文件在開發(fā)的環(huán)境中正確顯示。
本文采用Visual C ++6.0 Enterprise 作為開發(fā)工具,利用MFC 基礎類庫作為整體軟件程序界面的開發(fā)基礎,利用OpenGL 圖形庫作為整體軟件程序圖形顯示處理的開發(fā)基礎。通過對網(wǎng)格文件的解讀后,自行繪制出相應的圖形,最終形成較為方便、快捷、全面的模擬計算程序。
網(wǎng)格文件大小不一,但是總體結(jié)構(gòu)遵循一定的生成規(guī)律。在程序中對網(wǎng)格文件解讀并且生成對應的圖形,必須先對其進行正確的物理解讀[2]。下面以Gambit 軟件生成的網(wǎng)格文件為例,對其基本構(gòu)成進行解讀:
以上為網(wǎng)格文件的基本構(gòu)成,一般的網(wǎng)格文件大小從幾十kB 到上百MB 不等,但是基本組成類似,本文將核心部分挑出進行解讀。
1)前2 行解釋生成此文件所用的軟件,如此例中表示的為Gambit 軟件生成的網(wǎng)格文件。(2ND)解釋此網(wǎng)格模型的維度,ND 為2 時則為二維網(wǎng)格,ND 為3 時則為三維網(wǎng)格。
2)(10(zone-id first-index last-index type ND)):
其中索引10 表示此類為網(wǎng)格點(node)信息。zone-id表示分配給該區(qū)域的編號。first-index last-index 分別為所有點的起始以及結(jié)束索引,表示方式為16 進制數(shù)字。type 表示點在網(wǎng)格中的類型,type 等于0 時為“虛”點,等于2 時為邊界點,等于1 時為無類型。在一般網(wǎng)格文件中,點的類型都為無類型,即type 都為1。ND 為表示網(wǎng)格維度:2 表示二維,3 表示三維。x,y,z 表示點的坐標信息,如無特殊情況,此類即表示構(gòu)成網(wǎng)格所有的點的坐標信息[3]。
3)(13(zone-id first-index last-index type elementtype)):其中索引13 表示此類為網(wǎng)格面(Face)信息。zone-id 與點信息一樣,表示該面所分配到的編號。first-index last-index 分別表示構(gòu)成該面的起始點以及結(jié)束點的索引,用16 進制表示。type 表示此面作為邊界的類型,目前總結(jié)出的所有類型,可參考表1。element-type 一般有3 種表示,并且決定n_type 表達方式,具體見表2。在具體信息里,n0,n1,n2 分別表示構(gòu)成網(wǎng)格單元的點(n_type 為3 有3 個點,n_type為4 有4 個點)的索引,具體點的坐標信息可根據(jù)點的索引于網(wǎng)格點信息(10)中進行檢索。cr,c1 分別為此表面與右側(cè)區(qū)域以及左側(cè)區(qū)域的關系,可根據(jù)這2 個值確定此面是否為耦合面。
表1 type 類型
表2 Face 類中element-type 的類型
4)(12(zone-id first-index last-index type elementtype)):索引12 表示此類為單元Cell 信息,zone-id,first-index,last-index 與之前的解釋類似。type 的值一般為1,表示正常區(qū)域。element-type 表示該部分Cell的類型,具體如表3。
表3 Cell 類中element-type 的類型
5)(45(zone-id zone-type zone-name)()):索引45 表示此類為命名信息,zone-id 為對應區(qū)域的編號,zone-type 為對應區(qū)域的類型:若區(qū)域為Cell,則zonetype 的類型有fluid 和solid[4];若區(qū)域為Face,zonetype 的類型可參考表1。
通過對網(wǎng)格文件的結(jié)構(gòu)解析,為軟件程序讀取網(wǎng)格文件,并且通過OpenGL 顯示功能的實現(xiàn)提供了非常重要的參考和幫助。軟件程序基于網(wǎng)格文件的結(jié)構(gòu),編制了網(wǎng)格文件的分析程序,分析程序主要包含openMsh(),readPoint(),readFace(),readZone()共4類函數(shù)功能。其中,openMsh()為打開網(wǎng)格文件;其它3 個函數(shù)依次對應網(wǎng)格文件的3 個基本要素:點、面、區(qū)。具體流程見圖1。
圖1 流程圖
各函數(shù)模塊功能為:
1)openMsh()函數(shù):讀入整個網(wǎng)格文件內(nèi)容,并檢索網(wǎng)格文件是否由Gambit 軟件生成,判斷網(wǎng)格文件為二維還是三維。
2)readPoint()函數(shù):提取網(wǎng)格文件中所有點的信息,包括點的坐標以及每個點的編號。
3)readFace()函數(shù):提取網(wǎng)格文件中所有面的信息,包括構(gòu)成該面的所有點的信息。
4)readZone()函數(shù):提取網(wǎng)格文件中所有區(qū)域(Cell)的信息,包括構(gòu)成該區(qū)域內(nèi)所有點的信息。
在完成對整個網(wǎng)格文件的分類提取儲存后,判斷當前的繪圖模式,繪圖模式包括整體顯示模式DrawMSHScene()、部分顯示模式DrawZoneScene()、突出顯示模式DrawZoneHightScene(),提取所需繪制部分的點、面、區(qū)的信息,通過RenderScene()函數(shù)對網(wǎng)格圖形進行顯示。
以裝甲車輛網(wǎng)格文件為例,通過Fluent 對裝甲車輛進行數(shù)值模擬,建立裝甲車輛及地面背景的物理模型。本文以已經(jīng)公布的坦克圖片、部件尺寸參數(shù)為參考,在保留外部幾何形狀,保留溫度分布特征明顯的部件,盡量簡化、舍棄內(nèi)部復雜細小部件,減少網(wǎng)格數(shù)量,提高計算速度的前提下,建立簡化的坦克裝甲車輛的物理模型。
在物理模型的基礎上使用Gambit 軟件進行網(wǎng)格劃分,網(wǎng)格劃分遵從由內(nèi)到外,優(yōu)先六面體網(wǎng)格,其次四面體網(wǎng)格,熱交互強烈處密,其次疏的準則[5]。得到坦克裝甲車輛具體的混合型網(wǎng)格,見圖2。
一個網(wǎng)格文件大小從幾百kB 到幾百MB 不等,對于其中的點、面、體信息記錄的量很龐大,程序設計之前,首先定義相關的結(jié)構(gòu)體,以記錄存儲信息[6]。
1)定義點的結(jié)構(gòu)體,命名為vertex,內(nèi)部定義int型編號number,及float 型x、y、z 存儲點的位置。
2)定義面的結(jié)構(gòu)體,命名為face,內(nèi)部主要是int型編號number。
3)定義區(qū)域的結(jié)構(gòu)體,命名為zone,內(nèi)部需要有string 型變量記錄名字,對應區(qū)域類型,判斷是否是耦合面,如果是還得添加相關信息[7]。
讀入1 個網(wǎng)格文件(msh 文件)后,依次遍歷,分別執(zhí)行readPoint()、readFace()、readZone()這3 個函數(shù)。
1)readPoint()函數(shù)執(zhí)行相對簡單,遍歷網(wǎng)格文件中所有的點信息,通過壓棧將信息存儲。
2)readFace()函數(shù)執(zhí)行相對復雜,最大的難點是判斷是否有陰影面。本文規(guī)定若有陰影面,則添加1個面為shadow 面,名稱為原來的面加后綴“-shadow”。如wall 面為陰影面,則由wall 面產(chǎn)生1 個陰影面”wall-shadow”。
3)readZone()函數(shù)將網(wǎng)格文件最后的Zones 信息讀入。依然通過壓棧方式存儲[8]。
在View 類里,添加1 個名為DrawMSHScene()的函數(shù),以完成網(wǎng)格文件的繪制工作。在此函數(shù)中,將之前壓入堆棧的信息出棧,通過OpenGL 簡單的畫點和線的方式將這些信息連接起來即可[9]。為了用戶觀察方便,程序中添加DrawZoneHightScene()函數(shù),當指定具體的邊界時,該邊界區(qū)域以紅色線條顯示。圖形顯示區(qū)可包括一般的圖形操作功能,如對圖形的拖拽、旋轉(zhuǎn)、放大縮小等功能。
構(gòu)件名稱選擇“fushequ”,邊界名稱選擇“facetouming”,得到的效果圖見圖3。
圖3 網(wǎng)格文件讀取顯示
一個完整的網(wǎng)格文件信息眾多,其邊界從幾個至幾十上百個不等,在信息讀取功能中已經(jīng)記錄了所有的邊界,在程序中用戶可以自主選擇[10]。每當做不同的選擇時,圖形顯示區(qū)域可將對應的邊界區(qū)域用紅色顯示,使網(wǎng)格讀取程序更加智能[11]。操作界面見圖4。
圖4 操作界面
Fluent 采用了多種求解方法和多重網(wǎng)格加速收斂技術,因而Fluent 能達到最佳的收斂速度和求解精度。本軟件為了更加精準和直觀,加入了與Fluent 交互的功能。
本軟件與Fluent 之間的交互功能主要是通過程序向Fluent 發(fā)送命令來實現(xiàn),而實現(xiàn)這項功能主要是依靠void do_command(CString&str)以及void do_commands(CStringArray&str)兩功能函數(shù),前者能向Fluent 發(fā)送一條命令,后者則能一次發(fā)送多條命令。其中CString&str 以及CStringArray&str 分別為所需發(fā)送給Fluent 的一條或者多條命令??紤]到用戶使用軟件程序的方便性,軟件程序內(nèi)大多采用后者,即一次向Fluent 發(fā)送多條指令,以減少用戶工作量。比如需要對導入的網(wǎng)格文件進行檢查,軟件程序向Fluent發(fā)送相應命令的程序為do _command(“/mesh/check”)。
Fluent 初始化時與本軟件程序交互的結(jié)果見圖5。
圖5 與Fluent 同步交互
本文的主要意義在于結(jié)合實際應用中的需要,研究快速顯示網(wǎng)格文件的方法。通過對網(wǎng)格文件進行正確解讀,在VC 平臺上以OpenGL 圖形處理軟件繪制并建立了一套網(wǎng)格文件解讀軟件,證明了其可行性,為其他二次開發(fā)軟件提供經(jīng)驗,具有一定的實用價值。
[1]張師帥.計算流體動力學及其應用——CFD 軟件的原理與應用[M].武漢:華中科技大學出版社,2011.
[2]程雪玲,胡非.復雜地形網(wǎng)格生成研究[J].計算力學學報,2006,23(3):314-316.
[3]Sibon R.Locally equiangular triangulations[J].The Computer Journal,1978,21(3):243-245.
[4]胡瑞安.計算機輔助幾何設計[M].武漢:華中理工大學出版社,1987.
[5]程耀東,汪璐,劉愛貴,等.面向高能物理計算的網(wǎng)格文件系統(tǒng)[J].計算機科學,2008,35(11):36-38,39.
[6]豐存禮,劉成,張敏華.商業(yè)軟件Gambit 和Fluent 在化工中的應用[J].計算機與應用化學,2005,22(3):231-234.
[7]肖冰,石愛國,王驍.基于GAMBIT 的艦船全附體幾何建模[J].船舶工程,2010(S2):33-35.
[8]王驍,萬林,楊波,等.基于Pro/ENGINEER 曲面建模技術的三維船體造型設計[J].艦船科學技術,2007,29(5):12-14.
[9]紀宏超,李耀剛,鄭鐳.VB 開發(fā)Gambit 關鍵問題的研究[J].唐山學院學報,2012,25(6):9-11.
[10]Fritz G Wollenweber.Weather impact on background temperature as predicted by an IR background model[C]//Characterization,Propagation,and Simulation of Infrared Scenes.SPIE,1311,1990.
[11]ASHRAE.ASHRAE Fundamentals Handbook(SI)[Z].ASHRAE,2001:674-678.
[12]宣益民,劉俊才,韓玉閣.車輛熱特征分析及紅外熱像模擬[J].紅外與毫米波學報,1998,17(6):441-446.
[13]韓玉閣,宣益民,馬忠俊.成像目標的紅外隱身效果評估[J].紅外技術,2010,32(4):239-241.
[14]Cox C,Munk W.Statistics of the sea surface derived from sun glitter[J].Journal of Marine Research,1954,13:198-227.
[15]Ballard J R.Yuma 1 Information Base for Generation of Synthetic Thermal Scenes[R].Mississippi:Smart Weapons Operability Enhancement Report 944,1994.
[16]章博,陳國明,孔令圳.一種真實地形計算流體力學網(wǎng)格生成方法[J].中國石油大學學報(自然科學版),2011,35(5):104-108.
[17]何川,李三立,黃震春,等.先進計算基礎設施(ACI)試驗平臺軟件系統(tǒng)的設計和實現(xiàn)[J].小型微型計算機系統(tǒng),2003,24(2):202-206.
[18]王立軍,潘志洋.基于參數(shù)化建模的強制慣性分離室氣流清選原理研究[J].東北農(nóng)業(yè)大學學報,2014,45(3):104-109.