MATLAB GUI在水力计算中的应用

2015-04-20 06:25吕良军郝振莉
黄河水利职业技术学院学报 2015年3期
关键词:明渠控件水深

吕良军,郝振莉

MATLAB GUI在水力计算中的应用

吕良军,郝振莉

(黄河水利职业技术学院,河南 开封 475004)

以MATLAB软件为设计平台,进行流态可视化操作界面的功能设计、控件选择和边界布局,通过梯形明渠求解正常水深的案例,阐述以GUI为人机交互界面,方便地解决各种复杂的水力计算问题。

MATLAB GUI;可视化设计;梯形明渠;水力计算;数值分析

0 引言

水力计算内容涵盖了管道、明渠、堰闸、水坝、渗流等诸多工程领域的计算问题,其中涉及许多笔算难以解决的问题。如,求解明渠临界水深与正常水深,若用Microsoft Excel进行计算,简单快捷,但缺乏数据可视化[1]。MATLAB软件是目前常用的工程软件,它集数值计算、矩阵计算和图形绘制等功能于一体,广泛应用于各种数学及工程计算中。将MATLAB数值计算方法与水力计算相结合,可以大大缩短计算时间,提高计算精度和工作效率。MATLAB图形用户界面(Graphical User Interface,简称GUI)平台实现了人机交互,不但使计算更加简捷明了,而且其执行动作和变化能满足用户的需求[2]。文献[3]给出用MATLAB数值计算求解明渠临界水深的方法,但它只能在命令窗口中运行,不方便工程人员使用。

图形用户界面是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。MATLAB GUI开发环境提供了一套可视化的创建图形窗口的工具,方便用户在此环境下开发界面并快捷地创建GUI应用程序,它可以根据用户设计的GUI布局,自动生成M文件的框架,供用户编制应用程序。笔者探讨了MATLAB GUI在水力计算中的应用。

1 GUI设计的原则和步骤[4]

1.1 GUI设计的原则

在设计GUI时,应遵守简单性、一致性及习常性的原则。设计界面时,应力求简洁、直接、清晰地体现出界面的功能和特征,并尽量使风格一致。此外,还应使用人们所熟悉的标志与符号。

1.2 GUI设计的步骤

(1)明确设计任务,构思草图。在命令窗口直接输入命令GUIDE。在创建新的GUI时,MATLAB提供空白模板、带有控制按钮模板、带有坐标轴和菜单模板、问答式对话框模板4种模板。

(2)设计界面,添加控件和设置属性。控件的标识(Tag)是对于各控件的识别。每个控件创建时,都会由开发环境自动产生一个标识。在程序设计中,为了编辑、记忆和维护的方便,一般为控件设置一个新的标识。

(3)编写代码,实现控件的交互作用。GUI图形界面的功能要通过一定的设计思路和计算方法,由特定的程序来实现。为了实现程序的功能,还需要在运行程序前编写一些代码,完成程序中变量的赋值、输入、输出、计算及绘图等工作。

2 GUI在渠道水力计算中的应用

2.1 已知条件[5]

如图1所示,一梯形断面渠道,已知流量Q=450 m3/s,边坡系数m=1,渠道糙率n=0.025,渠道的底宽b=45m,底坡i=0.32/1 000,求正常水深h0。

图1 梯形明渠断面图Fig.1 Trapezoidal open channel cross-section

式中:i为明渠底坡;n为明渠糙率;A为过水断面面积;R为水力半径;R=A/χ,χ为湿周。

明渠均匀流流量Q的计算公式为。所以,公式(1)可变为

此时,解得f(h)的水深便为正常水深h0。

2.2 用GUI实现计算

2.2.1 创建M函数文件

将式(2)和式(4)编写成如下M函数文件,并保存在matlab的work文件夹中,备用。

2.2.2 布置控件

构思草图,形成框架,在布局编辑器中布置控件。使用几何位置排列工具对控件的位置进行调整。建立3个坐标轴对象,分别用于显示梯形水渠、公式、水量与水深函数图像。建立3个按钮,用来绘图、

式(2)可变形为

当其他条件已知,只有水深未知时,式(3)左端只是水深的函数。于是,可令求解和结束程序。建立8个静态文本标签,显示相应控件的提示和计算结果。5个可编辑文本框,用来输入参数值。界面设计布局如图2所示。

图2 计算界面设计布局图Fig.2 Calculation interface design layout

2.2.3 设置控件的相关属性

