鐘佳伶,黎茂鋒,黃 俊,劉志勤,陳立偉
(西南科技大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,四川 綿陽 621010)
飛行器的氣動數(shù)據(jù)主要來源于計算流體力學(xué)(CFD,computational fluid dynamics)、風(fēng)洞試驗及飛行試驗[1],如何快速有效地表達(dá)試驗過程中獲得的數(shù)據(jù)以便為研究人員提供分析和決策支持,是目前研究的難題之一。氣動數(shù)據(jù)包含馬赫數(shù)Ma、攻角α、側(cè)滑角β等重要的屬性信息,同時具有數(shù)據(jù)量大、維度高、來源廣泛等特點,將多類型的氣動數(shù)據(jù)集中在同一個平臺上進(jìn)行分析非常困難。可視化技術(shù)可以直觀地呈現(xiàn)氣動數(shù)據(jù)的變化趨勢,并提供豐富的交互方式,以此利于研究人員揭示數(shù)據(jù)中包含的空氣動力學(xué)特性。
氣動數(shù)據(jù)主要應(yīng)用于飛機(jī)空氣動力學(xué)仿真中,以此根據(jù)飛機(jī)的空氣動力特征數(shù)據(jù)來建立飛機(jī)的空氣動力模型,隨著技術(shù)的進(jìn)步及對飛機(jī)性能的高需求,氣動數(shù)據(jù)的維度越來越大,結(jié)構(gòu)也越來越復(fù)雜[2]。傳統(tǒng)的表格查詢法已經(jīng)很難滿足試驗任務(wù)的需求,取而代之的是龐大復(fù)雜的數(shù)據(jù)表或者曲線形式等。Ananda等人[3]在低雷諾數(shù)的條件下,將平板機(jī)翼上的升力系數(shù)CL,阻力系數(shù)CD和俯仰力矩系數(shù)Cm進(jìn)行分析比較,并利用Matlab工具分別可視化了在不同長寬比的有限機(jī)翼模型上的升力、阻力及法向力的變化趨勢。Shields和Mohseni等人[4]在限定的雷諾數(shù)范圍、錐度比、縱橫比的條件下進(jìn)行風(fēng)洞試驗,通過腳本的編寫將試驗過程中獲取的數(shù)據(jù)進(jìn)行可視化,并根據(jù)可視化的結(jié)果圖分析給出了升力系數(shù)CL,阻力系數(shù)CD和俯仰力矩系數(shù)Cm隨攻角和雷諾數(shù)變化的情況。
由此可知在此之前的氣動數(shù)據(jù)分析僅僅對于某一特定類型數(shù)據(jù)進(jìn)行分析,所獲取的異源氣動數(shù)據(jù)無法集中在統(tǒng)一的平臺上,并且分析結(jié)果的生成依賴于獨(dú)立的分析工具,如Matlab,不能很好地對多個類型的氣動數(shù)據(jù)進(jìn)行動態(tài)的可視化分析,使得分析結(jié)果的共享性不強(qiáng),為此需要將不同類型的氣動數(shù)據(jù)規(guī)范化在同一個數(shù)據(jù)庫中,通過建立動態(tài)通用的用戶界面(UI,user interface)組件對規(guī)范化后的數(shù)據(jù)進(jìn)行實時的篩選分析操作,對于大數(shù)據(jù)量的實時繪制渲染ECharts具有非常好的交互性,氣動數(shù)據(jù)具有數(shù)據(jù)量大、來源廣泛等特點,因此利用ECharts可以較好的實現(xiàn)多類型氣動數(shù)據(jù)的動態(tài)可視化,使得科研人員對氣動數(shù)據(jù)除了數(shù)值本身之外更加直觀的理解。
針對上述問題,基于Echarts實現(xiàn)了瀏覽器端氣動數(shù)據(jù)分析圖表的動態(tài)實時渲染與繪制,基于構(gòu)建的動態(tài)UI組件實現(xiàn)了氣動數(shù)據(jù)的實時篩選,對互聯(lián)網(wǎng)環(huán)境下進(jìn)行多類型氣動數(shù)據(jù)的動態(tài)可視化進(jìn)行了探索和時間,為涉及氣動數(shù)據(jù)分析的工作人員提供了便利的分析平臺。
氣動數(shù)據(jù)主要的特點是量大,其重要來源是通過風(fēng)洞試驗獲取,隨著空氣動力學(xué)研究的進(jìn)步,在試驗過程中產(chǎn)生的數(shù)據(jù)以及需要考慮的參數(shù)也隨之增多[5],主要包括氣動力、熱、壓三大類型,并且不同的數(shù)據(jù)類型與之對應(yīng)的數(shù)據(jù)也有很大的差異。因此需要對數(shù)據(jù)進(jìn)行篩選,如若使用人工篩選的方式不僅耗費(fèi)大量時間,同時在效率上也得不到保障。由此可知針對數(shù)據(jù)篩選有必要建立動態(tài)通用的UI組件,即根據(jù)數(shù)據(jù)類型及相關(guān)參數(shù)的設(shè)定動態(tài)篩選出需要分析的氣動數(shù)據(jù)。
MVVM(model-view-viewmodel)模式,是WPF(windows presentation foundation)和Silverlight架構(gòu)師John Gossman 與2005年提出的[6],是MVP(model-view-presenter)模式與WPF結(jié)合的應(yīng)用方式時發(fā)展演變的一種新型模式框架。MVVM框架模式結(jié)構(gòu)[7]如圖1所示。

