秦緒佳,程宇軒,左少華,鄭紅波,張美玉
(浙江工業(yè)大學 計算機科學與技術學院,杭州 310023) E-mail:zhb@zjut.edu.cn
流場可視化是科學計算可視化領域的一個重要且最具挑戰(zhàn)性的研究熱點,涉及到對流場數(shù)據(jù)的轉換,繪制和操作,流場可視化領域應用范圍廣泛,因此受到廣泛關注.流場存在于我們現(xiàn)實生活中的任何地方,例如水流,氣流等物理現(xiàn)象,我們無法直接觀察流場的內部結構,因此需要借助科學的方法對流場進行特殊處理,通過可視化技術將其復雜的數(shù)據(jù)結構以一種簡潔直觀的方式展示,有效地獲得流場的內部規(guī)律,這就是流場可視化作為可視化研究中重要領域的意義.流場可視化在許多學科領域例如空氣動力學,流體力學,氣象學,海洋科學等有著重要的作用.
流線可視化方法是使用流線來表達流場中的信息,可以準確直觀地反映出流場的結構特征,被廣泛應用于許多工程領域.近些年來,隨著工程需求的不斷增強,許多研究人員對流線可視化方法進行了大量研究,并在實踐中取得了很大的進展與成果.Turk等[1]提出了一種基于圖像引導的流線放置方法,首先定義一個能量函數(shù),通過該函數(shù)對流線進行一系列操作,然后反復迭代直到能量函數(shù)收斂,就能的得到分布均勻的流線,但該方法計算時間過長,效率較低,產生的流線中也存在較多無效值的短流線.Jobard等[2]提出了一種均勻放置算法,該方法先隨機生成一條初始流線,并在流線周圍放置種子點,然后計算種子點到已生成的流線的歐氏距離,判斷歐氏距離是否大于所給定的距離閾值,若大于則是有效種子點,可以生成新流線,若小于則拋棄該種子點,流線停止生成,該方法在所有流線的生成過程中不斷地檢測并判斷已放置的流線之間的距離,使流線能均勻分布,但計算時間較長,運行速度較慢,之后作者對該方法進行了優(yōu)化,加快了運行速度并推向了非穩(wěn)定場[3].Mebarki等[4]提出了一種最遠種子點放置算法,該方法每次生成流線時選擇距離其他流線最遠的空白區(qū)域,結果是使得生成的流線較長,具有較好的連續(xù)性.Verma等[5]提出一種基于流引導的種子點放置算法,首先計算流場的特征點,然后選取適合的模板放置種子點,生成的流線能更好地表現(xiàn)流場的特征類型.Chen等[6]提出了一種相似度引導的流線放置方法,在計算流線及種子點之間的歐氏距離外又引入幾何體的相似性,通過結合這兩種方法度量不同流線間的相似度距離,能有效地判斷流場中冗余的流線并去除.郭雨蒙等[7]在Chen等提出的方法上增加了并行相似度引導的方法,提高了可視化效率.孔龍星等[8]提出了一種特征保持的視點相關三維矢量場流線簡化方法,通過對流線視覺效果進行度量,有效地簡化了流線集,保持了流場特征且具有較好的視覺效果.魯大營等[9]提出三維流場的流線提取算法,采用了迭代最鄰近點(ICP)和K均值聚類,有效地簡化了三維流場的流線.巴振宇等[10]提出一種基于特征信息種子點選取的多層次流線可視化,在計算信息熵時對流場進行區(qū)域劃分,加快了特征點的計算速度,并在放置種子點時選擇合適的特征模板.Han等[11]提出了一種基于深度學習的矢量場重構方法,通過跟蹤原始矢量場中每個時間步的流線,并輸入到兩階段矢量場重建方法中,有效地簡化了矢量場.高天成等[12]提出了一種基于CVT的動態(tài)流場可視化方法,通過繼承不同時間步的生成元提高了計算效率,同時引入短流線解決了流線相交的問題,提高了可視化效果.
本文主要采用了幾何可視化中基于流線的可視化方法來研究二維流場,傳統(tǒng)的二維流場可視化方法中使用固定間距放置流線,雖然能達到均勻布置流線的可視化效果,但卻依賴于固定間距的大小,間距過小會導致流線分布較密集,過大則容易丟失特征信息.本文提出了基于信息熵控制的流場動態(tài)間距流線放置算法,在傳統(tǒng)算法的基礎上引入信息熵來動態(tài)計算流線間隔,根據(jù)流場不同區(qū)域的不同特征合理布置種子點,通過該算法可以實現(xiàn)在流場的重要區(qū)域放置密集的流線,突出特征細節(jié),在其他非重要區(qū)域放置稀疏的流線,減少不必要的計算,提高可視化效率.
流線是速度矢量場的場線,流線上任意一點的速度矢量都與該流線相切,流線方程定義如公式(1)所示:
(1)
其中μ(τ)代表點的位置,ν(μ(τ))表示點μ(τ)在流線上的切線方向,τ可以表示時間、弧長等參數(shù),則流線的求解公式如公式(2)所示:
(2)
流線生成過程如圖1所示,使用公式(1)定義流線方程,通過公式(2)求解,最終生成流線圖.
圖1 流線生成示意圖Fig.1 Diagram of streamline generation
流場數(shù)據(jù)集中的數(shù)據(jù)通常是離散的,在沒有解析表達式的情況下不能直接通過積分來計算流線,一般采用離散數(shù)值積分方法使流線逐步生長.
常見的積分方法有一階歐拉法和四階龍格庫塔法,不同的方法生成的流線精度不同.其中歐拉法計算速度較快,但生成的流線精度較低;四階龍格庫塔計算量較大,速度較慢,但生成的流線精度較高.
歐拉方法計算公式如公式(3)所示,其中Δt是積分步長,pi是流線上當前點,pi+1是流線追蹤的下一點,ν(pi)是pi處的矢量值.
pi+1=pi+Δt×ν(pi)
(3)
四階龍格庫塔方法計算公式如公式(4)所示,公式中使用了k1-k4這4個采樣點來計算,因此生成的流線精度更高.
(4)
(5)
信息熵度量了一個系統(tǒng)的復雜程度,如果這個系統(tǒng)越混亂,它的復雜程度越高,不確定的信息也越多,信息熵就越大.反之這個系統(tǒng)越有序,復雜程度越低,不確定信息也越少,它的信息熵就越小.從香農計算公式可以看出,當變量x的每個可能值出現(xiàn)的概率p相等時,變量x的信息熵H(x)達到最大值,表示此時出現(xiàn)不同情況的種類最多,系統(tǒng)最復雜,不確定性最大.
通過引入信息熵可以量化流場中矢量信息變化的程度,研究者可以借此有效地確定流場中變化程度不同的區(qū)域.Xu[13]等人將信息論中的信息熵概念引入到流場可視化中,并提出了一種流場信息熵的定義與信息熵計算的理論框架.首先將二維流場中的矢量方向區(qū)間(0°,360°)劃分成n個同等大小的子區(qū)間,記為xi,i∈1,2,…,n,然后計算流場中每個矢量的方向,并根據(jù)計算后的方向將每個矢量放入對應的子區(qū)間中,通過統(tǒng)計每個子區(qū)間中矢量數(shù)量Si,i∈1,2,…,n,獲得一個矢量分布統(tǒng)計直方圖,則可以通過公式(6)計算每個子區(qū)間出現(xiàn)的概率pi,然后根據(jù)公式(5)可計算出流場的信息熵值,通過該值可以反映流場的穩(wěn)定程度.
(6)
迭代數(shù)據(jù)信息直到條件熵值收斂并迭代布置種子點,直到滿意的結果,這樣生成的流線具有較好的可視化效果,并且該框架能夠有效地可視化二維和三維流動數(shù)據(jù).Cheng等[14]在上述方法中加入了對流線的相似分組,優(yōu)化了遮擋問題.黃冬梅等[15]提出一種基于信息熵種子點選取的流線可視化方法,通過基于貪婪策略和蒙特卡洛的兩種種子點選取方法,優(yōu)化了流線生成的數(shù)量以及分布,解決了流線過多導致的遮擋與雜亂問題,具有良好的可視化效果與顯著的可用性.
牛嬋等[16]提出了一種基于局部最大熵值的特征點檢測方法,解決在提取數(shù)據(jù)時特征點被遺漏的問題,其次又提出了一種基于特征區(qū)域信息熵值變化規(guī)律的界定算法,提高流場特征信息提取的準確度.通過計算流場的信息熵可以對流場整體的穩(wěn)定程度進行量化度量,但為了突出流場中局部區(qū)域的變化程度,還需要將流場進行區(qū)域劃分,分別計算局部位置的熵值.在流場中取多個網(wǎng)格點,計算以其為中心的一個L×L鄰域的信息熵作為該點處的熵值,通過計算所有網(wǎng)格點的熵值,可以得到一個與原流場數(shù)據(jù)規(guī)模一樣的熵場數(shù)據(jù).
計算局部信息熵值需要給定鄰域范圍和區(qū)間數(shù)量.選定的鄰域范圍過小會導致該區(qū)域的穩(wěn)定程度較模糊,鄰域范圍過大會導致各區(qū)域相似度較高,網(wǎng)格點的熵值差距較小,計算量較大且影響計算結果的準確性.對于區(qū)間數(shù)量,選的過小導致計算結果不準確,相似度和偶然性較高,過多會增加熵場的計算量,使得效率下降.根據(jù)測試分析以及經(jīng)驗總結,最合適的鄰域范圍L為13,區(qū)間數(shù)量為60,詳細計算過程如下:
1)計算矢量方向角
獲取二維流場數(shù)據(jù)的u,v分量并使用公式(7)計算其方向角度dir.
(7)
2)建立概率統(tǒng)計模型
在流場中的局部鄰域建立統(tǒng)計模型,通過模型獲得概率密度函數(shù)計算該區(qū)域的信息熵.流場中矢量方向在(0°,360°)之間,將該范圍等分為60個區(qū)間,使用公式(8)計算dir所在區(qū)間I.
(8)
劃分完區(qū)間后需要根據(jù)每個區(qū)間內的矢量個數(shù)統(tǒng)計局部鄰域內的區(qū)間數(shù).設i為流場中的網(wǎng)格點,取以點i為中心的局部鄰域,根據(jù)統(tǒng)計直方圖獲取該鄰域中矢量數(shù)不為0的區(qū)間總數(shù),設為bin[i],i∈1,2,…,N,設bin[i][j],j∈1,2,…,bin[i]為統(tǒng)計直方圖中以點i為中心的局部鄰域范圍內第j個區(qū)間中的矢量個數(shù),sumBin[i]表示以網(wǎng)格點i為中心的局部鄰域中矢量個數(shù),這里取為13×13,通過公式(9)可以計算出以點i為中心的局部鄰域中第j個區(qū)間的概率pj.
(9)
3)計算局部熵值生成熵場
對每個網(wǎng)格點i通過上述方式計算概率pj,以此建立概率統(tǒng)計模型,則每個網(wǎng)格點所在的局部鄰域的信息熵可由公式(10)計算得出.
(10)
圖2是使用上述信息熵計算方法生成的熵場,并通過顏色映射直觀反映計算結果.圖2(a)、圖2(b)中左側為流場圖,右側為該流場數(shù)據(jù)生成的熵場圖,最右側為顏色映射條,越靠上的顏色代表的熵值越大,通過給不同熵值設定不同的顏色值來反映不同區(qū)域的熵值變化.通過對比可以看出在流場變化劇烈的區(qū)域熵值較大,如圖2中圓形框處的區(qū)域,對應顏色映射中頂端的顏色;變化平緩的區(qū)域熵值較小,如圖2中矩形框處的區(qū)域,對應顏色映射表中底端的顏色.
圖2 熵場顏色映射結果Fig.2 Color mapping result of information entropy field
在流場中生成過多的流線時,如果只是考慮到流線脫離網(wǎng)格邊界或速度減小到零就終止生長卻沒有對流線間的距離加以控制,其結果就是生成的流線相互之間較緊密,距離較小,視覺上表現(xiàn)得較擁擠.圖3是在無流線間距控制的情況下生成的流線效果,可以明顯地看到流線間距離較小,過于靠近,尤其是在流線的匯聚點,使得視覺效果較差.
為了解決流線過于密集的問題,很多的流場都采用基于歐式距離的流線間距控制來生成流線,將流線間距作為流線的終止判定條件之一.給定一個常量ds為流線間距,設p為當前流線生長過程中的下一個采樣點,計算p到其周圍某條已存在的流線的距離,因為流線是由一連串離散的采樣點組合而成,因此在計算距離時只需要計算p到流線上采樣點的距離,若p到其它流線上的某一采樣點距離小于ds,則認定當前正在生成的流線與已生成的流線間的距離過小,流線停止生長.
然而隨著流場中生成的流線越來越多,這種方法在計算距離時所選取的現(xiàn)存流線上的采樣點沒有受到約束,會產生大量不必要的計算比較,導致算法效率較低.因此,需要在流場區(qū)域建立一個橫豎間隔為ds的虛擬網(wǎng)格,將已生成的流線的采樣點存儲在相應的網(wǎng)格單元中,每次生成新流線的采樣點時,通過網(wǎng)格來建立約束條件.
如圖4所示,上方與下方的方塊點所在的線條為已生成完畢的流線,中間的圓點所在的線條為正在生長的新流線,線上有已生成的采樣點,圓點p為當前最新的采樣點,方塊點為已存在的流線上的采樣點,根據(jù)該區(qū)域建立的虛擬控制網(wǎng)格,在計算采樣點距離時,只需要對以p所在網(wǎng)格為中心,選取周圍8個網(wǎng)格中其它流線上的采樣點進行距離計算,若存在某一個采樣點與p的距離小于給定的最小間距,則流線停止生長.
圖3 無間距控制流線效果Fig.3 Streamlineeffectwithoutdistancecontrol圖4 距離控制網(wǎng)格Fig.4 Distancecontrolgrid圖5 間距控制流線效果Fig.5 Streamlineeffectwithdistancecontrol
圖5是采用了間距控制后流線放置的效果,與圖3進行對比,流線的種子點仍相同,并且可以明顯地看到原本流線過于密集的地方通過間距控制后,使得該處流線因距離較小而停止生長,優(yōu)化了流線的放置,在視覺上有較好的效果.
新生成的流線上的采樣點會通過流線間距控制算法計算與周圍已生成流線上的采樣點的距離,并與給定距離ds進行判斷,從而控制新采樣點的生成,達到流線均勻放置的效果.但存在的問題是,這種給定的流線間距離ds是固定的,流線分布的位置完全依賴于流線間距ds的大小,若給定的ds較小,就會導致流線數(shù)量過大,間距過小,分布過于密集,使得算法運算效率低下;若ds較大,則流線分布較稀疏,容易丟失流場中特征區(qū)域的細節(jié),難以表現(xiàn)流場的所有特征,因此這種使用固定間距來控制流線生成的方法并不具有良好的適應性.在前幾章中已經(jīng)詳細介紹了流場信息熵以及場熵如何計算,通過在流場中引入信息熵可以對流場穩(wěn)定程度進行量化度量,可以突出流場中的特征細節(jié).本文使用信息熵對流線的間距進行動態(tài)控制,通過計算每個區(qū)域的局部信息熵,并在計算流線間距時引入,使得流線間距不再是固定值而是根據(jù)流場特征進行動態(tài)調整,根據(jù)流場信息熵的計算,流場中非重要區(qū)域的信息熵值較小,則該區(qū)域計算后的流線間距較大,生成的流線較稀疏,流向較穩(wěn)定;流場中重要特征區(qū)域的信息熵值較大,則該區(qū)域計算后的流線間距較小,生成流線較密集,流場中不同區(qū)域的流線密度不一致能夠使得特征區(qū)域更加突出,在視覺上有更好的效果.
給定流線間距的最大值為dmax,最小值為dmin,在流場中建立大小為dmax×dmax的虛擬控制網(wǎng)格.在流線生成過程中,流線控制間距值ds根據(jù)采樣點所在區(qū)域的信息熵值來動態(tài)計算,計算如公式(11)所示.
(11)
其中emax為信息熵最大值,emin為信息熵最小值,ei為當前點信息熵值,完整的信息熵控制的動態(tài)間距流線放置算法如表1所示.
表1 信息熵控制的動態(tài)間距控制算法Table 1 Dynamic distance control algorithm based on information entropy
實驗結果生成的不同流線間距的流場效果對比如圖6所示.圖6(a)-圖6(d)是使用相同數(shù)據(jù)生成的流場,其中圖6(a)、圖6(b)、圖6(c)采用了固定間距的流線生成算法,給定的間距依次增大.分析圖6(a)和圖6(b),可以看出在間距較小時,生成的流線排列過于緊密,較混亂,視覺效果上較差;如圖6(c)所示,間距逐漸增大后,可視化效果上得到了優(yōu)化,但丟失了流線特征區(qū)域的細節(jié),如流場中的渦流與鞍點處.圖6(d)則是采用了本文基于信息熵的動態(tài)流線間距放置生成的效果圖,在優(yōu)化可視化效果的基礎上,保持了流場中的特征細節(jié)與變化規(guī)律.
圖6 不同流線間距的流場效果對比Fig.6 Comparison of flow field effects with different streamline spacing
詳細的流線放置效果對比如圖7所示,圖7(a)是采用傳統(tǒng)的固定流線間距生成的效果圖,圖7(b)是采用本文算法生成的效果圖,圖7(b)中給定的流線間距最大值與圖7(a)中的固定間距一致.圖中圓形框處為流場的特征區(qū)域,通過對比可以明顯地看出圖7(b)中該區(qū)域生成的流線間距小于圖7(a),流線密度高于圖7(a),矩形框處為平穩(wěn)區(qū)域,在該區(qū)域圖7(b)的流線密度與圖7(a)基本保持一致.
圖7 流線放置效果對比Fig.7 Comparison of streamline placement
綜合實驗結果分析,在使用傳統(tǒng)的固定間距算法生成流線時,給定的固定間距較大則容易丟失重要區(qū)域細節(jié),固定間距較小則流線密度較大導致計算效率較低且可視化效果較差,通過本文基于信息熵的動態(tài)間距控制可以合理分配區(qū)域流線密度,在提高了流線生成的速率的同時又保持了流場重要特征.
流場可視化是可視化領域的重要課題,合理地放置流線能突出流場的特征與全局規(guī)律,流場中流線的間距是影響流線放置效果的重要因素.本文研究了二維流場的流線放置算法,傳統(tǒng)的均勻放置算法采用的固定的流線間隔,生成的流線具有較好地均勻分布效果,但采用的固定間隔較小時流線整體密度大,算法耗時;采用的固定間隔較大時流線整體密度低,容易丟失流場中特征區(qū)域的重要信息.本文提出了基于信息熵控制的動態(tài)間距流線放置算法,在流線生成過程中引入信息熵來度量流場區(qū)域的穩(wěn)定程度,并以此為依據(jù)動態(tài)地控制流線間距,使得流線分布具有較好的自適應性,在變化劇烈的特征區(qū)域放置較多較密集的流線來完整地表達重要信息;在平穩(wěn)區(qū)域放置較少較稀疏的流線來提高可視化效率.