控件的标识Tag是对各控件的识别。每个控件创建时,都会由开发环境自动产生一个标识。在程序设计中,为了编辑、记忆和维护的方便,一般为控件设置新的标识。

本文设置 3个按钮的 Tag标识分别为:solve_puhbtton、huitu_puhbtton、close_puhbtton;设置5个可编辑文本框的Tag标识分别为:b_edit、m_edit、n_edit、i_edit、Q_edit。用来显示计算水深结果的静态文本标签Tag标识为:h0_text。另外,建立一级菜单file,在其下设置solve、huitu和close 3个子菜单项。

2.2.4 编写代码,实现控件的交互作用

编写代码,完成程序中变量的赋值、输入、输出及绘图等工作。在程序初始化的时候,显示梯形水渠、公式、水量与水深函数图像,输入默认数值,代码如下:

plot([h2 h2],[0 Q2],'r-*');%%%验证计算结果

xlabel('正常水深');ylabel('水流量')

legend('Q=f(h)',4);hold off

按钮close_pushbutton调用close函数关闭结束程序。

2.2.5 运行调试程序

单击“solve”和“绘图”按钮后,运行结果如图3所示。图3中,求得水深h0=4.8863m。该结果在流量与水深函数图中得到验证。

图3 梯形断面正常水深计算图Fig.3 Normal water depth calculation of trapezoidal cross-section

在整个GUI界面中,有图、公式、各参数值,实现了数据的可视化。每次只需在相应的编辑文本框中输入对应数值,单击solve和绘图按钮,就可实现求解。如在文献[5]中,梯形渠道的底宽b=7m,边坡系数m=1.5,底坡i=0.0003,渠道糙率n=0.025,渠道流量Q=9.68m3/s,计算正常水深h0。此时,只需在相应的编辑文本框中输入对应数值,单击solve和绘图按钮,就可实现如图4所示的结果 (求得水深h0=1.4441m)。

又如,在计算河道过水断面面积计算中,只需在离左岸距离,水深,内插点数编辑框中输入实测数据和计算精度要求后,点击计算按钮,就能求得结果S=22.1044m2,并给出如图5所示的示意图。

4 结语

本文以在MATLAB环境中如何实现数值计算方法为主线,以水力经典案例为驱动,解决水力计算问题。通过一个具体案例研究GUI系统的可视化操作界面的结构设计、功能设计以及控件的选择和布局、控件功能的实现。

以MATLAB为自由工作平台,以GUI为人机交互界面,笔者坚信,通过大家的共同努力,建立完整的数值计算方法知识系统,必然可以更多地解决各种复杂的水力计算问题。由于数值计算方法的通用性,最终可具备解决诸多领域工程计算的能力。

图4 梯形断面明渠正常水深计算图Fig.4 Normal water depth calculation of trapezoidal open channel cross-section

[1]张宇华.M icrosoft Excel在水力计算中的应用[J].黄河水利职业技术学院学报,2009(10):16-18.

[2]吕良军,杨盛用.Matlab在大学物理中应用的几个实例[J].中国科技信息,2008(19):250-251.

图5 河道过水断面面积计算Fig.5 River way discharge section area calculation

[3]霍倩.Matlab数值计算方法及其在水力计算中的应用[M].北京:中国建筑工业出版社,2013:90-99.

[4]陈垚光.精通MATLAB GUI设计[M].北京:电子工业出版社,2011.100-105.

[5]罗全胜,王勤香.水力分析与计算[M].郑州:黄河水利出版社,2011:111-113.

[责任编辑 杨明庆]

TV131.4

B

1008-486X(2015)03-0047-04

2015-05-19

河南省科技发展计划基础与前沿研究项目(项目编号:132300410142河南科技厅);黄河水利职业技术学院科学技术项目水力学计算的MATLAB数学实验系统设计研究(2015KXJS011)。

吕良军(1969-),男,浙江宁波人,副教授,主要从事高校基础数学教学与研究工作。

猜你喜欢
明渠控件水深
书法静水深流
基于水深分段选择因子的多光谱影像反演水深
多波束海底地形水深注记抽稀软件对比
基于.net的用户定义验证控件的应用分析
导流明渠交通桥吊模施工技术应用
农田灌溉明渠水量计量方式分析
关于.net控件数组的探讨
北疆第四系覆盖层上明渠结构优化研究
GPS RTK技术在水深测量中的应用
论用明渠引水到水厂的安全