王曉輝, 許向彥, 聶小華, 常亮
(中國飛機強度研究所強度與結構完整性全國重點實驗室, 西安 710065)
飛機結構靜強度虛擬試驗作為飛機物理試驗的主要輔助手段之一,在預試及正式試驗階段,通過綜合利用虛擬試驗與物理試驗結果數據,可實現對試驗的實時監控與預警,并將試驗狀態和響應進行高逼真虛擬顯示,可為試驗指揮決策提供技術支撐,從而降低試驗風險。伴隨著數字化技術驅動和計算機信息技術的變革,計算機輔助設計(computer aided design,CAD)、計算機輔助工程(computer aided engineering,CAE)、計算機輔助制造(computer aided manufacturing,CAM)技術的迅猛發展正在改變著傳統的飛機設計流程[1],虛擬試驗技術呈現出智能化、自動化和融合化的發展趨勢。其中將CAE/CAD技術深度融合到虛擬試驗流程和虛擬顯示業務中已成為目前工程應用中最為廣泛的技術實踐之一。
在國外,虛擬試驗技術的研究主要集中在高等院校、研究院所及商業公司。比如Nelson等[2]針對三維模型精確顯示和動態高效交互的需求,研發了統一架構的ElVis系統,但主要還是應用于仿真分析領域,再就是基于專業的可視化軟件,如美國的VCollab[3]、TecPlot[4]和ParaView[5]等軟件,通過二次開發支撐大規模仿真數據的可視化,但是無法支撐以模型數據為中心的全自主虛擬試驗流程和可視化分析過程,同時專業性較強,學習維護成本較高。在國內,目前對該領域的研究還處于初步探索階段,主要包含基于商軟二次開發形成工具及基礎技術研究兩個方面。如基于CAD軟件二次開發實現的機體結構虛擬裝配系統[6-7],具備虛擬試驗環境建模能力,可模擬試驗加載過程;基于CAE圖形可視化技術可實現物理試驗結果可視化[8],完成試驗結果數據分析和評定,為物理試驗過程提供技術參考,如溫俊杰等[9]將CAE可視化技術應用到了聲場分析系統中,有效提高了聲像陣列空間關系標定的效率;楊昆等[10]將有限元可視化方法應用到了湖泊表面水溫的預測分析中,提高了水溫測算分析方法的可視化水平;聶小華等[11]將CAE可視化分析技術用于車門密封性分析過程,提高了裝備仿真建模分析效率,擴大了傳統CAE技術的應用范圍。目前以上工程應用大多通過商業軟件或開源軟件進行實現,如CATIA、EnSight和TecPlot等,但由于其軟件實現方法和代碼封閉或者專業跨度大,不能適應國內虛擬顯示的多樣化的特殊功能需求,同時針對飛機結構高精度虛擬顯示而言,其可視化顯示效率還有改進的余地。
中國飛機強度研究所作為國內航空領域的強度鑒定專業院所,近年來開展了可支撐飛機結構物理試驗的虛擬顯示關鍵技術研究,充分利用自主設計的相關CAE圖形可視化算法及先進的數據處理算法,基于自主CAE圖形引擎SABRE.visual[12]實現了飛機結構靜強度試驗虛擬顯示軟件的研發,并在試驗現場進行了應用,效果顯著。鑒于此,現針對該軟件的研發,主要討論其中涉及的CAE圖形可視化共性關鍵技術,包含基于Qt多線程的試驗數據監控處理技術、基于三角形區域填充的三維云圖快速繪制技術和基于三維模型的圖形繪制及標注技術等。
試驗虛擬顯示軟件主要功能是完成對試驗實時采集數據的監控和三維顯示,為飛機結構靜強度試驗提供可視化分析手段,其中主要包含試驗應變三維云圖實時監控顯示、虛擬應變片快速定位和用戶界面三個功能模塊,邏輯框架如圖1所示。

圖1 飛機結構靜強度試驗虛擬顯示軟件功能框架
該軟件運行流程如圖2所示。首先采用Qt多線程技術實時監控試驗數據完成數據解析;其次通過線性數據插值獲取連續物理場分布;最后通過Qt信號槽機制驅動主線程,調用自主CAE圖形引擎的標量數據顯示接口完成三維云圖實時渲染顯示。以下針對其中的關鍵技術進行討論,主要包括試驗應變三維云圖實時監控顯示技術和試驗應變片快速定位及關聯顯示技術。

