面向对象法燃气管网水力计算
2020-12-29赵丹铭周伟国
赵丹铭, 周伟国, 黄 薇
(同济大学机械与能源工程学院,上海201804)
1 概述
天然气及其输配系统已经广泛应用到了城市的各个角落,其设计与运行管理离不开水力计算。传统算法基于基尔霍夫第一、二定律,先把管网结构转化为系数矩阵,再求解矩阵方程[1-2]。但随着燃气管网的改扩建以及“枝改环”的不断推进,管网结构经常变化。同时,用户的负荷变化规律也难以捉摸,还随时可能发生事故,多源、多环、多级和多变成为燃气管网新特点[3]。对于传统算法[3-4],每次管网结构或工况改变都需要重新分析结构和编号,生成新的矩阵方程并求解,重复的工作量和计算量大,且随着管网的扩大,矩阵方程愈发复杂难解,分析和计算更加困难。
近年来,周伟国等人[5]和王海等人[6-7]提出了“面向对象”的方法,把管网拆解成对象,再按顺序遍历管网,以对象为单位求解。当管网结构变化时,无需重新编号和求解矩阵方程,工作量大大减少。将各元件的属性封装于数据库中,也更能满足国家对管网系统信息化科学管理的要求[8]。本文在此基础上,用Visual Basic编制了可以实现水力计算各类功能的程序,以便更好地适应燃气管网的新特点和未来发展的要求。
2 面向对象法的算法编制和程序设计
2.1 元件对象化
将组成管网的元件,如管段、三通等定义为具备各自属性和方法的“对象”,分属不同的类,随管网用到的元件和结构的变化灵活增减,属性随时调整,其方法按不同的迭代方式与计算公式选取,见表1。建立管网数据库,数据库使用Access2010,每类建一个表,如管段表示例见表2,将各元件赋予唯一编号并录入,但与传统算法不同,无需设置基准点,也无需将定压点集中于最后编号。
2.2 管网初始化
程序的算法是基于“面向对象”的思想用VB编写。计算前,首先在程序中打开数据库文件。然后,
表1 对象化数学模型示例
表2 管段表示例
在主窗口设置初始参数:气体的密度、运动黏度与温度、大气压力与初始压力、精度、收敛系数等,主窗体界面截图见图1。
2.3 遍历计算
① 计算公式
水力计算公式见式(1),摩擦阻力系数计算公式见式(2)。
(1)
式中p1——管段进口节点的绝对压力,kPa
p2——管段出口节点的绝对压力,kPa
L——管段的管长,km
λ——管段的摩擦阻力系数
qV——标准状态下的燃气流量,m3/h
d——管段内直径,mm
ρ——燃气的密度,kg/m3
T——燃气的温度,K
Z——燃气压缩因子,当燃气压力小于1.2 MPa时,Z取1
T0——标准状态下的燃气温度,K
(2)
式中K——管段的绝对粗糙度,mm
Re——管内流动燃气的雷诺数
根据基尔霍夫第一定律,在每个节点处有公式(3):
(3)
式中f(p)——节点压力p下算出的节点处进出节点的流量之和,m3/h
n——与该节点相连的管段数量
qV,i——节点处第i条与该节点相连管段的流量,m3/h,进入节点的流量取正,离开取负
qV1——节点处的流量负荷,该管网数据库中节点表中对应节点编号的“负荷”字段下的值,m3/h
根据牛顿迭代法,存在公式(4):
(4)
式中p′——节点压力p的修正值,Pa
p——节点压力,Pa
γ——收敛因子,初始取1
f′(p)——f(p)的导数
收敛因子的迭代式为:
γ=γδ
(5)
式中δ——收敛系数,取0~1范围的值
公式(5)使用情况见下文“② 算法设计”中的第5步。
② 算法设计
算法设计阐述中,p0为设置的初始压力,p为待求的节点压力,qV0为待求的管段流量,p′为压力p的修正值,f(p)为压力p下算出的进出节点的流量之和,f(p′)为节点压力p′下算出的进出节点的流量之和,ε为2.2节中设置的精度。
“面向对象”的算法流程具体如下。
第1步,按管段编号顺序,根据2.1节元件对象化步骤中输入的元件属性和2.2节管网初始化步骤中设置的压力初值p0,按公式 (1) 依次算出管段流量qV,i。
第2步,按节点编号顺序,根据公式(3),计算得到f(p),再依据公式(4)算出新的节点压力p′。
第3步,判断是否符合收敛条件f(p)<ε,若是,结束计算并显示结果。若否,进行第4步。
第4步,采用p′利用公式(1)~(3)计算出f(p′),并判断是否符合收敛条件。若符合收敛条件,结束计算并显示结果。若不符合收敛条件,继续判断:若f(p′)≤f(p),p′代替p回到第1步开始新的迭代,γ取1;否则,进入第5步并循环直到f(p′)≤f(p)。
第5步,根据公式(5)和2.2节管网初始化步骤中设置的δ值计算γ,再把算得的新γ代回公式(4)和公式(3)重新计算p′和f(p′),如此不断缩小γ值更新p′,直到满足f(p′)≤f(p)。
本步是为了防止发散并更快收敛。根据基尔霍夫第一定律,p为真值时,求得的f(p)为0。
若公式(4)中的γ为0时,p′=p;公式(4)中的γ越接近1,得到的p′离原值p越远。
若f(p′)≤f(p),说明迭代得到的p′比原值p更接近真值;若f(p′)>f(p),说明迭代得到的p′远离真值,发散,故δ取0~1范围的值更新γ重新计算p′,直到找到比原值p更接近真值的p′,作为新的一轮迭代的初值p。
2.4 水力计算程序窗体设计
程序主窗体界面见图1,分为5个区域,顶部第1区域是工具栏,实现打开和保存文件,开始、暂停计算,查看修改数据库和附属功能。左侧第2区域是初始参数设置区,进行计算前的参数设置。中间下半部分第3区域是管网信息区,显示元件属性表。右侧第4区域是实时数据区,显示实时计算时的残差和迭代次数。中间上半部分第5区域是结果区,显示的结果包括各管段流量和压力降、各节点压力和进出口流量和、各环的压力降和、迭代次数、计算时间和使用的单位。
可以实现的附属功能有:可以导入已有管网数据库数据,也可以在程序中新建数据库文件;可以进行管网信息的查看与编辑,增加删除数据库中的元件或修改其属性;可以用不同方法进行管网计算,程序除了面向对象法,也可用传统节点法、环差法计算;进行结果的处理与保存,可将计算结果保存为word 或excel文件,也可用曲线表示,也可在工具栏“查看”选项下选择性查看某个量或改变表示单位;图片展示,如有管网结构图,可直接在图上编号,计算完成后可在编号位置显示结果。
3 面向对象法算例
3.1 原始工况
原始工况管网结构见图2,1~16表示管段编号,(1)~(13)表示节点编号,“源”是该系统的供气源点,“汇”则为用户用气点,实线箭头为初设流向,顺流向编号。工质为天然气,27 ℃等温稳态流动。管段1、6、13和16长3 400 m,其余管段长1 700 m,内直径均为1 000 mm,管材为普通钢管(绝对粗糙度取0.05 mm),源汇参数见表3。计算步骤见图3,计算结果见图4~5,管段7、9实际流向与初设相反,在图3中以虚线箭头表示实际流向。
图2 原始工况管网结构
表3 源汇参数
“面向对象”法计算步骤:
① 元件对象化:数据库中存入信息,根据本例的元件类型创建管段、节点表并录入对应元件属性。
② 管网初始化:程序中设置气体的密度与运动黏度、燃气温度与大气压力、计算初值与精度,见图1。
图3 计算步骤
图4~5为本算例利用节点法、环差法、面向对象法的计算结果对比图。对于图5的节点压力,面向对象法与节点法偏差更小。对于图6的管段流量,面向对象法与环差法偏差更小。根据计算原理,在迭代过程中,节点法迭代更新的是节点压力,故得到的压力较精确;环差法则是计算校正流量迭代更新流量,其流量较精确,所以结果方面,面向对象法得到的压力、流量都更贴近较精确的值。
计算过程方面,节点法和环差法都需要先生成整体管网矩阵,再求解方程组,当管网某元件发生改变时,矩阵方程需要全部重新生成,重复工作费时费力,且管网越复杂,矩阵越大,解法越难,且目前燃气管网不断扩建改建,旧方法适应性差。面向对象法将管网拆分成元件,不仅避免求解方程组,而且在元件改变时只要修改个别属性,灵活性和效率更高,更适用于目前燃气管网的特点。
图4 算例节点压力计算结果
图5 算例管段质量流量计算结果
3.2 添加元件工况
添加17~22管段见图6,具体增加与修改元件情况分别见表4、5。在管网结构改变后,节点法和环差法都要重新编号,重录元件属性,环差法还需重新按连续性方程分配所有管段初始流量。面向对象法则直接添加管段17~22和节点(14)~(17),并将管段4、8、10、14管长修改为850 m,出口分别改成节点(14)、(15)、(16)、(17),见表4。计算结果见图7、8。图6中实线为设计流向,虚线为实际流向。
图6 添加元件工况下管网结构
表4 增加元件后导致的修改元件情况
表5 增加元件情况
图7 添加元件工况下的节点压力
图8 添加元件工况下的管段质量流量
3.3 删除元件工况
实际管网还可能改建或发生故障,以气源2发生故障且管段9、13、14断开为例(见图9),节点法和环差法仍要全部重新生成矩阵,面向对象法直接删除管段9、13、14和节点(2)、(10),删除元件工况下的节点压力和管段质量流量分别见图10、11。
图9 删除元件工况下管网结构
图10 删除元件工况下的节点压力
图11 删除元件工况下的管段质量流量
3.4 环闭合差
上述各工况中的环见图12,环的各节点见表6。
图12 各工况中的环
表6 环的各节点构成
环闭合差即封闭环状管网压力降的代数和,根据基尔霍夫第二定律,各环路环闭合差应为0。在管网水力计算中,常用公式(6)验证环闭合差是否满足要求,小于10%即可。3种工况(原始工况、添加元件工况、删除元件工况)的环闭合差计算结果见表7。对比可知,面向对象法计算结果最小,比传统算法(节点法、环差法)更准确。
(6)
式中H——环闭合差
m——环包含的管段数
Δpi——管段i进出口节点压力平方差
表7 3种工况(原始工况、添加元件工况、删除元件工况)的环闭合差
4 结论
本文针对目前燃气管网多源、多环、多级和多变的新特点,基于“面向对象”的思想,使用Visual Basic软件编制了燃气管网水力计算程序,并结合算例在软件操作和数据结果方面与传统算法(节点法、环差法)进行了对比。
软件操作方面,管网结构改变时,面向对象法直接增删相应元件或修改个别元件属性即可直接计算。节点法和环差法则需要重新编号,并保证定压点集中在最后编号且基准点编号最大,还要重输元件属性,再生成新的系数矩阵后求解方程组。环差法还需按连续性方程重新分配流量初值,而且每次管网改变传统算法都要重复以上步骤,故面向对象法操作更加简便快速。
数据结果方面,首先,3种算法在3种工况(原始工况、添加元件工况、删除元件工况)下的环闭合差都满足要求,且面向对象法最小,更准确。其次,在节点压力的计算结果上,面向对象法与节点法偏差更小,而管段流量结果面向对象法与环差法偏差更小。根据计算原理,在迭代过程中,节点法更新的是节点压力,故得到的压力较精确,环差法则是计算校正流量更新流量,其流量较精确,所以面向对象法的节点压力、管段流量计算结果都更贴近较精确的值。
因此,本文设计的“面向对象”的管网水力计算算法和编制的程序比传统方法更精确,操作更方便,更能适应未来燃气管网的发展需求。