❓ 需求分析
首先展示下我的问题,以便分析本篇博客中的哪些步骤适用于你的需要。
- 已知条件:有某地区管网的
.inp文件,并且有该地区水源节点历史两个月的余氯时间序列数据。 - 求解结果:得到该管网结构中所有节点在历史两个月中的余氯值,更准确的结果如下表展示所示:
| Time | 节点 01 | 节点 02 | …… | 节点 m |
|---|---|---|---|---|
| 时刻 01 | 2.56 | 4.28 | …… | 2.56 |
| 时刻 02 | 3.56 | 4.56 | …… | 2.56 |
| …… | …… | …… | …… | …… |
| 时刻 n | 3.44 | 3.89 | …… | 2.56 |
🫡 基础知识
什么是WNTR?
简单来说:WNTR(Water Network Tool for Resilience)是由美国国家标准与技术研究院(NIST)开发的一套用于分析水分配系统的开源工具,用于模拟和评估给水管网系统的性能和恢复力。主要作用包括:模拟水分配系统、恢复力分析、情景分析,以及优化调度等。简单来说,WNTR就是基于Python的高级版EPANET。
EPANET中的Patterns是干什么的?
在EPANET中,"Patterns"(模式)是用来表示随时间变化的水需求、压力或其他参数的变化模式。模式是一个数组或一系列因子,这些因子用于调整基础需求或其他输入参数,以模拟系统在不同时间段的行为。
应用场景:
- 水需求模式:模式通常用于表示水需求的日变化。例如,居民区的用水需求在早晨和傍晚会有高峰,而在夜间会较低。通过设置不同时间段的需求因子,可以精确模拟真实的用水情况。
- 泵操作模式:模式还可以用于控制泵的操作。例如,可以设置泵在特定时间段的运行速度或开启/关闭状态,以模拟不同的运行策略。
- 压力调节模式:在某些情况下,模式也可以用于调节系统中的压力,模拟压力管理策略。
举个例子:假设有一个居民区的用水模式,表示一天24小时内的需求变化:
时间步长(小时): 1
模式因子:
[0.5, 0.6, 0.7, 0.8, 1.0, 1.2, 1.5, 1.8, 2.0, 1.8, 1.6, 1.4,
1.2, 1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.3, 0.4, 0.5]在这个模式中,0点到1点的需求因子是0.5,表示这段时间的需求是基础需求的50%。早晨6点到9点的需求因子是1.2到2.0,表示用水需求较高,为基础需求的120%到200%。
🕹️ 具体步骤
简要介绍
在开始细致讲解前,先对整体的操作步骤进行一个大致总结,以便各位观众按需研究:
- 以文本形式打开
.inp文件,将管网水源节点的余氯时间序列添加为一个Pattern; - 在EPANET中打开这个
.inp文件,将该Pattern与水源节点相关联,并进行相关设置; - 使用WNTR完成水力模拟并保存所有节点的水质数据。
管网数据文件格式的调整
在.inp文件中,可以将管网数据以文本的形式进行编辑,非常方便。那么第一步需要进行的操作就是:如果你的管网文件是.net格式,需要将其调整为.inp格式。
这里有个注意点,将.net文件另存为.inp文件不能直接使用 File → Save As... 命令来操作,否则生成的文件会显示打开错误:
正确的操作步骤为:File → Export → Network,这样导出的.inp文件才是完整并且可直接进行文本编辑的。
将时间序列设置为Pattern
完成上面的.inp文件格式转换后,就可以直接使用文本编辑工具(Notepad、VS Code等)打开并进行编辑了。
在文件中直接搜索[PATTERNS],定位到Pattern的存储位置,会有如下的字样:
[PATTERNS]
;ID Multipliers
;
1 0.781 0.752 0.738 0.706 0.704 0.73 然后即可在后面进行Pattern的添加,例如:
[PATTERNS]
;ID Multipliers
;
1 0.781 0.752 0.738 0.706 0.704 0.73
;
demo 1 0.986378898 0.974703668 0.976000916 0.980541283 0.97340642上面添加的Pattern名为demo,可以使用EPANET打开该文件进行查看:
这里有个小问题,如果我的水源节点历史时间序列长度为2个月(60天)、每5分钟一个数据,那么一共会有60*24*(60/5)=17280条数据,也就是说我设置的Pattern长度也必须为17280。同时,还需要进行对应的时间设置:
另外还需要将水源节点的余氯值与这个Pattern相关联:
关于节点的两个属性:
- Initial Quality代表了水力模型起始运行那一刻的水质;
- Source Quality代表了水力模拟过程中,水源水质的变化情况。
为什么要在EPANET中进行这些设置呢?就是因为我是用WNTR倒腾了几周还是会有各种各样的问题,一直没有解决,然后才采用了这种方法。在EPANET中设置的属性是会保存在.inp文件中的,但水力模拟的结果或者过程信息却是不会保存在文件中的。在WNTR中进行水力模拟
其实,按照上面的步骤进行操作后,我们已经可以在EPANET中进行水力模拟,得到想要的结果了。
但是问题就在于:在 Report → Table 的导出选项中,每次仅可以选择一个节点或者管道的属性进行导出:
这如果一个网络拓扑结果中有成千上万个节点,那我得导出到猴年马月呢~😟
因此,在这里我们借助于WNTR进行水力模拟,其可以得到Numpy数据格式的文件,非常方便进行数据分析与处理。
使用WNTR进行水力模拟就非常简单了,直接上代码:
# 导入WNTR包
import wntr
# 加载EPANET模型
inp_file = r"C:\Users\myxc\Desktop\Anytown-2.inp"
wn = wntr.network.WaterNetworkModel(inp_file)
# 运行水力模拟(使用EPANET内核)
sim = wntr.sim.EpanetSimulator(wn)
results = sim.run_sim()
# 获取所有节点的余氯数据
cl_concentration = results.node['quality'] * 1000
cl_concentration请注意:在WNTR中设置Pattern或者水源节点的一些具体属性会非常麻烦,但是应该也是可以进行的。本文作者折腾了很长时间,还是不能完美实现自己的需求。因此,才采用了在EPANET中进行属性设置、在WNTR中进行水力模拟的方法。
其中,cl_concentration返回结果便是管网中所有节点在任意时刻的余氯监测值(模拟):
但是目前还有个疑问我没有搞明白:可以看到我上面对返回的数据矩阵进行了 * 1000操作,WNTR返回的数据单位需要 * 1000才与EPANET的相等。😕暂时还没找到原因~