圖2 飛機結構靜強度試驗虛擬顯示業務流程
在飛機結構靜強度試驗虛擬顯示過程中,核心是要完成對試驗數據的實時監控采集、分析處理和圖形可視化,其關注的重要指標就是實時性和準確性。目前對于數據的實時監測通常采用計時器和多線程的方法,其中計時器的方法主要取決于工程經驗進行設置,存在數據監控漏項的風險,多線程方法屬于全程監控數據狀態,可保證數據監控完整性,如文獻[13]將多線程技術用于了網絡通信,解決了信號傳遞延時問題,文獻[14]將多線程技術用于云計算中的資源配置,解決了云計算資源實時調度和資源高效利用問題。為了實現試驗數據實時顯示和處理,采用Qt多線程技術編寫圖形應用程序,遵循“子線程處理復雜的邏輯程序,主程序實時顯示窗口內容”的原則,構建多任務并發的工作方式,提高應用程序的響應速度和工作效率[15-16]。其中在Qt中提供了與平臺無關的最重要的線程類即QThread類,該類提供了創建一個新線程以及控制線程運行的各種方法。其基本技術原理描述如下。
當調用一個QThread對象的start()方法時,會創建一個新的線程并執行它的run()方法。默認地,run()會調用exec()方法進入自己的消息循環中,如圖3所示。

