简介:这份资源是《雨水管理模型 SWMMH 参考手册》第 I 卷「水文学」的汉化 PDF,面向城市雨水管理、环境工程与城市规划领域的工程师、研究人员及高校师生,用于理解 SWMM 动态降雨-径流模拟的水文计算原理。SWMMH 是 EPA SWMM 的汉化版本,可处理单一事件或长期连续模拟,径流部分在子汇水面积上接受降水并产生径流与污染物负荷,演算部分则通过管道、渠道、蓄水处理设施、水泵和调节器输送径流,并跟踪各管渠的流量、水深与水质。手册由 Lewis Rossman 与 Wayne C. Huber 编写,同济大学李树平教授于 2016 年 6 月完成翻译,内容涵盖概览、气象学、对象模型与过程模型等章节,并附译者声明与原著致谢。资源包为 1 个 PDF 文件,大小约 2.93MB,已有 295 人学习。读者可借此系统掌握 SWMMH 水文模型的建模思路与参数含义,为城市降雨事件的水量水质预测与管理提供参考。
1. 拿到一份 SWMM 水文手册,先别急着翻目录
城市内涝模拟做到第三年,我才意识到一个尴尬的事实:很多人用 SWMM 建出来的模型,参数是拍脑袋填的,报告是套模板写的,评审一问“下渗曲线为什么选 Horton 不选 Green-Ampt”就卡壳。问题不在软件操作,在于对水文过程本身的理解是黑匣子。这份《SWMM 用户参考手册——水文学》就是拆黑匣子的工具。它是 EPA SWMM 汉化版 SWMMH 的官方参考手册第 I 卷,专门讲水文模型部分,涵盖气象输入、地表径流、下渗、地下水、融雪和降雨致入渗入流六大模块。适合两类人:一是正在做城市排水防涝建模、需要把参数取值讲清楚的一线工程师;二是带学生做海绵城市课题、需要一本能查公式和参数范围的案头资料的人。它不是操作教程,是原理和参数手册,配合 SWMM 界面用才发挥最大价值。
2. 气象与地表径流:从降雨输入到子汇水面积划分的完整链路
2.1 降雨数据的三种来源与格式选择
SWMM 的降雨输入方式直接决定后续径流过程的精度。手册第 2 章把降雨数据来源分成三类:用户自定义时间序列、政府机构标准格式文件、降雨接口文件。我一般根据项目阶段来选——方案阶段用自定义时间序列快速试算,初设和施工图阶段必须换成实测雨量数据。
自定义时间序列在 SWMM 的[TIMESERIES]段定义,格式如下:
[TIMESERIES] ;;Name Date Time Value ;;-------------- ---------- ---------- ---------- TS_Rain 06/15/2024 00:00 0.0 TS_Rain 06/15/2024 00:05 1.2 TS_Rain 06/15/2024 00:10 3.8 TS_Rain 06/15/2024 00:15 2.1 TS_Rain 06/15/2024 00:20 0.5这段定义了一个 5 分钟间隔的降雨过程。Value列的单位取决于[OPTIONS]段中RAIN_UNITS的设置,常见是 MM(毫米)或 IN(英寸)。时间间隔必须与WET_STEP一致或为其整数倍,否则 SWMM 会自动插值,插值方式在手册 2.1.3 节有说明——默认线性插值,但短历时强降雨建议用RAIN_INTERVAL显式控制。
政府机构数据这块,手册 2.2.2 节列出了几种标准格式的读取方式。国内常用的是气象站分钟级降水数据,导出为 CSV 后通过[RAINGAGES]段关联:
[RAINGAGES] ;;Name Format Interval SCF Source ;;------- --------- --------- ----- ------ RG1 INTENSITY 0:05 1.0 TIMESERIES TS_RainFormat选INTENSITY表示输入是降雨强度(mm/hr),选VOLUME表示是降雨量(mm)。这个参数搞反了,峰值流量能差 60 倍,属于血泪经验级别的坑。SCF是雪修正因子,南方项目直接填 1.0。
2.2 子汇水面积划分的粒度控制
手册第 3 章的核心观点是:子汇水面积划分粒度决定了模型能不能收敛。3.3 节明确说,子汇水面积是 SWMM 水文模拟的最小单元,每个单元独立计算产流,再通过演算汇入管渠节点。
我一般按三个原则划分:第一,按雨水口汇水范围划,一个雨水口对应一个子汇水面积;第二,按地面坡度变化划,坡度突变处必须断开;第三,按土地利用类型划,不透水率差异超过 20% 的区域分开。手册 3.8.1 节给了概化建议——单个子汇水面积不宜超过 2 公顷,否则坡面汇流时间计算误差会放大。
划分完成后,每个子汇水面积需要填的核心参数包括:
| 参数 | 含义 | 典型取值 | 手册参考章节 |
|---|---|---|---|
| Area | 面积(ha) | 按实际划分 | 3.8.2 |
| Width | 特征宽度(m) | 面积/漫流长度 | 3.8.4 |
| Slope | 坡度(%) | 实测或地形图量取 | 3.8.5 |
| N-Imperv | 不透水区曼宁 n | 0.011~0.015 | 3.8.6 |
| N-Perv | 透水区曼宁 n | 0.15~0.40 | 3.8.6 |
| Dstore-Imperv | 不透水区洼蓄(mm) | 1.5~2.5 | 3.8.7 |
| Dstore-Perv | 透水区洼蓄(mm) | 5~10 | 3.8.7 |
| %Zero-Imperv | 无洼蓄不透水比例 | 25% | 3.8.7 |
Width这个参数最容易翻车。手册 3.8.4 节给了两种估算方法:一是面积除以漫流长度,漫流长度取子汇水面积质心到出口的距离;二是用面积除以宽度经验值,住宅区取 50~70m,商业区取 80~100m。我一般用第一种,因为第二种在不同城市差异太大,没有普适性。
2.3 地表漫流演算的时间步长设置
手册 3.5 节专门讨论了时间步长问题。SWMM 的地表漫流用非线性水库法求解,时间步长太大会导致数值震荡,太小则计算时间不可接受。
[OPTIONS]段中与水文计算相关的步长参数:
[OPTIONS] FLOW_UNITS CMS INFILTRATION HORTON FLOW_ROUTING KINWAVE WET_STEP 00:05:00 DRY_STEP 01:00:00 ROUTING_STEP 00:00:30WET_STEP是降雨期间的计算步长,默认 5 分钟。手册建议不超过子汇水面积汇流时间的 1/5。对于汇流时间 15 分钟的小区,WET_STEP应设为 3 分钟以内。DRY_STEP是无雨期的步长,可以放大到 1 小时,因为此时只有地下水或旱流在变化。ROUTING_STEP是水力演算步长,通常取 30 秒,与水文步长解耦。
这里有个容易忽略的点:WET_STEP和ROUTING_STEP不需要相等,但ROUTING_STEP必须小于等于WET_STEP。如果ROUTING_STEP大于WET_STEP,SWMM 会报错终止。我见过有人把ROUTING_STEP设成 5 分钟来加速计算,结果连续模拟直接崩掉。
3. 下渗与地下水:参数物理含义与取值边界
3.1 四种下渗方法的选型逻辑
手册第 4 章把下渗模型分成四种:Horton、Horton 修正、Green-Ampt、曲线数法。选哪个不是拍脑袋,取决于你有多少土壤数据。
Horton 方法需要三个参数:最大下渗率、最小下渗率、衰减系数。手册 4.2.4 节给了取值参考——砂土最大下渗率 75~125 mm/hr,黏土 2~5 mm/hr。衰减系数典型值 2~7 hr⁻¹。这个方法对数据要求最低,但物理意义最弱,适合规划阶段。
Green-Ampt 方法需要土壤初始含水量、饱和含水量、湿润锋吸力、饱和导水率。手册 4.4.4 节按土壤质地给了完整参数表。这个方法物理基础最强,但参数获取难度大,适合有实测土壤数据的项目。
曲线数法直接借用 SCS 的 CN 值,手册 4.5.4 节给了不同土地利用和水文土壤组的 CN 值范围。这个方法在国内外海绵城市项目中用得最多,因为 CN 值有现成表格可查。
我一般这样选:方案阶段用 Horton 快速试算,初设阶段如果有土壤勘察报告就换 Green-Ampt,施工图阶段用曲线数法配合实测下渗试验校核。三种方法算出来的径流总量可能差 15%~30%,所以方法选择必须在报告里写清楚。
3.2 Horton 参数的敏感性排序
手册 3.8.8 节和 4.2.4 节都提到了参数敏感性。按对径流总量影响从大到小排序:最小下渗率 > 衰减系数 > 最大下渗率。
最小下渗率决定长历时降雨的稳定下渗量,对年径流总量控制率影响最大。衰减系数决定下渗率从最大值衰减到最小值的速度,对短历时暴雨的产流过程影响大。最大下渗率只影响降雨初期的下渗量,对总量影响最小。
这意味着如果只有一次校准机会,优先调最小下渗率。我一般先用手册推荐值跑一遍,然后拿实测流量过程线对比,如果峰值偏高就调大衰减系数,如果总量偏大就调大最小下渗率。
3.3 地下水模块的适用条件
手册第 5 章讲地下水,但要注意:SWMM 的地下水模块是简化模型,只适用于浅层潜水与地表水交换的模拟。5.1 节明确说,它不适用于承压水、多层含水层或复杂地质构造。
地下水模块的核心是水量平衡方程,手册 5.2 节给出了控制方程组。关键参数包括:土壤孔隙率、田间持水量、凋萎点、饱和导水率、地下水排放系数。5.5 节给了参数估计方法,其中土壤湿度限值可以直接查 5.5.1 节的表格。
我一般只在两种场景下启用地下水模块:一是模拟海绵城市设施(如生物滞留池)的长期入渗和地下水补给;二是模拟河道基流。其他情况,如果项目区地下水位埋深大于 3m,直接忽略地下水模块,用下渗模型代替即可。
4. 融雪与降雨致入渗入流:两个容易被忽略的模块
4.1 融雪模块的启用条件与参数
手册第 6 章讲融雪。对于北方项目,融雪是春季径流的主要来源,不启用这个模块,年径流总量能差 20% 以上。
融雪模块需要额外输入:气温、风速、露点温度、太阳辐射。手册 6.2.2 节列出了气象输入要求。核心参数包括:融化系数、积雪热容量、雪密度、初始雪深。6.7 节给了参数估计方法。
启用融雪模块需要在[OPTIONS]段设置TEMPERATURE相关参数,并在[SNOWPACKS]段定义积雪参数:
[SNOWPACKS] ;;Name Surface Parameters ;;------- -------- ---------- SP1 PLOWABLE 0.10 0.50 0.60 0.0 0.0 0.0这行参数依次是:融化系数、最小融化系数、雪密度、初始雪深、自由水持水能力、积雪面积亏损比。具体含义在手册 6.3.2 节有详细说明。我一般用默认值跑第一遍,然后根据实测融雪径流过程线调融化系数。
4.2 降雨致入渗入流的识别与建模
手册第 7 章讲降雨致入渗入流(RDII),这是管网模型中绕不开的问题。7.1 节说,RDII 是降雨通过土壤入渗进入管道或通过检查井进入管道的流量,在老旧城区管网中占比可达 30%~50%。
RDII 建模用 RTK 方法,需要三个参数:R(降雨入渗比例)、T(时间常数)、K(衰减系数)。手册 7.x 节给了参数估计方法。我一般用监测数据反推——选三场典型降雨,用实测流量减去旱流和直接径流,剩下的就是 RDII,然后拟合 RTK 参数。
这个模块的坑在于:RDII 参数没有普适值,必须用本地监测数据校准。我见过有人直接套用手册默认值,结果雨季流量模拟偏大 3 倍。
5. 避坑与排查:五个让模型跑不起来的典型问题
5.1 现象:连续模拟中途报错“ERROR 141: Node X has invalid inflow”
原因:[INFLOWS]段中引用的时间序列名称在[TIMESERIES]段中不存在,或者时间序列的时间范围没有覆盖模拟时段。
解决:检查[TIMESERIES]段中每个序列的起止时间,确保覆盖[OPTIONS]中START_DATE和END_DATE定义的完整模拟期。如果时间序列只有一场降雨,连续模拟会报错。我一般会在时间序列末尾补一行零值,把时间范围撑到模拟结束。
5.2 现象:径流系数大于 1.0
原因:子汇水面积的Area和Width参数不匹配,导致坡面汇流时间计算错误,或者N-Imperv取值过小。
解决:检查Width是否大于Area除以 10。如果Width过大,坡面汇流时间趋近于零,所有降雨都变成径流。手册 3.8.4 节建议Width取面积除以漫流长度,漫流长度一般 30~100m。另外检查N-Imperv是否小于 0.010,手册推荐值 0.011~0.015。
5.3 现象:下渗量始终为零
原因:[OPTIONS]段中INFILTRATION设置为HORTON,但子汇水面积的N-Perv或Dstore-Perv设置为零,导致透水区被当作不透水区处理。
解决:检查每个子汇水面积的N-Perv是否大于 0.10,Dstore-Perv是否大于 0。手册 3.8.6 节和 3.8.7 节给了推荐范围。如果确实有不透水区域,应该通过%Imperv参数控制,而不是把透水区参数设为零。
5.4 现象:地下水模块输出流量为负值
原因:地下水排放系数或土壤湿度限值设置不合理,导致水量平衡方程求解出负流量。
解决:检查[AQUIFERS]段中BOTTOM_ELEV是否低于[NODES]中对应节点的INVERT_ELEV。如果含水层底板高于节点底高程,地下水会倒灌。另外检查UPPER_EVAP和LOWER_EVAP是否大于潜在蒸发量,手册 5.5.3 节建议不超过蒸发皿实测值的 1.2 倍。
5.5 现象:融雪模块不产生融雪径流
原因:气温数据单位设置错误,或者融化系数过小。
解决:检查[TEMPERATURE]段中ADC参数(气温数据单位),ADC为TIMESERIES时气温单位是摄氏度,为FILE时取决于文件格式。手册 6.2.2 节有详细说明。另外检查[SNOWPACKS]中融化系数是否小于 0.05,手册推荐值 0.10~0.50。
6. 用数字示例反推参数:一个可复现的校核流程
手册第 3 章到第 6 章每章末尾都有一个数字示例,这是整本手册最值钱的部分。很多人翻手册只看公式和参数表,跳过数字示例,等于把作者精心设计的校核路径扔了。
我一般这样用数字示例:先按手册给的参数建一个最小模型,跑一遍,把输出结果和手册中的示例结果对比。如果对不上,说明参数理解有偏差,回头查对应章节的公式推导。这个流程走一遍,比读十遍参数表都管用。
以第 3 章数字示例为例,手册给了一个 1 公顷的子汇水面积,不透水率 40%,坡度 1%,宽度 50m,用 Horton 下渗。示例中给出了降雨过程线和对应的径流过程线。我按这些参数在 SWMM 中建了一个单子汇水面积模型:
[SUBCATCHMENTS] ;;Name RainGage Outlet Area %Imperv Width Slope ;;------- --------- ------- ------ -------- ------ ----- S1 RG1 J1 1.0 40 50 1.0 [SUBAREAS] ;;Subcatchment N-Imperv N-Perv S-Imperv S-Perv %Zero RouteTo ;;-------------- --------- ------- --------- ------- ------ ------- S1 0.012 0.25 2.0 5.0 25 OUTLET跑完之后对比手册示例的径流总量,如果偏差超过 5%,检查WET_STEP是否与手册一致(手册示例用的是 1 分钟),以及ROUTING_STEP是否足够小。我一般把ROUTING_STEP设为WET_STEP的 1/10,确保数值精度。
这个校核流程走通之后,再把手册第 4 章的下渗示例、第 5 章的地下水示例、第 6 章的融雪示例依次跑一遍。四个示例跑完,SWMM 水文模块的参数体系基本就通了。从那以后我每次建新模型,都强制先用数字示例校核一遍参数设置,确认无误再导入实际数据。这个习惯帮我省掉了至少三次返工。希望帮到你。
本文还有配套的精品资源,点击获取