EPA(Environmental Protection Agency,环境保护署)
SWMM(storm water management model,暴雨洪水管理模型)是一个动态的降水-径流模拟模型。
主要用于模拟城市某一单一降水事件或长期的水量和水质模拟。
其径流模块部分综合处理各子流域所发生的降水,径流和污染负荷。
其汇流模块部分则通过管网、渠道、蓄水和处理设施、水泵、调节闸等进行水量传输。
该模型可以跟踪模拟不同时间步长任意时刻每个子流域所产生径流的水质和水量,以及每个管道和河道中水的流量、水深及水质等情况。
SWMM自1971年开发以来,已经经历过多次升级。在世界范围内广泛应用于城市地区的暴雨洪水、合流式下水道、排污管道以及其它排水系统的规划、分析和设计,在其它非城市区域也有广泛的应用。
当前最新版本5.0是在以前版本基础上进行了全新升级的结果,可以在Windows操作系统下运行SWMM5提供了一个宽松的综合性环境,可以对研究区输入的数据进行编辑、模拟水文、水力和水质情况,并可以用多种形式对结果进行显示,包括对排水区域和系统输水路线进行彩色编码,提供结果的时间序列曲线和图表、坡面图以及统计频率的分析结果。
最新的版本开发由国家环境保护署国家风险管理研究中心实验室下属的供水和水资源研究中心资助,同时也得到了来自CDM咨询公司的协助。
参考链接:
代码路线图
SWMM 5计算引擎由51个C代码文件和几个头文件组成。该引擎可以编译为Windows下的动态链接库(DLL),也可以编译为Windows和Linux下的独立控制台应用程序,具体取决于swmm5.c顶部的#define DLL和#define CLE声明被注释掉了。
核心模块
以下模块构成SWMM 5引擎的主要核心:
swmm5.c | 包含对程序提供监督控制的功能。 |
project.c | 包含创建和销毁所有项目数据,建立默认值以及通过ID名称查找对象的功能。 |
Input.c中 | 从输入文件读取项目数据。 |
runoff.c | 计算项目子汇水区的径流量和质量。 |
routing.c | 通过项目的节点和链路的排水系统网络路径径流和外部流入。 |
massbal.c | 执行径流和路由的质量平衡计算。 |
stats.c | 收集有关流量,水深,解决方案迭代和变量时间步骤的摘要统计数据以进行模拟。 |
statsrpt.c | 将摘要模拟结果写入状态报告。 |
output.c | 写入/读取径流并将结果路由到/从二进制输出文件。 |
report.c | 准备仿真结果的状态报告,并且对于SWMM 5的命令行版本,报告所选子集,节点和链接的完整结果。 |
inputrpt.c | 将项目输入数据的摘要写入状态报告。 |
RUNOFF模块
以下模块集合用于执行径流计算:
rain.c | 将来自外部降雨文件的数据放入一个降雨接口文件中。 |
gage.c | 通过界面文件或内部时间序列提供降雨量数据,用于径流计算。 |
climate.c | 将温度,蒸发和风速数据提供给模拟。 |
snow.c | 计算项目子集水区的降雪积累,除雪操作和融雪。 |
infil.c | 对项目的子分区进行渗透计算。 |
gwater.c | 计算地下水通量并更新项目研究区域内的地下水深度。 |
subcatch.c | 计算来自各个子小区的降雨径流量。 |
surfqual.c | 计算污染物堆积,冲刷和街道扫过各个子集水域。 |
landuse.c | 评估项目各类土地用途的污染物堆积和冲刷功能。 |
lid.c | 评估子集水区内使用的低影响开发实践的水文表现。 |
lidproc.c | 计算单个LID单元的水文性能。 |
流量和水质量模块
这些模块用于流量和水质路由:
flowrout.c | 通过项目的排水网络实现流量路由的顶层控制。 |
inflow.c | 在模拟的每一步提供直接的时间序列流入和经常干旱天气流入到排水系统的节点。 |
rdii.c | 在排水网络的选定节点处计算降雨依赖的入渗/流入。 |
kinwave.c | 在模拟的每个时间步骤执行运动波流路由计算。 |
dynwave.c | 在模拟的每个时间步骤执行动态波浪流路由计算 |
dwflow.c | 在单个时间步中解决了单个导管中的动态波流连续性和动量方程。 |
controls.c | 随着模拟的展开,对泵和监管机构实施基于规则的控制措施。 |
qualrout.c | 通过研究区域的排水系统执行水质成分的布线。 |
treatmnt.c | 计算排水系统特定节点的污染物去除情况,用户定义的处理功能已被分配。 |
node.c | 包含用于计算排水系统节点(包括路口,流量分配器,存储单元和排污口)的属性和行为的功能。 |
link.c | 包含用于计算排水系统连接的属性和行为的函数,其中包括导管,泵,孔口,堰和出口。 |
forcmain.c | 计算使用Hazen-Williams或Darcy-Weisbach方程代替加压流Manning方程的力主干摩擦损失。 |
culvert.c | 使用FHWA HEC-5通函中的等式计算进口控制引起的涵洞式管道流量减少。 |
roadway.c | 使用FWHA HDS-5方法计算超越道路的流量。 |
exfil.c | 计算存储单元下方的渗出物。 |
其他功能
以下模块为SWMM 5提供各种支持功能:
datetime.c | 用于处理日期和时间的函数。 |
error.c | 错误报告功能。 |
findroot.c | 方程根发现函数。 |
hash.c | 为快速对象检索实现哈希表的函数。 |
hotstart.c | 将排水系统的状态保存或读入热启动文件。 |
iface.c | 用于读写路由接口文件的功能。 |
keywords.c | 定义显示为SWMM 5输入文件一部分的关键字列表。 |
mathexpr.c | 解析和评估用户提供的数学表达式,用于处理节点处的污染物去除以及来自子流域的地下水流出。 |
mempool.c | 提供用于存储对象ID名称的内存池的函数。 |
odesolve.c | 实现一个五阶Runge-Kutta常微分方程求解器。 |
shape.c | 计算具有用户定义形状的封闭管道的几何横截面特性的函数。 |
table.c | 用于访问包含SWMM 5曲线数据和时间序列数据的查找表的函数。 |
toposort.c | 函数用于拓扑排序排水网络的链路并检测任何闭环循环。 |
transect.c | 为不规则形状的横截面横断面创建几何表格的功能。 |
xsect.c | 计算导管横截面几何特性的函数。 |