圖1 MVVM模式框架結(jié)構(gòu)圖
MVVM主要由頁面視圖(View)、視圖數(shù)據(jù)模型(ViewModel)、業(yè)務(wù)邏輯模型(Model)三部分組成。用戶在View的頁面視圖中觸發(fā)事件,在建立雙向數(shù)據(jù)綁定的基礎(chǔ)上通過向視圖數(shù)據(jù)模型ViewModel發(fā)出指令與業(yè)務(wù)邏輯模型Model實現(xiàn)通信,雙向數(shù)據(jù)綁定機(jī)制實現(xiàn)了頁面視圖模型View與視圖數(shù)據(jù)模型ViewModel之間數(shù)據(jù)自動同步更新。在MVVM框架模式中一個視圖數(shù)據(jù)模型ViewModel可以同時綁定在多個頁面視圖View上,以此來提高系統(tǒng)代碼的復(fù)用性。
ECharts是一個使用 JavaScript 實現(xiàn)的開源可視化庫,可以流暢的運(yùn)行在 PC和移動設(shè)備上,底層依賴矢量圖形庫,通過豐富組件和高度個性化的可視化解決方案,實現(xiàn)用戶和數(shù)據(jù)之間的交互操作,提供直觀,交互豐富的數(shù)據(jù)可視化圖表[8-9]。本文使用ECharts作為可視化的中間組件,利用ECharts豐富的人機(jī)交互可視化圖表,實現(xiàn)單條數(shù)據(jù)或者多條數(shù)據(jù)的動態(tài)顯示,結(jié)合MVVM框架的動態(tài)模板來實現(xiàn)對高維、量大的氣動數(shù)據(jù)進(jìn)行可視化分析的操作,由此提高氣動數(shù)據(jù)分析處理的效率。
整個氣動數(shù)據(jù)可視化分析系統(tǒng)依托已有的氣動數(shù)據(jù)管理系統(tǒng),能夠快速地篩選出氣動數(shù)據(jù)管理系統(tǒng)中所需要進(jìn)行可視化分析的研究對象及數(shù)據(jù)集。利用MVVM框架中的動態(tài)模板將接收到的JavaScript Object Notation(JSON)數(shù)據(jù)格式流通過UI組件動態(tài)篩選需要分析的數(shù)據(jù)類型,然后將篩選后的數(shù)據(jù)進(jìn)行分析結(jié)果可視化的操作。系統(tǒng)主要包含表現(xiàn)層、控制訪問層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層及數(shù)據(jù)庫源5大層次結(jié)構(gòu),其總體架構(gòu)如圖2所示。