圖3 基于多線程的事件循環默認處理機制
圖3中,主線程和工作線程都是執行事件循環。主線程的事件循環負責檢測QObject對象(thr、w、objs)是否有消息處理,有的話則調用對象的slot方法。可以使用QObject::moveToThread方法將某個對象轉移到其他線程中。程序實現代碼如下。
Class Worker:public QObject{
Q_OBJECT
…
}
Void someFunc()
{
QThread thr = new QThread;
Worker worker = new Worker;
worker->moveToThread(thr);
Thr->start();
如果在主線程上調用someFunc(),則Thread和Worker在創建后都是關聯在主線程上,當調用worker->moveToThread()后,worker對象可關聯到新的線程中執行相關事件,如圖4所示。

圖4 基于多線程的事件循環動態處理機制
基于以上Qt多線程實現原理,可以設計出試驗應變數據三維云圖顯示模塊的多線程應用程序結構,如圖5所示。其中窗口界面GUI線程是主線程,負責窗口事件處理,主要包含驅動軟件運行流程和數據顯示及對子線程進行控制,增開的子線程專門負責監控采集的試驗數據狀態,并完成復雜的數據邏輯操作,包含新數據解析和插值處理,待數據準備完畢即通過信號-槽機制關聯主線程完成數據顯示。

圖5 Qt多線程應用程序結構
對于數據可視化,目前主流的包含基于VTK和Qt的混合編程實現的輕量化顯示引擎[17],也包含基于商業可視化系統進行二次開發。主要基于自主可視化引擎SABRE.Visual通過接口封裝,形成標量數據的可視化接口,完成應變數據的三維云圖繪制。其中提供了基于三角形的區域填充法[18]。首先,建立離散的物理場量值與顏色的映射關系,如圖6所示。

Vmin表示物理場量最小值,用藍色表示;Vmax表示物理場量最大值,用紅色表示;Vmid表示物理場量中間值,用綠色表示
其中單元內部整個區間(Vmin,Vmax)內的值都是采用Lagrange線性插值獲得對應的顏色。簡要的操作流程如圖7所示,首先確定繪制的變量是否為節點變量,如果為單元變量則還需要轉化類型;然后按照一定規律確定色譜,根據變量相對值選定顏色數值;最后通過OpenGL繪圖命令對模型進行著色、融合和反走樣處理,完成云圖繪制。

圖7 彩色云圖繪制流程
用戶控制界面相當于模塊的啟動程序,同時也是軟件模塊的客戶端控制臺。如圖8所示是試驗應變三維云圖實時顯示子模塊的客戶端控制界面,主要采用基于Qt的圖形界面設計方法[19-20],通過在SABRE.visual開發形成試驗應變三維云圖實時顯示模塊用戶界面,包含視圖控制、輸入參數、數據加載狀態信息和顯示設置等,并且支持分鏡頭顯示。

圖8 試驗應變三維云圖實時顯示模塊用戶界面
其中在多線程應用程序設計中,采用Qt自帶的信號-槽的方式進行線程通信。通過在主線程重定義slot函數,在子線程中定義signal函數,通過connect函數實現信號與槽之間的通信,從而實現主線程與子線程之間的數據通信[20]。采用多線程可以提高程序的響應速度,在Qt應用程序中使用多線程只需子類化Qthread并且重新實現它的run()函數即可。
在分鏡頭顯示操作中,關鍵是要保證顯示數據模型的一致性和操作通信的同步性。在此首先需要定義共用的有限元模型數據modelData,作為分鏡頭初始化基礎數據,再按照指定結構進行數據篩選,完成特定結構的顯示;其次,分鏡頭同步操作需要指定主鏡頭mainView和副鏡頭secViewi,通過主鏡頭和程序主窗口進行鼠標操作通信mouseEvent,由主窗口向所有鏡頭發送操作信號Signal,同步完成操作響應。具體原理如圖9所示。

圖9 分鏡頭數據傳遞及同步操作響應原理
基于以上算法原理,采用C++和Qt混合編程實現試驗應變三維云圖顯示模塊,并在自主CAE圖形引擎SABRE.visual上實現模塊集成,最終效果如圖10所示,可支持試驗數據加載和實時顯示,數據回放,同時通過分鏡頭操作可以關注局部結構受力情況,輔助試驗分析過程。

圖10 試驗應變三維云圖實時顯示模塊界面
試驗應變片快速定位及關聯顯示子模塊主要功能是結合試驗數據監控過程,對其中存在的壞片和所關注的應變片的位置信息進行實時快速的定位和關聯顯示,為試驗人員查看數據,分析試驗過程提供支持。鑒于該模塊中對試驗數據的監控技術原理與2.1節所述類似,以下主要針對基于三維模型的應變特征點圖形繪制技術及應用效果進行闡述。
一般試驗任務書提出的試驗應變片數據信息文件格式如圖11所示。通過采用Qt多線程技術實時監控應變測量數據狀態,如有新數據即進行數據解析重構,按照有限元節點Grid數據結構重構試驗應變片數據模板flimPosDataMap,作為特征點圖形繪制的輸入。

圖11 試驗應變片數據格式及數據結構
應變片特征點數據繪制接口可基于自主CAE圖形引擎中的標準接口完成二次封裝,程序邏輯如下。
//創建應變特征點底層數據
QMap
if (flimPosDataMap.size())
{
while (pIt != flimPosDataMap.end())
{
int cNodeID = pIt.key();
GRID fData = pIt.value();
float xyz[3];
xyz[0]= fData.x[0];
xyz[1]= fData.x[1];
xyz[2]= fData.x[2];
createNode(cNodeID, xyz);.//接口
++pIt;
}
}
//繪制應變特征點標注
GlDrawer m_glDrawer; //標準繪制接口類
m_glDrawer.drawLocalFlimNodeLabel();//重寫特征點繪制接口函數
MarkupNode *pMarkup = new MarkupNode; //定義標注類
pMarkup->setFont(…); //設置標注字體
pMarkup->setNode(NID); //設置標注關聯的特征點
pMarkup->updateFlimNodeValue(m_localFlimNodeInfos);//添加標注信息
drawMarkup(pMarkup); //繪制標注
基于以上算法原理和基于Qt的軟件模塊用戶控制界面設計方法,最終實現的軟件模塊界面如 圖12 所示。當點擊控制界面開始監控的按鈕時,即可激活監控線程監測應變片關聯文件狀態,并實時讀取數據內容,通過信號槽機制驅動主線程實時繪制應變特征點和標注信息。整個過程可實時在三維模型上通過高亮顯示所關注的應變片特征點位置,并通過標注信息顯示具體數據信息和周圍關聯的應變片,為試驗分析人員提供直觀體驗。

圖12 應變片快速定位及關聯顯示子模塊界面
結合航空結構試驗需求,對以上實現的軟件模塊進行了測試應用驗證,主要針對航空典型結構物理試驗過程,基于有限元模型進行了試驗應變數據的實時監控和云圖顯示,測試結果如表1所示,可以滿足物理試驗加載過程中間隔在5 s以內的實時性要求。

表1 典型結構試驗應變實時監控顯示實時性測試數據
如圖13和圖14所示為某航空型號靜強度虛擬試驗中的應用效果。其中圖13為某飛機發動機虛擬試驗中的應變數據三維云圖實時監控與顯示效果,可以看出本文方法能夠實現離散試驗應變數據的三維云圖均布顯示,且三維云圖顯示連續性好,并支持數據回放,從而為強度虛擬試驗提供了三維可視化分析新手段,解決了實際工程問題。

圖14 某航空型號虛擬試驗工程應用(試驗應變片快速定位)
如圖14所示為某全機虛擬試驗過程中的應變片關聯顯示應用效果,可以看出該模塊支持實時在三維模型上通過高亮顯示所關注的應變片特征點位置,并通過標注信息顯示具體數據信息和周圍關聯的應變片,為試驗分析人員提供直觀體驗。
基于飛機結構靜強度虛擬試驗過程對于圖形可視化的需求,中國飛機強度研究所基于自主CAE圖形引擎SABRR.visual,自主突破了可支持“虛擬顯示模塊”研發的相關圖形可視化關鍵技術,包含提出了基于Qt多線程的強度試驗數據實時監控處理技術、試驗應變片快速定位及關聯顯示技術、基于三角形區域填充的三維云圖快速繪制技術和支持分鏡頭同步操作顯示的用戶界面設計技術等。通過這些關鍵技術的突破和系統整合,不僅成功實現了“虛擬顯示系統”的基本功能要求,而且在航空型號試驗中進行了現場應用,實現了CAE技術與工程應用的良好結合,創新了虛實融合的試驗新模式,也為未來多專業強度試驗虛擬顯示和評定提供了技術借鑒。