APP下载

圆柱绕流的动态模拟研究

2015-04-06赵慧敏

关键词:动态显示矢量图圆柱

赵慧敏,束 兵

(1.安徽水利水电职业技术学院,安徽 合肥 230009;2.安徽省水利科学研究院,安徽 合肥 230009)

圆柱绕流存在于航空、土木、水利、海洋等众多工程领域。因此,对圆柱绕流进行深入研究,并且使用合适的方法控制其中的不利因素,减少绕流中的损失,具有很高的工程应用价值。

本文利用VB和surfer软件模拟均匀来流绕固定圆柱的流动生成矢量图对圆柱绕流问题进行可视化显现及动态演示。Visual Basic(VB)是以时间驱动作为运行机制的新一代可视化程序设计语言[1],具有强大的图形用户界面和编译功能,它的可视化编程环境的所见即所得功能,使界面设计变得简单直观[2]。

1 基本原理

联系VB与Surfer的纽带是ActiveX。ActiveX自动化(OLE自动化)协议是一种允许一个应用程序(控制端)去控制另一个应用程序(服务器端)的协议。Surfer软件提供了ActiveX自动化对象,因而允许VB调用Surfer的每个功能[3]。

取得圆柱绕流数值模拟的数据后,编程按照Surfer要求的格式自动生成.xls(或.dat)数据文件,用VB编译运行环境启动Surfer后台服务,读取数据文件,制作数据可视化图形,再将图形输出为一定的图片格式,最后将图片下载至应用程序界面中相应的PictureBox显示区动态显示。在VB 所生成的界面上点击各种功能按钮,不需再手工点击Surfer 命令,就可完成数据网格化、图形自动生成、图形动态演示全部过程。

图1:动态模拟工作流程图

2 图形的自动生成和显示

由于 Surfer 支持 ActiveX自动化服务器端协议,因而在 VB 应用程序中创建了 Surfer的ActiveX对象后就可以使用这个对象所包含的各种方法和属性来实现对 Surfer的调用[5]。在Windows注册表中,Surfer的ActiveX对象名为

“Surfer.Application”。

Private Sub Command1_Click ()

i = InputBox("请输入个数")

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)

'设置路径

'用克立格法将资料内插到格点上

'用.bln文件去掉边界外的数据

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

'输出图形文件

3 调控Surfer动态演示图形

由于Surfer8.0本身的限制,生成的图形并不能直接在Surfer8.0动态显示,所以要先输出为其它格式的图片(例如.bmp),再用VB调用动态显示。当然,图片格式也可以为其它格式,但需要对下列程序中的相应部分稍作修改。在VB中新建一窗体Forml,

从中加人Picture和Timer控件,并设立Picture 1-Autosize-true。

在代码窗口输人如下程序代码:

4 结束语

从研究结果来看,当均匀来流遇到圆柱时,上下游流速分布的对称性消失,绕圆柱附近流动的流体,在达到边缘中心点之前离开圆柱,在圆柱体后面出现两个附着涡,涡内流体不断循环,圆柱两侧交替地发生旋涡发射,这种交替发生的旋涡,导致周期性横向力的产生,迫使柱体振动,例如大气绕过高烟囱和高塔设备流动时,就会使其发生振动,并有可能造成危险。本文利用 VB和surfer软件实现了圆柱绕流问题的可视化及动态演示,为圆柱绕流问题的研究提供了更为直观的理论支持,更有利于解决圆柱绕流问题对工程实际的不利影响。

[1]周霭如, 官士鸿.Visual Basic程序设计教程[M].北京:清华大学出版社, 2003.

[2]张树兵, 戴红, 陈哲.Visual Basic 6.0 中文版入门与提高[M].北京:清华大学出版社, 1999.

[3]尼建军, 张学宏.Surfer7.0嵌入 VB 6.0编程实现水文数据快速可视化[J].海洋测绘, 2005(1):65-66.

[4]张丽莉, 吴健生, 刘波.地学三维曲面动态显示软件的设计与实现[J].计算机工程, 2003 (12):13-14.

猜你喜欢

动态显示矢量图圆柱
Analysis of the line current differential protection considering inverter-interfaced generation station and countermeasures
圆柱的体积计算
“圆柱与圆锥”复习指导
单片机控制的四位数码管动态显示编程
利用矢量图对小物体从光滑斜面下滑运动探讨
基于单片机的LED大屏幕显示的设计
数码管动态显示Proteus 仿真失败分析
削法不同 体积有异
“摇摇棒”为大学生涯画个七彩圆*——”基于单片机的LED动态显示装置”的创作报告
圆柱壳的声辐射特性分析