StormReactor:用于在 SWMMH 中对任何污染物生成或处理方法进行建模的 Python 包
项目描述
StormReactor:用于在 EPA SWMM 中对任何污染物产生或处理方法进行建模的 Python 包
概述
StormReactor的开发旨在扩展在 EPA 的雨水管理模型 (SWMM) 中对雨水质量和基于水质的实时控制进行建模的能力。这是Open-Storm ( http://open-storm.org/ ) 使命的自然延伸,即开放并轻松进入智能雨水系统的技术世界。StormReactor使用户能够对雨水网络中任何节点或链路中的任何雨水污染物处理或生成方法进行建模。用户可以实施SWMM 参考手册第 III 卷:水质中定义的任何 SWMM 处理功能,从我们构建的一些其他方法中进行选择,或创建自己的方法。
注意:为了使用StormReactor改变节点中污染物浓度的能力,您必须在 SWMM 输入文件中启用处理。这意味着如果您在文本编辑器中打开输入文件,它应该列出您要访问的节点的处理。StormReactor运行时,会将输入文件中的处理替换为你想要的方法。请参阅下面示例输入文件的片段。
STORAGE]
;;Name Elev. MaxDepth InitDepth Shape Curve Name/Params N/A Fevap Psi Ksat IMD
;;-------------- -------- ---------- ----------- ---------- ---------------------------- -------- -------- -------- --------
Tank 10 5 0 TABULAR Tank_Curve 0 0
[POLLUTANTS]
;;Name Units Crain Cgw Crdii Kdecay SnowOnly Co-Pollutant Co-Frac Cdwf Cinit
;;-------------- ------ ---------- ---------- ---------- ---------- ---------- ---------------- ---------- ---------- ----------
P1 MG/L 0.0 0.0 0 0.0 NO * 0.0 0.0 0
[TREATMENT]
;;Node Pollutant Function
;;-------------- ---------------- ----------
Tank P1 R = 0.5
安装
要求
- 蟒蛇 3.6+
- 麻木的
- pyswmm 1.2.0+
- scipy
派皮
StormReactor可通过 PyPI 在https://pypi.python.org/pypi/StormReactor/获得,或者您可以使用以下命令直接在终端中安装它。如果您在安装或使用软件包时遇到任何问题,请在存储库上提出问题或联系。
$ pip install StormReactor
如何使用StormReactor
示例 1
下面是一个简单示例,说明如何使用StormReactor对多个雨水资产(例如盆地、渠道)中的污染物(例如 TSS)的各种水质方法(例如重力沉降、事件平均浓度)进行建模。此示例涵盖了StormReactor中所有现有的污染物处理和生成方法,完全搅拌釜式反应器 (CSTR) 除外。请参阅下一个 CSTR 建模示例。
# import packages
import StormReactor
from pyswmm import Simulation
# build water quality configuration dictionary
config = {'basin': { 'type': 'node', 'pollutant': 'P1', 'method': 'GravitySettling', 'parameters': {'k': 0.0005, 'C_s': 21.0}},\
'channel': { 'type': 'link', 'pollutant': 'P1', 'method': 'EventMeanConc', 'parameters': {'C': 10.0}}}
# initialize water quality
with Simulation('example1.inp') as sim:
WQ = waterQuality(sim, config)
for step in sim:
# update each time step
WQ.updateWQState()
示例 2
下面是一个简单的示例,用于对多个雨水资产(例如盆地、湿地)中的污染物(例如硝酸盐)进行 CSTR 建模。请注意,您必须调用updateWQState_CSTR(index)
而不是updateWQState()
因为 CSTR 代码需要index
. 这是对 CSTR 建模的唯一区别。
# import packages
import StormReactor
from pyswmm import Simulation
# build water quality configuration dictionary
config = {'basin': { 'type': 'node', 'pollutant': 'P1', 'method': 'CSTR', 'parameters': {'k': -0.0005, 'n': 1.0, 'Co': 10.0}},\
'wetland': { 'type': 'node', 'pollutant': 'P1', 'method': 'CSTR', 'parameters': {'k': -0.000089, 'n': 3.0, 'Co': 10.0}}}
# initialize water quality
with Simulation('example2.inp') as sim:
WQ = waterQuality(sim, config)
for step in sim:
# update each time step
WQ.updateWQState_CSTR(index)
创建自己的水质方法
要创建新的水质方法,请执行以下步骤:
- 将存储库分叉到您自己的个人存储库。
waterQuality()
将新方法的名称添加到waterQuality.py中的水质方法定义中
# Water quality methods
self.method = {
"EventMeanConc": self._EventMeanConc,
"ConstantRemoval": self._ConstantRemoval,
"CoRemoval": self._CoRemoval,
"ConcDependRemoval": self._ConcDependRemoval,
"NthOrderReaction": self._NthOrderReaction,
"kCModel": self._kCModel,
"GravitySettling": self._GravitySettling,
"CSTR": self._CSTRSolver,
"Phosphorus": self._Phosphorus,
"NewMethod": self._NewMethod
}
- 将新水质方法的定义添加到
waterQuality()
waterQuality.py 的末尾。确保包括所有必要的方法输入:self, ID, pollutant_ID, dictionary, flag
. 您可以使用任何 PySWMM/SWMMM 吸气剂来获取模型所需的水量和质量值。还要确保进行设置parameters = dictionary
,以便您可以访问字典中的输入。添加模型代码后,不要忘记使用适当的设置器在 SWMMH 中设置新节点和链接集中度。
def _NewMethod(self, ID, pollutant_ID, dictionary, flag):
"""
Add method description and required parameters.
"""
# Set parameters = dictionary so you can access your dictionary parameters.
parameters = dictionary
"""
CODE BLOCK
New method code to calculate new pollutant concentration, here referred to as Cnew.
Set the concentration in SWMM using the appropriate setters using the flag feature.
"""
if self.flag == 0:
self.sim._model.setNodePollut(ID, pollutant_ID, Cnew)
else:
self.sim._model.setLinkPollut(ID, pollutant_ID, Cnew)
- 现在运行你的新模型!根据需要修改代码。
错误
我们的问题跟踪器位于https://github.com/kLabUM/StormReactor/issues。请报告您发现的任何错误。或者更好的是,在 GitHub 上 fork 存储库并创建一个拉取请求。欢迎所有更改,无论大小,如果您是 git 新手,我们将帮助您提出拉取请求(只需询问问题)。
贡献
如果您想将您的水质方法贡献给StormReactor,请按照以下步骤操作:
- 在https://github.com/kLabUM/StormReactor/issues在问题跟踪器上提出问题,以描述您建议添加的新方法。
- 按照上述“创建您自己的水质方法”中的步骤构建您的新方法。
- 创建测试以确认您的新方法有效。请遵循https://github.com/kLabUM/StormReactor/tree/master/tests中所示的节点和链接测试格式。
- 在https://github.com/kLabUM/StormReactor/pulls提交拉取请求,将您的编辑与现有的StormReactor代码库合并。注意:可能会有意见、建议和问题。我们都在共同努力生产具有凝聚力和高质量的软件。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
StormReactor -1.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4dee66692dc0206dadc9caef1ad0ccfc4e3d0037de3d4f351c68ce4eba68fa06 |
|
MD5 | 2e827fbdc1920aca73edf5d63676d9dd |
|
布莱克2-256 | 94a39ff821376828eb050b3611d370a5dcaa0909b1d88efb5ae3b724ea903dca |
StormReactor -1.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 569c910e846681e0508e1f674960391804ae6dd1914d2bbaba400f495bbcca13 |
|
MD5 | 9d70cc5e8a9c8bf4c3c9d8b3bcf6d1b4 |
|
布莱克2-256 | f49a41ff688865a1ba343b645c24738a3702124f91de44e5f48c82b08ace8c0c |