圖2 系統(tǒng)總體架構(gòu)
由于氣動數(shù)據(jù)類型主要包括氣動壓、熱、力三大類型,但是每種類型下所包含的數(shù)據(jù)參數(shù)種類眾多。在本系統(tǒng)中使用到的相關(guān)數(shù)據(jù)分析參數(shù)類型[10]如下所示。
1)氣動壓數(shù)據(jù)分析字段如式(1)所示:
氣動壓:{Ma,Cp,P∞,q,Pt2,γ}
(1)
式中,Cp為壓力系數(shù),P∞為來流靜壓,q為來流動壓,Pt2為皮托壓力,γ為比熱比,Ma為來流馬赫數(shù)。
2)氣動熱數(shù)據(jù)分析字段如式(2)所示:
氣動熱{q,α,ρ,c,k,RC,ΔE,E0}
(2)
式中,q為熱流密度,α為薄膜電阻溫度計溫度系數(shù),ρ為熱流傳感器底部材料的密度,c為熱流傳感器底部材料的比熱容,k為熱流傳感器底部材料的熱傳導(dǎo)系數(shù),RC為熱流放大器熱電模擬網(wǎng)絡(luò)時間常數(shù),ΔE為薄膜電阻溫度計兩端電位差的平均值,E0薄膜電阻溫度計兩端初始電壓。
3)氣動力數(shù)據(jù)分析字段如式(3)所示:
{A,CA,N,CN,M,Cm,CL,CD,q∞,S,Lr,α,L/D}
(3)
式中,A為軸向力,CA為軸向力系數(shù),N為法向力,CN為法向力系數(shù),M為對頂點的俯仰力矩,Cm為對頂點的俯仰力矩系數(shù),CL為升力系數(shù),CD為阻力系數(shù),q∞為自由來流動壓,S為參考面積,Lr為參考長度,α為攻角,L/D為升阻比。
在氣動數(shù)據(jù)的可視化分析過程中,作為因變量(y軸)的分析字段有且僅有一個能使其發(fā)生變化的自變量(x軸)分析字段。系統(tǒng)定義了可視化分析的4個模塊:氣動數(shù)據(jù)類型選擇、參數(shù)設(shè)置、條件過濾設(shè)置以及是否執(zhí)行分析操作,具體的分析過程如圖3所示。

圖3 可視化動態(tài)分析泳道圖
1)氣動數(shù)據(jù)集選擇:首先,需要將異構(gòu)的氣動數(shù)據(jù)語義化在同一個數(shù)據(jù)庫中,在用戶進(jìn)行數(shù)據(jù)分析之前需要對系統(tǒng)中收集到的數(shù)據(jù)類型進(jìn)行篩選,包括氣動壓、氣動熱、氣動力三大類。其次,選擇需要進(jìn)行數(shù)據(jù)分析的研究對象,包括模型、原型兩類。最后,選擇進(jìn)行分析的數(shù)據(jù)集。
2)參數(shù)設(shè)置:由于氣動數(shù)據(jù)的數(shù)據(jù)量很龐大,進(jìn)行參數(shù)設(shè)置是為了過濾掉分析過程中不需要的數(shù)據(jù),系統(tǒng)形成了界面維度選擇、過濾等控件對比較數(shù)據(jù)字段進(jìn)行篩選,這樣有利于提高對氣動數(shù)據(jù)的分析和處理效率。參數(shù)條件的設(shè)置隨著數(shù)據(jù)類型的不同而發(fā)生變化。
3)條件過濾設(shè)置:經(jīng)過參數(shù)設(shè)置完成部分?jǐn)?shù)據(jù)的篩選后仍會存在很多與分析無關(guān)的數(shù)據(jù),因此設(shè)置條件過濾參數(shù),基于MVVM模式的動態(tài)框架實現(xiàn)頁面最小化刷新,將與之相關(guān)的數(shù)據(jù)從數(shù)據(jù)庫中讀取出來,實現(xiàn)了對氣動數(shù)據(jù)的二次篩選,以此得到更符合要求、更準(zhǔn)確的數(shù)據(jù)集來進(jìn)行數(shù)據(jù)可視化分析的操作。
4)數(shù)據(jù)可視化分析結(jié)果載入:Echarts配合視覺映射組件visualMap提供的豐富的視覺效果,將不同類型的數(shù)據(jù)映射到不同的視覺呈現(xiàn)面[9]。用戶完成數(shù)據(jù)集選擇及參數(shù)設(shè)置后,可以通過“數(shù)據(jù)分析”按鈕進(jìn)行氣動數(shù)據(jù)可視化分析的操作,反之,用戶也可以通過“重置數(shù)據(jù)”按鈕重新設(shè)定數(shù)據(jù)分析的相關(guān)參數(shù)。
根據(jù)圖3中的分析泳道圖及分析步驟,生成氣動數(shù)據(jù)分析動態(tài)篩選UI組件,得到可視化分析整體UI布局界面如圖4所示。
為了更加快速地進(jìn)行不同類型氣動數(shù)據(jù)的篩選,使得實時更新出滿足分析需求的數(shù)據(jù),系統(tǒng)根據(jù)分析維度、數(shù)據(jù)類型等條件對可視化的UI組件進(jìn)行動態(tài)適配,在人機(jī)交互展示界面中,使用氣動學(xué)專業(yè)術(shù)語與數(shù)據(jù)集的英文命名一一匹配,也便于研究人員能更加迅速的定位所需參數(shù)。系統(tǒng)采用MVVM框架動態(tài)模板來實現(xiàn)頁面視圖View中最小化的刷新,使節(jié)點隨著與之相關(guān)變量的改變而更新,由于在氣動數(shù)據(jù)綁定時,填充的數(shù)據(jù)量較大,對文檔對象模型(DOM,document object model)的操作頻繁,在保證系統(tǒng)性能的情況下,還需要考慮到數(shù)據(jù)篩選的效率。快速、準(zhǔn)確、完整地實現(xiàn)氣動數(shù)據(jù)分析相關(guān)參數(shù)的事件綁定,如可視化分析中x軸需要對馬赫數(shù)Ma、攻角α、側(cè)滑角β、測力點point等參數(shù)進(jìn)行DOM事件的綁定,預(yù)先的參數(shù)綁定操作不僅能夠縮短數(shù)據(jù)的動態(tài)篩選時間,還能過濾掉不需要的數(shù)據(jù)來提高分析及處理效率,以此來實現(xiàn)數(shù)據(jù)的局部更新只需要更新相關(guān)DOM就能將DOM節(jié)點和對應(yīng)的數(shù)據(jù)進(jìn)行映射處理,核心代碼如下所示:

圖4 可視化分析整體UI布局界面
function Directive(name, el, vm, expression) {
this.name = name; // 定義指令的名稱
this.els = els; // 定義指令對應(yīng)的DOM元素,對應(yīng)數(shù)據(jù)集中的參數(shù)
this.vm = vm; // 定義指令所屬的實例
this.expression = expression; // 定義指令的表達(dá)式
this.attr = 'nodeValue'; //代表對應(yīng)樹節(jié)點的值
this.dir_bind();//調(diào)用數(shù)據(jù)動態(tài)綁定函數(shù),使數(shù)據(jù)集與相關(guān)參數(shù)進(jìn)行綁定
}
//指令綁定函數(shù)
Directive.prototype.dir_bind = function () {
if(!this.expression) return;
//根據(jù)指令表達(dá)式實行實例化過程,并且在執(zhí)行該指令對應(yīng)的update函數(shù)
this.dir_instantiate = new Instantiate(
this.vm,
this.expression,
this.dir_update, // 回調(diào)函數(shù),進(jìn)行DOM的更新操作
);
this.update();
};
// 指令更新函數(shù),當(dāng)數(shù)據(jù)發(fā)生改變時,執(zhí)行該方法來更新樹節(jié)點的值
Directive.prototype.dir_update = function () {
this.update();
console.log('update'+{this.expression});
};
本系統(tǒng)同時適配氣動力、熱、壓的可視化分析,根據(jù)需求形成動態(tài)通用的交互與可視化呈現(xiàn)的UI組件,通過對UI組件的設(shè)定進(jìn)行數(shù)據(jù)提取,以此建立氣動數(shù)據(jù)多維可視化分析系統(tǒng),通過不同參數(shù)的選取及條件值設(shè)置來輔助研究人員對氣動數(shù)據(jù)的分析和處理。
利用UI組件對數(shù)據(jù)進(jìn)行提取主要包括3個步驟:1)在選中了數(shù)據(jù)類型后,系統(tǒng)已經(jīng)根據(jù)氣動數(shù)據(jù)類型進(jìn)行了初步篩選,將與之無關(guān)的數(shù)據(jù)采取過濾操作;2)選擇數(shù)據(jù)集是對是進(jìn)行二次篩選,即將需要分析的數(shù)據(jù)集保留;3)參數(shù)設(shè)置與條件過濾設(shè)置均是根據(jù)篩選出的數(shù)據(jù)集信息動態(tài)展示數(shù)據(jù)集中含有的相關(guān)參數(shù),與之無關(guān)的參數(shù)則被隱藏,以此減少研究人員人工篩選的工作量。系統(tǒng)未進(jìn)行數(shù)據(jù)動態(tài)篩選操作的參數(shù)設(shè)置如圖5所示。

