張學鋒, 管仕敏, 儲岳中
(安徽工業(yè)大學 計算機科學與技術學院,馬鞍山 243002)
關于彈射器方面的研究,歷經(jīng)了眾多的階段,其中包括彈簧式,液壓式,壓縮空氣式彈射器,如今使用最廣泛的就是燃氣式,燃氣蒸汽式以及電磁式彈射器. 本文所研究的就是燃氣式彈射器,通過建立二維軸對稱模型,加以借助流體力學軟件Fluent模擬發(fā)射系統(tǒng)的速度場,運動場,以及壓力場等分布規(guī)律,得到內(nèi)彈道參數(shù)流場分布云圖. 通過設定初容室結構,入流條件和發(fā)射環(huán)境等參數(shù)快速建立導彈彈射內(nèi)彈道數(shù)值計算模型輸出發(fā)射筒溫度,壓強和導彈內(nèi)彈道仿真結果,運用到實際應用中,降低一定的實驗成本. 計算機仿真軟件可以重復的進行仿真計算,避免實際實驗所帶來的一系列損耗.
目前,關于內(nèi)彈道數(shù)學模型的數(shù)值仿真,已經(jīng)有了眾多的研究數(shù)據(jù). 文獻[1]以自彈式彈射器為例,對比低壓室下二維模型和零維模型的數(shù)據(jù),得出零維模型具有計算量小,工作效率高等優(yōu)勢,但是并不能更好的描述彈射器低壓室內(nèi)彈道特性,尤其是低壓室內(nèi)的壓力分布特性. 文獻[2]利用遺傳優(yōu)化算法對5個待定參數(shù)進行優(yōu)化,利用四階龍格庫塔以及迭代算法對內(nèi)彈道理論方程組進行計算,進一步的優(yōu)化內(nèi)彈道參數(shù)值,使零維模型理論計算得到的結果更具有參考價值. 本文著重對導彈發(fā)射過程中建立二維內(nèi)彈道模型,通過設置幾何建模參數(shù)以及流體建模參數(shù),仿真輸出內(nèi)彈道相關曲線以及流場云圖等. 眾所周知,目前功能最全面,適用性最廣,國內(nèi)使用最廣泛的CFD軟件之一就是Fluent[3]. 其強大的計算功能正是我們這款仿真軟件所需的,但是Fluent由于全英文的界面,桎梏了眾多的國內(nèi)用戶,畢竟并不是所有的人都熟悉英語,此外,Fluent的參數(shù)設置也是十分的復雜,使用人員通常都是需要花費眾多的精力去了解并且掌握其參數(shù)設置. 為此,本文對Fluent進行二次開發(fā),避免上述的兩個問題,實現(xiàn)在交互界面設置參數(shù)直接調(diào)用Fluent軟件進行二維內(nèi)彈道數(shù)學模型仿真評估.
采用Fluent對內(nèi)彈道數(shù)學模型進行流動求解計算是內(nèi)彈道工程設計的重要部分. 針對上述所說關于Fluent使用的兩個弊端,在此我們在.Net Microsoft Visual Studio 2010平臺下運用C#語言對Fluent進行二次開發(fā),將Scheme日志文件作為C#與Fluent數(shù)據(jù)交互的接口,建立了導彈、發(fā)射筒、初容室、導流錐等幾何建模參數(shù)設置,以及燃氣參數(shù)、初始條件、邊界設置等流體建模參數(shù)設置. 通過在軟件GUI界面中動態(tài)設置參數(shù)從而修改Scheme接口文件驅動Gambit進行網(wǎng)格建模,然后啟動Fluent實現(xiàn)彈射內(nèi)彈道流場數(shù)值仿真模擬[4,5].
在.Net平臺下實現(xiàn)對Gambit以及Fluent軟件的二次開發(fā),其需要克服的一個技術難點就是如何通過C#語言成功的調(diào)用Gambit和Fluent,實現(xiàn).Net平臺與Gambit、Fluent的數(shù)據(jù)交互. 針對這個問題文獻[4]有著詳細的描述. 文獻[4]描述的是VB語言對Fluent進行二次開發(fā),本文注重的是C#語言對Fluent語言的二次開發(fā),二者有著異曲同工的思想. 由于Gambit和Fluent均支持一種完備的日志文件體系,所有的操作過程都被保存在日志文件即Journal文件中. 其新生成的Journal文件涉及許多內(nèi)彈道變量值,其大部分的代碼都是相同的,需要蓋面的只是一些重要參數(shù),本文通過變量替換法動態(tài)改變對應的參數(shù)值,從而實現(xiàn)平臺與軟件的無縫對接.
參數(shù)化建模就是動態(tài)修改所建立的模型日志文件,通過參數(shù)化日志文件實現(xiàn)參數(shù)化建模. 用戶通過內(nèi)彈道仿真軟件界面輸入導彈、初容室、發(fā)射筒、導流錐各項參數(shù)建立符合自己需求的彈射內(nèi)彈道模型.
文本用戶界面(Text User Interface,TUI)是Fluent軟件開發(fā)預留了一種的程序語言,編寫在日志文件(Journal文件)便于Fluent軟件調(diào)用執(zhí)行參數(shù)化建模、流體并行計算. 本文講述的仿真軟件就是利用TUI語言編寫的.jou文件,進行重復性仿真建模計算. 作為C#語言與Gambit和Fluent軟件的數(shù)據(jù)交互接口,其日志文件(Journal文件)編寫是十分重要的,攻克這一難點,該仿真軟件的開發(fā)就等于攻克了一大堡壘. 下面就詳細講述Journal文件基本的編寫格式.
Gambit日志文件編寫的基本語法規(guī)則與格式:
(1) vertex create coordinates 0 0 0為創(chuàng)建一個節(jié)點,3個零代表X、Y、Z軸方向的坐標.
(2) $RChmI=93為定義一個參數(shù)RChmI,其值為93.
(3) vertex cmove “vertex.27” multiple 1 offset ($RChmI)0 0表示以上述創(chuàng)建的節(jié)點為參照再創(chuàng)建一個X=RChmI的點. 這樣我們可以動態(tài)修改RChmI的值來修改節(jié)點的X點坐標.
(4) edge create straight “vertex.31” “vertex.43” 表示兩個參數(shù)節(jié)點連成線vertex.31、vertex.43表示創(chuàng)建的第31個節(jié)點和第43個節(jié)點.
(5) volume mesh “volume.1” tetrahedral size 5 為劃分網(wǎng)格.
(6) physics create “inlet” btype “PRESSURE_INLET”edge “edge.6”表示創(chuàng)建邊界條件,以 inlet為例,邊界類型選擇為PRESSURE_INLET壓力入口.
(7) export fluent5 “輸出文件的目錄生成文件的名字.msh”輸出后綴名為.msh的文件并為后續(xù)Fluent流體計算做準備.
Fluent日志文件的編寫不同于Gambit日志文件,Fluent本身不能自動替換參數(shù)的值,而且語言復雜,這就需要手動生成一個日志文件模板,包括邊界條件的設置、流動求解控制參數(shù)設置,然后通過編程對日志文件進行動態(tài)修改. Fluent日志文件基本語句與格式如下所示:
(1) (cx-gui-do cx-set-text-entry “Select File*Text”“文件路徑 s.cas”)表示讀入文件路徑下所需要的ts.cas文件.
(2) (cx-gui-do cx-set-text-entry “Select File*Text”網(wǎng)格文件名.msh)表示讀入文件路徑下所需要的網(wǎng)格文件.
(3) Boundary-conditions/velocity 定義邊界條件.
(4)(cx-gui-docx-set-real-entry-list“Operating Conditions*Frame1*Table1*Frame1(Pressure)*Table1(Pr essure)*RealEntry2(Operating Pressure)” '( 101325))為設置初始時刻壓力值為101325.
(5) (cx-gui-docx-set-real-entry-list“wall-6-1*Frame4*Frame3(Thermal)*Frame1*Frame1(Thermal Conditions)*Frame7*Table7*RealEntry8(Wall Thickness)” '( 0.005))為設置初始條件壁面厚度為0.005.
用TUI語言編寫的Journal日志文件通俗易懂、操作方便,運用C#對Fluent進行二次開發(fā),通過軟件GUI界面進行內(nèi)彈道參數(shù)設計,動態(tài)生成所需的Journal日志文件,完成參數(shù)化建模與流體并行計算過程.
關于Gambit與Fluent的調(diào)用,網(wǎng)上有著眾多的資料,大體歸結于兩種方案,方案一是通過WinExec()函數(shù)調(diào)用,其二就是通過Shell()函數(shù)調(diào)用. 本文采用的是批處理文件(bat文件)控制參數(shù)的方法調(diào)用Gambit和Fluent軟件,文件內(nèi)容指示Gambit,Fluent按照指定的路徑讀取Journal日志文件,保存計算結果到指定的目錄中. 調(diào)用過程共分為先動態(tài)生成規(guī)定格式的批處理文件,然后編程開啟進程運行此批處理文件,完成調(diào)用部分[6].
Gambit的bat文件內(nèi)容由Gambit的安裝路徑、Gambit的版本號以及Gambit運行的Journal文件的路徑組成,具體形式如下:
C:Fluent.Incgambit tbin tx86gambit.exe -r2.4.6-init D:CFDBaseBase_Gam.jou.
相應的Fluent的bat文件與Gambit的bat文件內(nèi)容相近,只是Fluent的bat文件多了一個2d,3d的計算模型的設定,具體形式如下:
“C:ansys15ANSYSIncv150fluent tbinwin64Fluent.exe” -r15.0.0 2d -t4 -i D:CFDBaseBase_Flu.jou.
軟件動態(tài)生成批處理文件后,通過調(diào)用VS的基礎庫,開啟進程是實現(xiàn)對Gambit和Fluent的外部調(diào)用.然后Gambit和Fluent會按照Journal文件運行規(guī)范,完成網(wǎng)絡建模與流體計算過程,并且在計算結束后實時將結果傳至軟件界面.
燃氣彈射內(nèi)彈道數(shù)值仿真集成軟件的結構流程圖如圖1所示. 該軟件分為理論計算和仿真評估模塊. 本文側重講解的是燃氣彈射內(nèi)彈道二維數(shù)值仿真軟件的開發(fā),也就是上述所說的仿真評估模塊. 燃氣彈射內(nèi)彈道二維數(shù)值仿真軟件建立相應的發(fā)射系統(tǒng)燃氣流計算模型[7-9],設定流體力學計算仿真參數(shù),先調(diào)用Gambit進行網(wǎng)格建模后調(diào)用Fluent求解器自動求解計算.
“燃氣彈射內(nèi)彈道”以彈射導彈為典型研究對象,通過設定發(fā)射系統(tǒng)仿真平臺參數(shù),能夠快速,準確的建立相應的導彈彈射內(nèi)彈道理論計算模型和流體參數(shù)化計算模型. 并根據(jù)設定參數(shù)快速的進行計算,完成導彈彈射過程中設定的參數(shù)化求解目標,進行導彈發(fā)射過程中發(fā)射筒內(nèi)壓力與溫度、導彈內(nèi)彈道參數(shù)等預測與評估,為導彈彈射內(nèi)彈道評估提供理論和技術支持以及為典型導彈發(fā)射系統(tǒng)方案論證提供決策支持.
燃氣彈射內(nèi)彈道二維數(shù)值仿真軟件開發(fā)的主要核心就是利用流體力學分析軟件Fluent進行分析計算.
幾何網(wǎng)格建模主要由外部調(diào)用Gambit軟件實現(xiàn),其參數(shù)設置包括彈射動力裝置幾何參數(shù)、導流錐、初容室、發(fā)射筒和導彈等參數(shù). 這些參數(shù)的設置用戶可以通過軟件的GUI界面對擴展模型中的參數(shù)進行動態(tài)設置并進行仿真建模. 其數(shù)值計算網(wǎng)格如圖2所示.
圖1 軟件分析流程圖
圖2 網(wǎng)格模型
流體并行計算是通過外部調(diào)用Fluent軟件實現(xiàn),其參數(shù)的設置包括燃氣參數(shù)、計算初始條件、邊界條件設置. 建模參數(shù)完成后通過軟件代碼動態(tài)生成Journal文件、.c文件. 由上述所述可知,Journal文件內(nèi)容大致相同,不同的僅僅是參數(shù)化變量取值,因此用戶在GUI界面輸入相應的網(wǎng)格建模、流體計算相關參數(shù),軟件實現(xiàn)這些參數(shù)的替換,形成新的Journal文件以及.c文件,從而進行重復性的網(wǎng)格建模與并行計算. 其整體的結構示意圖如圖3所示.
燃氣彈射內(nèi)彈道二維數(shù)值仿真軟件主要由兩部分組成,分別是參數(shù)化仿真與外推仿真. 以VS2010為軟件開發(fā)工具,利用C#編程調(diào)用Gambit以及Fluent,在Windows環(huán)境下使用. 由于保密協(xié)定,軟件的具體界面設計就不再截圖具體說明,以下用文字簡要概述: 該軟件界面主要分為4個版面,分別是菜單欄,模塊選擇,參數(shù)修改區(qū)以及三維模型顯示區(qū). 其模塊選擇區(qū)域顯示參數(shù)化仿真以及外推仿真,二者仿真的區(qū)別就在于入口條件的不同,參數(shù)化仿真是將發(fā)動機噴管作為壓力入口進行計算的,而外推仿真是將已知實驗得到的發(fā)射筒內(nèi)的壓力與溫度變化規(guī)律,將它們作為入口條件進行內(nèi)彈道仿真計算. 其三維模型顯示區(qū)域是利用OpenGL(Open Graphics Library)繪制的彈射內(nèi)彈道三維模型示意圖如圖4所示. 用戶如果通過GUI界面修改內(nèi)彈道的相關參數(shù),三維模型也會相應的動態(tài)改變.使用戶更加清晰,直觀的理解彈射內(nèi)彈道結構設計.
燃氣彈射內(nèi)彈道二維數(shù)值仿真軟件的結果輸出包括三個方面,分別是曲線輸出,流場云圖輸出以及動畫輸出. 用戶通過軟件GUI界面設置好模型參數(shù),先通過Gambit建立網(wǎng)格模型,然后利用Fluent對所建立的二維軸對稱網(wǎng)絡模型進行數(shù)值模擬,通過UDF導出流場特定空間點發(fā)射筒平均壓力、平均溫度以及導彈相關運動曲線,并且生成內(nèi)彈道各時刻云圖和動畫. 各內(nèi)彈道曲線圖如圖5所示.
圖6,圖7顯示的是高壓室0.1 s和0.3 s的壓力云圖,對比云圖左側的刻度值,從左側可以看出0.1 s的壓力是429 596 Pa,0.3 s時壓力增高到1172 599 Pa. 這是由于開始燃氣彈射時,燃燒藥柱,產(chǎn)生大量的高壓氣體有噴管進入發(fā)射筒,從而在尾罩底部空間形成燃氣壓力,驅使導彈向上運動,發(fā)射出去[10],因此高壓室達到一種高壓狀態(tài),有關高壓室溫度流場以及速度流場在此就不一一贅述了[11].
圖3 燃氣彈射內(nèi)彈道二維數(shù)值仿真軟件結構圖
圖4 彈射內(nèi)彈道三維模型示意圖
圖5 內(nèi)彈道曲線輸出
圖6 0.1 s高壓室壓力云圖
動畫輸出包括3部分,分別是壓力動畫、溫度動畫、以及速度動畫,如圖8所示,用戶可以操作軟件顯示不同的動畫文件.
圖7 0.3 s高壓室壓力云圖
圖8 內(nèi)彈道動畫輸出
燃氣彈射內(nèi)彈道二維數(shù)值仿真軟件開發(fā)的核心部分就是運用C#語言對Fluent進行二次開發(fā). 工程人員在軟件的界面進行參數(shù)設計,該軟件就可以研究不同配比條件下,壓力、流場、溫度等流場數(shù)據(jù). 本軟件極大的節(jié)省了工程人員花費大量的時間去研究Fluent軟件的參數(shù)設置,很大程度上提高了科研人員的工作效率,適合做重復性實驗研發(fā),為燃氣流場參數(shù)的預估和試驗測量提供理論和技術支持. 今后將繼續(xù)更加深入的研究以及完善此軟件,建立多平臺發(fā)射系統(tǒng)的基于流體力學的參數(shù)化結構分析軟件,完成對車載箱式垂直熱發(fā)射、車載掛式垂直熱發(fā)射、車載筒式垂直熱發(fā)射等多平臺發(fā)射系統(tǒng)流體力學仿真分析.
1譚大成,苗佩云. 彈射器低壓室二維內(nèi)彈道模型及數(shù)值研究. 彈箭與制導學報,2006,26(4): 224-226.
2陳亞軍,儲岳中,張學鋒. 基于遺傳算法的導彈彈射內(nèi)彈道參數(shù)優(yōu)化數(shù)值仿真. 重慶理工大學學報(自然科學),2017,31(4): 127-133.
3Shinotake A,Nakamura H,Yadoumaru N,et al.Investigation of blast-furnace hearth sidewall erosion by core sample analysis and consideration of campaign operation.ISIJ International,2003,43(3): 321-330. [doi: 10.2355/isij international.43.321]
4宋先知,石宇,李根生,等. 基于FLUENT的熱力射流調(diào)制與流場計算分析軟件. 計算機應用,2016,36(S1): 315-318.
5李慧,王廣明,王東屏,等. 基于Fluent二次開發(fā)地鐵通風系統(tǒng)日志文件. 計算機系統(tǒng)應用,2015,24(4): 233-238.
6鄭智穎. FLUENT在粘彈性流體流動數(shù)值模擬中的應用[碩士學位論文]. 哈爾濱: 哈爾濱工業(yè)大學,2013.
7翟曉超,陳亞軍,姜毅. 動網(wǎng)格在仿真發(fā)射裝置內(nèi)彈道中的應用. 現(xiàn)代防御技術,2006,34(2): 24-28.
8李崢. 復合推進劑固體火箭發(fā)動機噴流流場數(shù)值模擬. 固體火箭技術,2014,37(1): 37-42.
9王福軍. 計算流體動力學分析--CFD軟件原理與應用. 北京: 清華大學出版社,2004: 190-248.
10李仁鳳,樂貴高,馬大為,等. 壁面障礙物對燃氣彈射流場和內(nèi)彈道的影響. 固體火箭技術,2016,39(3): 444-450.
11王麗,張學鋒. 某新型燃氣發(fā)生器發(fā)射過程藥柱燃燒數(shù)值仿真. 計算機仿真,2014,31(12): 37-40,97. [doi: 10.3969/j.issn.1006-9348.2014.12.009]