发新话题
打印

城市给水管网可视化计算

城市给水管网可视化计算

 管网平差算法优选及程序实现

为提高供水可靠性,城市网通常建设为环状。环状管网的水力计算方法有很多种,常见的有求解环方程,求解节点方程,求解管段方程等。但计算过程都必须符合下面两个条件:

⑴节点流量必须平衡,即应满足连续性方程:

⑵闭合环路内水头损失必须平衡,即应满足能量方程:

式(1)和式(2)中,为衔接矩阵,为回路矩阵,为结点流量,为管段水头损失,为管段流量。环状网在初分流量时已经符合条件(1)的要求,但在确定管径并计算得到管段水头损失以后,往往不能同时满足(1)、(2)的要求。因此,环状网水力计算过程就是在已定管径的基础上,重新分配管段流量,不断计算,不断调整,直至符合上述水力条件为止。

目前已有的各种软件包各具特色,但基本算法都是对连续性方程、能量方程和管段压降方程的求解。一般的,计算机求解时都采用解节点方程的方法,其优点是输入数据少,大部分工作如拟定管段初始流量,生成衔接矩阵和系数矩阵等都由计算机自动完成。但存在节点数大,方程数多,系数矩阵很大,求解算法较复杂等缺点。通过对比发现,解环方程编程效率高于解节点方程。因为环数远小于节点数,环方程数少于节点方程数,系数矩阵大大缩小,迭代次数也减少,很大程度上提高了计算机计算速度并能节省存储空间。只要在编程过程中,根据已知条件,解决好自动拟定管段初始流量,自动生成系数矩阵等问题,该法就完全具备了解节点方程法的优点。所以本可视化模型以解环方程法为基础。

环状管网的解环方程方法常用的是hardy-cross法(平差法)。其基本思路是在管网计算时,各管段初始流量分配后,求出管段水头损失。如每环各管段水头损失和(闭合差)不为零,则对该环各管段引入校正流量,两环的公共管段须同时计及两环的校正流量。然后按q的流量计算各管段水头损失,重复计算直到各环闭合差接近零为止,其流程图见 图1。

显然,hardy-cross法的效率很大程度取决于方程式(1)和(2)中的衔接矩阵的构建方法以及各管段流量的初值给定方法。另外,管网的结构图的建立和各管段的计算所需信息的输入方式也会影响计算效率。为此,本文采用matlab作为开发平台,在可视化操作环境下,以图形的形式建立管网结构图,并输入节点和管段的各种信息。在此基础上,由计算机根据管网的几何形状,自动生成衔接矩阵并赋予管段初始流量。初始流量分


收藏到网摘:
本贴地址:http://bbs.shejis.com/viewthread.php?tid=347100&fromuid=0
点这里,把本帖地址在MSN/QQ上发给朋友分享!同时你还可以获得积分!

TOP

Re:楼主

2 软件开发平台及管网计算的可视化编程

是一个既可以进行分析计算,又能进行数据可视化的高效操作平台,可以方便的建立具有用户图形界面(gui)的参数输入、数值计算、结果分析调整一体化的仿真环境。利用其专业的绘图工具,快速的建立管网模型并得到所期望的数值图形解。有关matlab语言本身及建立gui应用程序的方法和具体开发过程,可阅读相关文献[3]

在进行用户界面gui设计时,研发人员一般应遵守三个原则:第一是简单化,即界面结构清晰,层次分明,操作方便;第二是一致性。界面各部分功能应相互匹配,不产生抵触;第三是人性化,界面要友好,符合人们的正常逻辑思维方式和使用习惯。

本文将gui 设计成四个区域(见图2)。最上方是下拉菜单区,右侧是主操作区,左上方是图形区,左下方是节点编辑区。下拉式菜单占据空间小,信息多;缺点是调用麻烦。根据这些特性,把不常调用的命令置于其中,如文件存储和打开,图形缩放,坐标系调整等。主操作区系列操作按键实现最主要的和频繁调用的命令。主操作区又分为四个子区。子区一设有addnodedelnode按键,用于添加和删除节点,加点时给出节点号,删除节点时剩余节点号自动调整;子区图2 软件界面。

二设有addcircledelcircle按键,用于添加和删除环路。添加环路时在环的形心位置给出环标号,该标号具有重要意义,是环路删除时用于寻找对象的标志;子区三设有setnodeqsetlineprop按键,用以给节点和管段赋予计算用的初始值;子区四有calculateshowhfshowq按键,前者用于管网水力平差计算,后两者以可视化方式给出各管段的水头损失和流量。左下方节点编辑区用于实现节点坐标的修改及键盘输入。以上gui中各个元素(按键、编辑框、菜单等)利用matlab中开发工具guidepropeditmenuedit进行设定。matlab 6.5 开发环境下,系统自动生成与各个元素相对应的callback函数框架。实现程序功能的关键工作是编写这些元素所要完成的处理函数,即gui 的处理代码编写。



TOP

Re:楼主

在编写函数处理代码的过程中,要使程序真正达到简洁、高效,除了思路上要清晰外,下面两个问题也很值得重视。第一是如何解决函数间的相互联系,确保数值正确传递的问题。用户图形界面上的元素表面上似乎是独立的,内部却有着紧密的联系,后面很多工作往往涉及到前面的基础。函数间数值的传递,matlab 6.5下可用handles命令来解决,无须像以前那样用findobj命令来查找句柄,使用起来相当方便;第二个问题是函数结构化、一体化思想。编程过程中,可将多处使用的代码用一个通用子函数编写,以供直接调用。如本文中管网重绘代码,在管网构建、平差计算以及计算结果可视化中多次用到,可写成子函数形式。使程序更加简洁,易于阅读、查找错误和修改,减少程序之间的影响,提高可靠性。

基于以上思路,本文设计了具有gui 的城市网结果可视化计算模型,它具有按键和鼠标操作的全部功能,集建立管网模型,参数赋值,计算,结果可实视化为一体。可进行局部缩放,对管网结构和各种参数能作出任意修改,使用起来相当方便。图3、图4为利用本文模型计算所得的结果。

 

图 3  管网水头损失平差计算结果                    图 4  管网流量平差计算结果

 

城市网是一个比较复杂的系统,从初始流量的分配,水力计算到优化调度和图形结果显示,涉及的因素很多,任何一部分的改进与完善都与整体的优化密不可分。本文探讨并建立了具有gui 的环状管网定线,初分流量、平差、优化设计的计算模型。通过matlab使几何数据、数学模型参数、平差计算与计算结果的图文显示一体化,能够方便、迅速的计算并分析得出结果。显然,利用可视化思想使得原本复杂而繁琐的工作得到了极大的简化。



TOP

发新话题
统计代码