圖5 數(shù)據(jù)分析動態(tài)UI組件參數(shù)設(shè)置(部分內(nèi)容)
1)氣動力數(shù)據(jù)通過數(shù)據(jù)的動態(tài)篩選機(jī)制后自動適配出與之對應(yīng)的UI界面如圖6所示。

圖6 氣動力數(shù)據(jù)動態(tài)篩選參數(shù)設(shè)置(部分內(nèi)容)
2)氣動熱數(shù)據(jù)通過數(shù)據(jù)的動態(tài)篩選機(jī)制后自動適配出與之對應(yīng)的UI界面如圖7所示。

圖7 氣動熱數(shù)據(jù)動態(tài)篩選參數(shù)設(shè)置(部分內(nèi)容)
3)氣動壓數(shù)據(jù)通過數(shù)據(jù)的動態(tài)篩選機(jī)制后自動適配出與之對應(yīng)的UI界面如圖8所示。

圖8 氣動壓數(shù)據(jù)動態(tài)篩選參數(shù)設(shè)置(部分內(nèi)容)
所有實驗均在普通PC上進(jìn)行,硬件環(huán)境:處理器為Intel(R) Core(TM) i5-3230M@2.6 GHz,內(nèi)存為8 G。軟件環(huán)境:Windows 10 專業(yè)版,IntelliJ IDEA 2019。
本文選取的實驗數(shù)據(jù)來自于李素循書中[10]及UIUC數(shù)據(jù)庫[11]關(guān)于氣動數(shù)據(jù)分析的數(shù)據(jù)集。這些數(shù)據(jù)集提供了氣動力、熱、壓的樣本數(shù)據(jù),共計1 835條。這些數(shù)據(jù)集涉及到3種類型的氣動數(shù)據(jù),使得進(jìn)行氣動數(shù)據(jù)可視化分析時刻畫的數(shù)據(jù)軌跡更加豐富,能更加容易的得到可視化分析結(jié)果。具體數(shù)據(jù)集分布情況如表1所示。

表1 實驗數(shù)據(jù)集
1)對于氣動力數(shù)據(jù)的可視化分析:動態(tài)選定在不同馬赫數(shù)的情況下升力系數(shù)CL隨著攻角的變化趨勢(X軸設(shè)定為攻角,Y軸設(shè)定為升力系數(shù)CL取值),分析結(jié)果如圖9所示。

圖9 氣動力數(shù)據(jù)分析結(jié)果
圖9展示了一定的攻角范圍內(nèi),即α[-5°, 25°],在側(cè)滑角與滾轉(zhuǎn)角的實驗條件下,不同升力系數(shù)隨著攻角的變化。在攻角小于0°時,所有馬赫數(shù)下的升力系數(shù)都為負(fù)數(shù)。在攻角為0°時,所有馬赫數(shù)下的升力系數(shù)都接近于0。當(dāng)攻角大于10°時,隨著馬赫數(shù)的增大,升力CL系數(shù)的斜率趨于恒定。由圖可知?dú)鈩恿χ械纳ο禂?shù)CL在相同攻角條件下具有良好的一致性。升力系數(shù)CL在此數(shù)據(jù)集中當(dāng)攻角α=25°,馬赫數(shù)Ma=1.1時取得最大值,即CLmax=1.73。
2)對于氣動熱數(shù)據(jù)的可視化分析:動態(tài)設(shè)置參數(shù)篩選氣動熱數(shù)據(jù),分析其在不同攻角的情況下熱流q/qref隨著測力點的變化趨勢(X軸設(shè)定為測力點,Y軸設(shè)定為熱流q/qref取值),分析結(jié)果如圖10所示。