果博东方客服开户联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方公司客服电话联系方式【182-8836-2750—】?薇- cxs20250806】
果博东方开户流程【182-8836-2750—】?薇- cxs20250806】
果博东方客服怎么联系【182-8836-2750—】?薇- cxs20250806】
新盛客服电话是多少?(?183-8890-9465—《?薇-STS5099】【
新盛开户专线联系方式?(?183-8890--9465—《?薇-STS5099】【?扣6011643??】
新盛客服开户电话全攻略,让娱乐更顺畅!(?183-8890--9465—《?薇-STS5099】客服开户流程,华纳新盛客服开户流程图(?183-8890--9465—《?薇-STS5099】
华纳东方明珠客服电话是多少?(??155--8729--1507?《?薇-STS5099】【?扣6011643?】
华纳东方明珠开户专线联系方式?(??155--8729--1507?《?薇-STS5099】【?扣6011643?】
华纳东方明珠客服电话是多少?(▲18288362750?《?微信STS5099? 】
如何联系华纳东方明珠客服?(▲18288362750?《?微信STS5099? 】
华纳东方明珠官方客服联系方式?(▲18288362750?《?微信STS5099?
华纳东方明珠客服热线?(▲18288362750?《?微信STS5099?
华纳东方明珠24小时客服电话?(▲18288362750?《?微信STS5099? 】
华纳东方明珠官方客服在线咨询?(▲18288362750?《?微信STS5099?
华纳东方明珠客服电话是多少?(▲18288362750?《?微信STS5099? 】
如何联系华纳东方明珠客服?(▲18288362750?《?微信STS5099? 】
华纳东方明珠官方客服联系方式?(▲18288362750?《?微信STS5099?
华纳东方明珠客服热线?(▲18288362750?《?微信STS5099?
华纳东方明珠24小时客服电话?(▲18288362750?《?微信STS5099? 】
华纳东方明珠官方客服在线咨询?(▲18288362750?《?微信STS5099?
华纳企业账户开户步骤?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
如何申请华纳公司账户?
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
这篇文章不错