趙慧敏,束 兵
(1.安徽水利水電職業(yè)技術(shù)學(xué)院,安徽 合肥 230009;2.安徽省水利科學(xué)研究院,安徽 合肥 230009)
圓柱繞流存在于航空、土木、水利、海洋等眾多工程領(lǐng)域。因此,對圓柱繞流進(jìn)行深入研究,并且使用合適的方法控制其中的不利因素,減少繞流中的損失,具有很高的工程應(yīng)用價值。
本文利用VB和surfer軟件模擬均勻來流繞固定圓柱的流動生成矢量圖對圓柱繞流問題進(jìn)行可視化顯現(xiàn)及動態(tài)演示。Visual Basic(VB)是以時間驅(qū)動作為運(yùn)行機(jī)制的新一代可視化程序設(shè)計語言[1],具有強(qiáng)大的圖形用戶界面和編譯功能,它的可視化編程環(huán)境的所見即所得功能,使界面設(shè)計變得簡單直觀[2]。
聯(lián)系VB與Surfer的紐帶是ActiveX。ActiveX自動化(OLE自動化)協(xié)議是一種允許一個應(yīng)用程序(控制端)去控制另一個應(yīng)用程序(服務(wù)器端)的協(xié)議。Surfer軟件提供了ActiveX自動化對象,因而允許VB調(diào)用Surfer的每個功能[3]。
取得圓柱繞流數(shù)值模擬的數(shù)據(jù)后,編程按照Surfer要求的格式自動生成.xls(或.dat)數(shù)據(jù)文件,用VB編譯運(yùn)行環(huán)境啟動Surfer后臺服務(wù),讀取數(shù)據(jù)文件,制作數(shù)據(jù)可視化圖形,再將圖形輸出為一定的圖片格式,最后將圖片下載至應(yīng)用程序界面中相應(yīng)的PictureBox顯示區(qū)動態(tài)顯示。在VB 所生成的界面上點(diǎn)擊各種功能按鈕,不需再手工點(diǎn)擊Surfer 命令,就可完成數(shù)據(jù)網(wǎng)格化、圖形自動生成、圖形動態(tài)演示全部過程。
圖1:動態(tài)模擬工作流程圖
由于 Surfer 支持 ActiveX自動化服務(wù)器端協(xié)議,因而在 VB 應(yīng)用程序中創(chuàng)建了 Surfer的ActiveX對象后就可以使用這個對象所包含的各種方法和屬性來實(shí)現(xiàn)對 Surfer的調(diào)用[5]。在Windows注冊表中,Surfer的ActiveX對象名為
“Surfer.Application”。
Private Sub Command1_Click ()
i = InputBox("請輸入個數(shù)")
For i = 0 To i Step 5
TX (i) = i
'生成 Surfer模塊
Dim SurferApp As Object
SetSurferApp=CreateObject ("Surfer.Application")
SurferApp.Visible = true
'生成一個Surfer繪圖文檔,并指定其變量名為Doc
Dim doc As Object
Set doc = SurferApp.Documents.Add ()
'給變量Plot window指定一個新的繪圖窗口
Dim plotWindows As Object
Set plotWindows = doc.Windows (1)
'設(shè)置路徑
'用克立格法將資料內(nèi)插到格點(diǎn)上
'用.bln文件去掉邊界外的數(shù)據(jù)
retvalue = SurferApp.Gridblank(ingrid:=path +grid1, _
blankfile:=path+"白化文件.bln", outgrid:=path+ grid1)
retvalue = SurferApp.Gridblank(ingrid:=path +grid2, _
blankfile:=path+"白化文件.bln", outgrid:=path+ grid2)
'生成矢量圖,并指定其變量名為mapi
Dim mapi As Object
Set mapi = doc.Shapes.AddVectorMap (path +grid1, path + grid2)
'將矢量圖屬性指定給變量VectorMap
Dim VectorMap As Object
Set VectorMap = mapi.Overlays("Vectors")
'生成基面圖,并指定其變量名為map
Dim bmapi As Object
Set bmapi = doc.Shapes.Addbasemap(path + "圓BLN.bln")
'將等值線圖形屬性指定給變量basemap
Dim basemap As Object
Set basemap = bmapi.Overlays(1)
'將圖形合并
doc.Shapes.SelectAll
Set MapAll = doc.Selection.OverlayMaps
'輸出圖形文件
由于Surfer8.0本身的限制,生成的圖形并不能直接在Surfer8.0動態(tài)顯示,所以要先輸出為其它格式的圖片(例如.bmp),再用VB調(diào)用動態(tài)顯示。當(dāng)然,圖片格式也可以為其它格式,但需要對下列程序中的相應(yīng)部分稍作修改。在VB中新建一窗體Forml,
從中加人Picture和Timer控件,并設(shè)立Picture 1-Autosize-true。
在代碼窗口輸人如下程序代碼:
從研究結(jié)果來看,當(dāng)均勻來流遇到圓柱時,上下游流速分布的對稱性消失,繞圓柱附近流動的流體,在達(dá)到邊緣中心點(diǎn)之前離開圓柱,在圓柱體后面出現(xiàn)兩個附著渦,渦內(nèi)流體不斷循環(huán),圓柱兩側(cè)交替地發(fā)生旋渦發(fā)射,這種交替發(fā)生的旋渦,導(dǎo)致周期性橫向力的產(chǎn)生,迫使柱體振動,例如大氣繞過高煙囪和高塔設(shè)備流動時,就會使其發(fā)生振動,并有可能造成危險。本文利用 VB和surfer軟件實(shí)現(xiàn)了圓柱繞流問題的可視化及動態(tài)演示,為圓柱繞流問題的研究提供了更為直觀的理論支持,更有利于解決圓柱繞流問題對工程實(shí)際的不利影響。
[1]周靄如, 官士鴻.Visual Basic程序設(shè)計教程[M].北京:清華大學(xué)出版社, 2003.
[2]張樹兵, 戴紅, 陳哲.Visual Basic 6.0 中文版入門與提高[M].北京:清華大學(xué)出版社, 1999.
[3]尼建軍, 張學(xué)宏.Surfer7.0嵌入 VB 6.0編程實(shí)現(xiàn)水文數(shù)據(jù)快速可視化[J].海洋測繪, 2005(1):65-66.
[4]張麗莉, 吳健生, 劉波.地學(xué)三維曲面動態(tài)顯示軟件的設(shè)計與實(shí)現(xiàn)[J].計算機(jī)工程, 2003 (12):13-14.