摘要:本文探讨并建立了具有GUI的任意形状给水环状管网的可视化计算模型。在 平台下,将几何建模、矩阵生成、管网计算及结果分析一体化。利用可视化思想,使管网计算过程简化,提高了工作效率。
关键词:给水管网 平差算法 可视化 Matlab
引言
城市给水管网系统是保障工业生产和群众生活的重要体系之一。运用计算机及其应用软件来解决管网优化调度问题,提高管理效率,节约运行费用,是当前给水系统新理论、新技术发展研究的基本方向。国内外科研工作者已经做了大量工作并取得了相应的成果。但需要较多的经验,且操作上存在诸多不便。本文以为开发平台,采用面向对象的可视化编程技术建立城市给水管网计算模型。根据管网的结构参数(管网图形、管段直径和长度、阻力系数、节点流量等)计算出各管段流量和水头损失等。在此基础上,还可以得到各节点的水压以及水源点供水压力等参数,从而全面了解管网的工作状况,并对管网的优化调度,改建扩建,制订发展规模等提供科学依据。
1 管网平差算法优选及程序实现
为提高供水可靠性,城市给水管网通常建设为环状。环状管网的水力计算方法有很多种,常见的有求解环方程,求解节点方程,求解管段方程等。但计算过程都必须符合下面两个条件:
⑴节点流量必须平衡,即应满足连续性方程:
⑵闭合环路内水头损失必须平衡,即应满足能量方程:
式(1)和式(2)中,为衔接矩阵,为回路矩阵,为结点流量,为管段水头损失,为管段流量。环状网在初分流量时已经符合条件(1)的要求,但在确定管径并计算得到管段水头损失以后,往往不能同时满足(1)、(2)的要求。因此,环状网水力计算过程就是在已定管径的基础上,重新分配管段流量,不断计算,不断调整,直至符合上述水力条件为止。
目前已有的各种软件包各具特色,但基本算法都是对连续性方程、能量方程和管段压降方程的求解。一般的,计算机求解时都采用解节点方程的方法,其优点是输入数据少,大部分工作如拟定管段初始流量,生成衔接矩阵和系数矩阵等都由计算机自动完成。但存在节点数大,方程数多,系数矩阵很大,求解算法较复杂等缺点。通过对比发现,解环方程编程效率高于解节点方程。因为环数远小于节点数,环方程数少于节点方程数,系数矩阵大大缩小,迭代次数也减少,很大程度上提高了计算机计算速度并能节省存储空间。只要在编程过程中,根据已知条件,解决好自动拟定管段初始流量,自动生成系数矩阵等问题,该法就完全具备了解节点方程法的优点。所以本可视化模型以解环方程法为基础。
环状管网的解环方程方法常用的是hardy-cross法(平差法)。其基本思路是在管网计算时,各管段初始流量分配后,求出管段水头损失。如每环各管段水头损失和(闭合差)不为零,则对该环各管段引入校正流量,两环的公共管段须同时计及两环的校正流量。然后按Q的算各管段水头损失,重复计算直到各环闭合差接近零为止,其流程图见 图1。
显然,hardy-cross法的效率很大程度取决于方程式(1)和(2)中的衔接矩阵的构建方法以及各管段流量的初值给定方法。另外,管网的结构图的建立和各管段的计算所需信息的输入方式也会影响计算效率。为此,本文采用Matlab作为开发平台,在可视化操作环境下,以图形的形式建网结构图,并输入节点和管段的各种信息。在此基础上,由计算机根据管网的几何形状,自动生成衔接矩阵并赋予管段初始流量。初始流量分配不当将增加迭代次数,甚至可能导致计算不收敛。因此,合理分配初始流量是很重要的。根据几何关系,环状管网中的管段数P,节点数J和环数L存在如下关系:P=J L-1,而连续性方程(1)的独立方程只有J-1个,显然运用连续性线性方程解管段流量时将有无数组解,要求唯一解将要补充其他方程,增加了编程的工作量。本文以 Matlab中特有的PINV函数找出一组恰当的解作为初分流量,较好地解决了这一问题。多次实践证明,运用该法计算得到的结果与实际情况相当吻合。
在进行可视化操作绘制管网结构图的过程中,我们将管段图形概化为直线,沿线流量简化到节点,并且节点流量由用户自由输入。建立环路时规定用户按逆时针方向绘制管线直到闭合成环结束,根据各个环路的拓扑结构,构造管段的拓扑关系。完成所有环路的建立以后,计算机按已存储的节点与管段的图形学关系,即可直接建立回路矩阵和衔接矩阵。
2 软件开发平台及管网计算的可视化编程
是一个既可以进行分析计算,又能进行数据可视化的高效操作平台,可以方便的建立具有用户图形界面(GUI)的参数输入、数值计算、结果分析调整一体化的仿真环境。利用其专业的绘图工具,快速的建网模型并得到所期望的数值图形解。有关Matlab语言本身及建立GUI应用程序的方法和具体开发过程,可阅读相关文献[3]。
在进行用户界面GUI设计时,研发人员一般应遵守三个原则:第一是简单化,即界面结构清晰,层次分明,操作方便;第二是一致性。界面各部分功能应相互匹配,不产生抵触;第三是人性化,界面要友好,符合人们的正常逻辑思维方式和使用习惯。
本文将GUI 设计成四个区域(见图2)。最上方是下拉菜单区,右侧是主操作区,左上方是图形区,左下方是节点编辑区。下拉式菜单占据空间小,信息多;缺点是调用麻烦。根据这些特性,把不常调用的命令置于其中,如文件存储和打开,图形缩放,坐标系调整等。主操作区系列操作按键实现最主要的和频繁调用的命令。主操作区又分为四个子区。子区一设有addNode 和delNode按键,用于添加和删除节点,加点时给出节点号,删除节点时剩余节点号自动调整;子区图2 软件界面。
二设有addCircle和delCircle按键,用于添加和删除环路。添加环路时在环的形心位置给出环标号,该标号具有重要意义,是环路删除时用于寻找对象的标志;子区三设有setNodeQ和setLineProp按键,用以给节点和管段赋予计算用的初始值;子区四有calculate、showHf和showQ按键,前者用于管网水力平差计算,后两者以可视化方式给出各管段的水头损失和流量。左下方节点编辑区用于实现节点坐标的修改及键盘输入。以上GUI中各个元素(按键、编辑框、菜单等)利用Matlab中开发工具GUIDE、PROPEDIT、MENUEDIT进行设定。Matlab 6.5 开发环境下,系统自动生成与各个元素相对应的callback函数框架。实现程序功能的关键工作是编写这些元素所要完成的处理函数,即GUI 的处理代码编写。
在编写函数处理代码的过程中,要使程序真正达到简洁、高效,除了思路上要清晰外,下面两个问题也很值得重视。第一是如何解决函数间的相互联系,确保数值正确传递的问题。用户图形界面上的元素表面上似乎是独立的,内部却有着紧密的联系,后面很多工作往往涉及到前面的基础。函数间数值的传递,Matlab 6.5下可用handles命令来解决,无须像以前那样用findobj命令来查找句柄,使用起来相当方便;第二个问题是函数结构化、一体化思想。编程过程中,可将多处使用的代码用一个通用子函数编写,以供直接调用。如本文中管网重绘代码,在管网构建、平差计算以及计算结果可视化中多次用到,可写成子函数形式。使程序更加简洁,易于阅读、查找错误和修改,减少程序之间的影响,提高可靠性。
基于以上思路,本文设计了具有GUI 的城市给水管网结果可视化计算模型,它具有按键和鼠标操作的全部功能,集建网模型,参数赋值,计算,结果可实视化为一体。可进行局部缩放,对管网结构和各种参数能作出任意修改,使用起来相当方便。图3、图4为利用本文模型计算所得的结果。
图 3 管网水头损失平差计算结果 图 4 管网流量平差计算结果
3 全文小结
城市给水管网是一个比较复杂的系统,从初始流量的分配,水力计算到优化调度和图形结果显示,涉及的因素很多,任何一部分的改进与完善都与整体的优化密不可分。本文探讨并建立了具有GUI 的环状管网定线,初分流量、平差、优化设计的计算模型。通过Matlab使几何数据、数学模型参数、平差计算与计算结果的图文显示一体化,能够方便、迅速的计算并分析得出结果。显然,利用可视化思想使得原本复杂而繁琐的工作得到了极大的简化。
随着作者研究工作的深入及相关技术的发展,本模型将会得到不断的改进与完善,并逐步用于实践。
参考文献
[1] 严煦世,范瑾初. 给水工程(第四版),中国建筑工业出版社 1999.
[2] 孙家广等 编著,计算机图形学,清华大学出版社,1998
[3] 苏金明 阮沈勇 编著,MATLAB6.1实用指南,电子工业出版社,2002.