圖10 氣動熱數(shù)據(jù)分析結(jié)果
圖10展示了一定的測力點范圍內(nèi),即point[1,20],在馬赫數(shù)Ma=8.04,雷諾數(shù)Re=1.13×107的流場條件下,不同熱流隨著測力點的變化。由圖可知?dú)鈩訜崃鞣植家?guī)律在相同攻角條件下具有良好的一致性。q/qref在此數(shù)據(jù)集中當(dāng)攻角α=-5°,測力點為point1時取得最大值,即q/qrefmax=0.896。
3)對于氣動壓數(shù)據(jù)的可視化分析:動態(tài)設(shè)置參數(shù)篩選氣動壓數(shù)據(jù),分析其在不同攻角的情況下壓力系數(shù)CP隨著測力點的變化趨勢(X軸設(shè)定為測力點,Y軸設(shè)定為壓力系數(shù)CP取值),分析結(jié)果如圖11所示。

圖11 氣動壓數(shù)據(jù)分析結(jié)果
圖11展示了一定的測力點范圍內(nèi),即point[1,20],在馬赫數(shù)Ma=7.79,雷諾數(shù)Re=1.04×107的情況下,不同壓力系數(shù)CP隨著測力點的變化。有圖可知?dú)鈩訅悍植家?guī)律在氣流與模型的夾角α相同的條件下具有良好的一致性。壓力系數(shù)CP在此數(shù)據(jù)集中當(dāng)α=0°,測力點為point1時取得最大值,即CPmax=1.82。
通過本系統(tǒng)生成的可視化結(jié)果,可以根據(jù)研究人員的需求查看單條數(shù)據(jù)或?qū)Ρ榷鄺l數(shù)據(jù)的變化趨勢,系統(tǒng)通過動態(tài)UI組件篩選數(shù)據(jù)的機(jī)制對多類型的氣動數(shù)據(jù)進(jìn)行實時的可視化分析和處理,對于空氣動力學(xué)的研究有一定的應(yīng)用價值,可以為相關(guān)的研究人員提供分析和決策支持,對飛行器空氣動力模型的建立具有重要的指導(dǎo)意義。
本文針對傳統(tǒng)氣動數(shù)據(jù)分析方法存在的問題,利用MVVM模式的動態(tài)模板和ECharts可視化庫在瀏覽器端構(gòu)建了動態(tài)的可視化UI組件,通過氣動數(shù)據(jù)類型選擇、數(shù)據(jù)集選擇、參數(shù)設(shè)置和過濾條件設(shè)置實現(xiàn)了多類型氣動數(shù)據(jù)的實時篩選及可視化,最后在此基礎(chǔ)上構(gòu)建了集氣動力、熱、壓三大氣動數(shù)據(jù)類型為一體的氣動數(shù)據(jù)可視化分析平臺。驗證結(jié)果表明,提出的可視化方法可以在瀏覽器端模擬氣動數(shù)據(jù)的變化過程,并利用ECharts技術(shù)良好的兼容性
在多種瀏覽器上取得良好的可視化效果和用戶體驗,提出的方法在跨平臺、免插件、界面友好等方面較傳統(tǒng)的氣動數(shù)據(jù)可視化工具具有明顯的優(yōu)勢。研究人員僅需要設(shè)置可視化所需的參數(shù)條件就可在瀏覽器端實現(xiàn)多類型氣動數(shù)據(jù)的可視化繪制,具有靈活、低耗、快速的優(yōu)點。結(jié)合ECharts豐富的人機(jī)交互功能,可以直觀的反映單條數(shù)據(jù)或多條數(shù)據(jù)的演變趨勢,提出的可視化方法具有通用性,可以廣泛的應(yīng)用到各類型氣動數(shù)據(jù)的實時更新和篩選中,實現(xiàn)互聯(lián)網(wǎng)環(huán)境下氣動數(shù)據(jù)的實時分析,以此滿足氣動研究人員的需求。
在后續(xù)的研究中,還可將動態(tài)的可視化UI組件用于多類型氣動數(shù)據(jù)的多維度分析中。氣動數(shù)據(jù)的分析在飛機(jī)空氣動力學(xué)仿真及建模上的應(yīng)用有著重要的意義,值得進(jìn)一步深入研究。