简介:《SWMM用户参考手册——水文学》面向城市雨水管理、环境工程与城市规划领域的学习者和从业者,聚焦暴雨管理模型SWMMH的水文模拟基础,可帮助读者理解降水—径流、污染物负荷与管渠演算等核心概念,并用于单一事件或长期连续模拟的入门与查阅。资源为1个PDF文件,压缩包约2.93MB,内容为经同济大学李树平翻译的SWMMH参考手册第I卷,围绕水文模型展开,含概览、气象学、对象模型与过程模型等章节,便于系统梳理模型结构、术语和计算思路。已有301人学习或下载,适合课程学习、科研建模前期准备及工程方案中的模型校核参考。手册同时保留译者与原著声明,提醒读者注意实验性软件的使用边界与结果适用性,对需要深入掌握SWMM水文模块的读者具有较高的资料价值。
1. 从一份参考手册到能跑通的模型:第 I 卷水文学到底解决什么
某开发者接手一个城市内涝评估项目,模型跑出来的洪峰比实测小了三成,积水点位置也对不上。界面上的参数一个个都能改,但改哪个、改多少、为什么,没人说得清。翻遍网上教程,大多在讲怎么点菜单,真到了「这个曼宁 n 该填多少」「洼地蓄水 2 mm 和 5 mm 差在哪」的时候,还是得回到方程和参数定义上。SWMM 用户参考手册第 I 卷水文学,就是干这个的:它不教操作,而是把城市降雨-径流模拟里从降水、地表径流、下渗到地下水、融雪的每个方程、每个参数、每个敏感性结论摊开写。适合正在用 SWMM 做雨水管网、海绵城市、内涝风险评估、调参调到怀疑人生的从业者,也适合刚接手模型、想搞清楚每个输入框背后是什么的新手。这一卷是水文学分册,水力卷和水质卷另算,先把手里的水文过程吃透,后面才谈得上调得动。
2. 对象模型与过程模型:把 SWMMH 的计算骨架立起来
2.1 对象模型:几类对象把城市雨水系统拆开
SWMMH 把一整片城市雨水系统拆成可计算的对象,对象之间靠「连接」关系传递水量。理解对象模型,比记住界面按钮重要得多。手册第 1 章给的对象模型大致分这几类:
| 对象 | 作用 | 关键属性 |
|---|---|---|
| 子汇水面积 | 接受降水、产生径流和污染物负荷 | 面积、不渗透比例、宽度、坡度、洼地蓄水、下渗参数 |
| 节点 | 管渠连接点、排放口、蓄水设施、分流节点 | 内底高程、最大深度、初始水深 |
| 管渠 | 管道、渠道 | 长度、断面、粗糙系数、进出口偏移 |
| 水泵 | 提升水量 | 水泵曲线 |
| 调节器 | 堰、孔口等 | 几何尺寸、控制规则 |
| 雨量计 | 提供降水时间序列 | 时间序列、数据格式 |
| 含水层 | 地下水 | 土壤参数、地下水排放参数 |
| 雪堆 | 融雪 | 积雪参数、热交换参数 |
这些对象不是孤立的。子汇水面积必须挂一个雨量计、必须有一个排放口(节点或另一个子汇水面积);管渠必须连接两个节点;排放口必须是末端节点。手册反复强调,对象之间的拓扑关系决定了水量能不能算通,这也是为什么很多模型跑不通,问题不在参数,而在对象没连上。
我一般会先把管网拓扑画在一张纸上,再在 SWMM 里搭对象。顺序是:雨量计 → 子汇水面积 → 节点 → 管渠 → 排放口 → 蓄水/调节设施。每加一类对象就检查一次连接,比全部搭完再查错要省事得多。节点分四类:普通节点、排放口、蓄水节点、分流节点,不同类型的节点在演算里的边界条件不一样,搭错了要么水量丢,要么计算发散。
2.2 过程模型:七个过程串起降雨到排放
对象模型是「骨架」,过程模型是「血液」。手册把水文过程拆成七块:
- 降水:把雨量计的时间序列分配到子汇水面积上,考虑时间变化和空间变化。
- 地表径流:子汇水面积上的非线性水库,降水扣掉下渗、洼地蓄水和蒸发后,剩下的变成地表漫流。
- 下渗:降水进入土壤的过程,四种方法可选。
- 地下水:下渗进入含水层后的两区(上层/下层)水量平衡,包括蒸发蒸腾、穿透、深度穿透和地下水排放。
- 融雪:积雪的积累、融化、热交换和面积亏损。
- 降雨致入渗入流:降水直接进入管网的入流过程。
- 水力演算:把子汇水面积产生的径流通过管渠、水泵、调节器输送到排放口。
这七块在模拟时段内按时间步长推进,每一块都有自己的状态变量。地表径流的核心状态是子汇水面积上的水深;下渗的核心状态是下渗能力和土壤含水量;地下水的核心状态是上下层土壤湿度;融雪的核心状态是积雪深度和雪盖面积。手册第 1.4 节给了一个模拟过程的概览,说白了就是每个时间步里,先算降水,再算下渗,再算地表径流,再算地下水,最后把水量送进管网演算。顺序不能乱,因为后一个过程的输入依赖前一个过程的输出。
这里有个容易被忽略的点:过程之间的耦合是双向的。地下水的水位会影响下渗的驱动力,下渗量又反过来补给地下水;融雪融出来的水会进入地表径流,地表径流的热量又会反馈给积雪。手册在每一章都标了哪些过程之间有耦合、耦合关系在哪个方程里体现,调参时顺着这些耦合关系查,比盲试快得多。
2.3 气象输入:降雨、温度、蒸发、风速的数据源与时间序列
第 2 章讲气象学,是整卷书里最容易被跳过、但最容易翻车的一章。降水数据有三种来源:用户自己提供的时间序列、来自公共机构的数据、降雨接口文件。手册里对这三类数据源的格式、时间间隔、单位都有明确要求。
降水的表示方式有三种:强度(mm/h)、体积(mm)、累积体积(mm)。单一事件模拟用短历时高强度数据,连续模拟用长历时记录。时间变化可以用时间序列直接给,也可以用「模式」——把一场雨按年内月份或日内小时分配。空间变化靠多个雨量计,按泰森多边形或距离权重分配到不同子汇水面积。
温度数据主要用于融雪和蒸发计算。连续温度记录可以是逐日最高/最低,也可以是逐小时。蒸发数据的手册里给了几种估算方法,常见的是蒸发皿换算、Hargreaves 公式、Penman-Monteith 公式。风速数据用于融雪的热交换计算,没有风速时手册也给了默认处理方式。
我一般会先确认雨量计的时间间隔和模拟时间步长是否匹配。如果雨量计是逐小时记录,模拟时间步长却设成 1 分钟,中间就需要插值,插值方式选错会让洪峰提前或滞后。手册里对这一点有提醒,但很多人不看。
提示:气象输入的单位在 SWMM 里跟项目单位制绑定,美制和 SI 制切换时,降水量、温度、风速的单位会一起变,导入外部数据前先确认单位制。
2.4 模拟过程概览:时间步长怎么定
手册第 1.4 节给了模拟过程的概览,核心是时间步长的选择。地表径流的时间步长跟子汇水面积的地表漫流路径长度和坡度有关:路径短、坡度陡,水流响应快,步长要小;路径长、坡度缓,步长可以大一些。手册建议的起步值是 1~5 分钟,具体要看子汇水面积的离散化程度。
下渗的时间步长通常比地表径流小,因为下渗能力的衰减在降雨初期变化很快。地下水的时间步长可以放大到小时级,因为土壤湿度的变化慢。水力演算的时间步长受管渠长度和波速约束,手册第 II 卷(水力卷)有详细推导,第 I 卷只提了一句「演算步长要满足稳定性条件」。
这里有个关键经验:很多人把全局时间步长设成一个值,结果地表径流算得还行,下渗算得发散。正确做法是分层设步长——气象输入按原始间隔,地表径流 1~5 分钟,下渗更小,地下水和融雪可以放大。手册里没有给一个万能数字,而是给了判断依据,这比抄一个数字有用。步长定完之后,还要回来看模拟结果的时间分辨率,输出步长太粗会把洪峰抹平,太细又会让结果文件大得没法处理。
3. 地表径流:子汇水面积划分与参数估计的落地
3.1 控制方程组:非线性水库模型与曼宁公式
子汇水面积的地表径流用非线性水库模型描述。手册第 3.2 节给的连续方程是:
dV/dt = A × i_e − Q
其中 V 是子汇水面积上的蓄水体积,A 是面积,i_e 是净雨强(降水减去下渗、蒸发等损失),Q 是出流流量。
蓄水体积和深度的关系是 V = A × d,d 是地表平均水深。出流用曼宁公式:
Q = W × (1.49/n) × (d − d_p)^(5/3) × S^(1/2) (美制单位)
或
Q = W × (1/n) × (d − d_p)^(5/3) × S^(1/2) (SI 单位)
其中 W 是子汇水面积宽度,n 是曼宁粗糙系数,d_p 是洼地蓄水深度,S 是坡度。当 d ≤ d_p 时,Q = 0,也就是降水先填洼地,填满之后才产生径流。
这个方程组看起来简单,但它把子汇水面积的五个关键参数绑在一起:面积、宽度、坡度、曼宁 n、洼地蓄水。任何一个填错,出流过程线都会变形。手册第 3.4 节给了计算方法,实际是把连续方程离散成差分格式,在每个时间步里用迭代或解析解求 d 和 Q。离散格式的稳定性跟时间步长、宽度、坡度都有关系,步长太大时,非线性水库会振荡,表现出来就是流量过程线出现不该有的锯齿。
我一般会先用手册第 3.9 节的数值示例核对一遍:示例给定了面积、宽度、坡度、n、洼地蓄水,算出一条出流过程线。把自己的参数填进去,看算出来的峰和过程线形状能不能对上,对不上说明参数理解有偏差。这个核对步骤比直接上真实项目省时间,因为示例的边界条件是干净的。
3.2 子汇水面积划分与离散化步骤
子汇水面积怎么划,手册第 3.3 节和第 3.7 节讲得很细。划分数量的原则是:每个子汇水面积的地表特征要相对均匀,坡度、不渗透比例、地表覆盖不能差太多。划分太粗,参数平均掉真实差异;划分太细,计算量上去,参数反而估不准。
我一般的划分步骤是:
- 先按管网节点和排放口把研究区切成大块,每个大块对应一个排放口或主要节点。
- 再按土地利用和地面坡度把大块切成子汇水面积,同一块里不渗透比例差异不超过 10%~15%。
- 检查每个子汇水面积是否有独立的雨量计输入,没有的话按距离或泰森多边形分配。
- 给每个子汇水面积指定宽度,宽度等于面积除以平均地表漫流路径长度。
- 检查子汇水面积的排放口是否连到了正确的节点,别把水排到隔壁流域。
手册第 3.7 节还提到子汇水面积离散化:当一个子汇水面积内部不渗透区域和渗透区域交错分布时,可以把它拆成不渗透部分和渗透部分两个子面积,分别算径流再合并。这样比用一个平均不渗透比例更接近实际,但参数翻倍,工作量也翻倍。离散化到什么程度要看项目精度要求,内涝风险评估可以粗一点,管网改造设计要细一点。
3.3 参数估计:宽度、坡度、曼宁 n、洼地蓄水
手册第 3.8 节是整章最实用的部分,逐个参数给了估计方法和典型取值范围。
| 参数 | 物理含义 | 估计方法 | 典型范围 |
|---|---|---|---|
| 子汇水面积宽度 | 面积除以平均地表漫流路径长度 | 地图量测或经验公式 | 30~150 m |
| 坡度 | 地表平均坡度 | DEM 提取或现场量测 | 0.1%~5% |
| 曼宁 n | 地表粗糙系数 | 查表 | 铺砌 0.011~0.013,草地 0.15~0.24,林地 0.24~0.41 |
| 洼地蓄水 | 填洼损失 | 查表或实测 | 不渗透 1.5~2.5 mm,渗透 5~7.5 mm |
| 不渗透比例 | 不透水面占比 | 遥感或土地利用图 | 按实际 |
宽度是最容易被忽视的参数。很多人直接用面积开方,这是错的。手册明确说宽度等于面积除以平均漫流路径长度,路径长度要从地形图上量,或者用经验关系估。宽度估小了,出流过程线会变得尖瘦;估大了,过程线会变得矮胖。
曼宁 n 的取值手册给了分类型表格,注意草地和林地的 n 值比很多人想象的大,0.15~0.41 这个范围意味着地表漫流速度很慢,洪峰来得晚。如果模型算出来的洪峰比实测早,先查 n 是不是取小了。
洼地蓄水是另一个容易翻车的参数。手册给的不渗透面 1.5~2.5 mm、渗透面 5~7.5 mm 是经验值,实际项目里硬化路面的洼地蓄水可能更小,绿化带可能更大。这个参数直接影响初损,填大了,小雨全被吃掉,模型不出流;填小了,小雨也产流,洪峰偏大。
子汇水面积在输入文件里的写法大致如下:
[SUBCATCHMENTS] ;;Name RainGage Outlet Area(ha) %Imperv Width(m) %Slope S1 RG1 J1 4.2 65 85 1.2 S2 RG1 J2 3.8 40 70 0.8这几列分别对应子汇水面积名称、挂接的雨量计、排放口节点、面积、不渗透比例、宽度和坡度。宽度的单位是米,坡度的单位是百分比,填的时候别把小数点和百分号搞混。手册第 3.8.8 节还给了参数敏感性排序,宽度和洼地蓄水的敏感性通常排在前两位,调参时优先动这两个。
3.4 近似其他径流方法:径流系数、SCS 曲线数、单位流量过程线
手册第 3.10 节讲了三种近似方法,用于没有详细地表参数、或者只需要估算总量的场景。
径流系数方法最简单:径流量等于降水量乘以径流系数。手册给了不同土地利用的径流系数参考值。这个方法不考虑时间过程,只能算总量,适合规划阶段的粗估。
SCS 曲线数方法用曲线数 CN 把降水转成径流,公式是 Q = (P − 0.2S)^2 / (P + 0.8S),其中 S = (25400/CN) − 254(mm)。CN 值按土壤类型和土地利用查表。这个方法能反映土壤蓄水能力,但仍然是事件尺度,不适合连续模拟。
单位流量过程线方法把有效降雨通过一个单位线卷积成流量过程线。手册给了单位线的构造方法,适合有实测流量过程线、需要反推净雨的场合。
这三种方法在 SWMM 里怎么用?手册说可以用外部生成的径流数据直接作为子汇水面积的入流,绕过地表径流计算。具体做法是在子汇水面积上关掉径流计算,用时间序列给入流。这对已经有成熟径流成果、只想用 SWMM 算管网水力的项目很实用。但要注意,外部入流的时间间隔要和模拟步长匹配,否则插值会引入额外误差。
4. 下渗四种方法:Horton、修正 Horton、Green-Ampt、曲线数怎么选
4.1 Horton 与修正 Horton:指数衰减与参数
Horton 方法的核心是下渗能力随时间指数衰减:
f(t) = f∞ + (f0 − f∞) × e^(−k×t)
f0 是初始下渗率,f∞ 是稳定下渗率,k 是衰减常数。手册第 4.2 节给了方程、下渗能力的恢复和计算方法。
下渗能力不是一直衰减的。降雨停了之后,土壤会恢复下渗能力,手册给了恢复公式,按干旱时间长短把下渗能力往 f0 方向拉。这个恢复过程在连续模拟里很关键,如果忽略,第二场雨的下渗会算小,径流会算大。
修正 Horton 方法(第 4.3 节)在 Horton 基础上改了下渗能力和降雨强度的关系。标准 Horton 方法假设下渗能力只跟时间有关,实际上下渗还受降雨强度限制——雨下得小,实际下渗率不可能超过雨强。修正方法把这一层考虑进去,更适合长历时、变强度的降雨。
Horton 方法的参数估计(第 4.2.4 节)主要靠土壤类型查表。砂土 f0 大、f∞ 也大,黏土 f0 小、f∞ 小。k 值跟土壤结构和初始含水量有关,手册给了范围。我一般会先按土壤类型取中值,再用实测径流过程线反推,反推时固定 f∞ 调 f0 和 k,比三个参数一起调更稳。
4.2 Green-Ampt:土壤物理参数怎么估
Green-Ampt 方法基于土壤物理,方程是:
f = K × (1 + (ψ × Δθ) / F)
K 是饱和导水率,ψ 是湿润锋处的土壤吸力,Δθ 是湿润锋两侧的含水量差,F 是累积下渗量。手册第 4.4 节给了控制方程、下渗能力恢复和计算方法。
这个方法的优点是参数有物理意义,K、ψ、Δθ 都能从土壤质地查表或实测。缺点是参数多,而且对初始含水量敏感。手册第 4.4.4 节给了参数估计方法,按土壤质地分类给 K 和 ψ 的范围。
我一般会在有土壤实测数据时用 Green-Ampt,没有实测数据时用 Horton,因为 Horton 的参数少、查表方便。Green-Ampt 的另一个坑是 F 在降雨初期接近 0,方程会算出很大的 f,实际下渗率受雨强限制,所以程序里要加一个「实际下渗率不超过雨强」的截断。手册里提了这个截断,但代码实现时容易漏。
4.3 曲线数法:蓄水能力与恢复
曲线数方法(第 4.5 节)用 CN 值描述土壤-覆盖复合体的蓄水能力。控制方程跟第 3.10.2 节的 SCS 方法一样,但这里是作为下渗方法用在子汇水面积上。
曲线数法的关键是蓄水能力的恢复。手册第 4.5.2 节说,降雨间歇期蓄水能力按一定规律恢复,恢复程度跟干旱时间和潜在蒸发有关。这个恢复过程如果设错,连续模拟的多年水量平衡会对不上。
CN 值的取值范围是 30~100,CN 越大,径流越大。手册给了不同土壤水文分组和土地利用的 CN 表。城市区域的不渗透面 CN 接近 98~100,几乎不蓄水。曲线数法的优点是参数少、查表方便,缺点是把下渗过程简化成事件尺度,连续模拟时恢复过程不好控制。
4.4 方法选型与参数对照
四种方法怎么选,手册没有给一个统一答案,但可以从这几个维度判断:
| 方法 | 参数数量 | 物理基础 | 适用场景 | 数据要求 |
|---|---|---|---|---|
| Horton | 3~4 | 经验 | 单一事件、参数缺乏 | 土壤类型查表 |
| 修正 Horton | 4~5 | 半经验 | 长历时变强度降雨 | 土壤类型 + 降雨过程 |
| Green-Ampt | 4~5 | 物理 | 有土壤实测数据 | 饱和导水率、吸力、含水量 |
| 曲线数 | 1~2 | 经验 | 流域尺度、规划阶段 | CN 查表 |
我的经验是:城市内涝评估用 Horton 或修正 Horton 居多,因为城市下垫面复杂、土壤资料少;有详细土壤勘察数据的项目用 Green-Ampt;大流域规划用曲线数。同一个项目里不同子汇水面积可以用不同方法,手册允许这么做,但要在报告里说明理由。
选型时还有一个容易忽略的约束:下渗方法的恢复机制必须和模拟类型匹配。单一事件模拟不需要恢复,连续模拟必须打开恢复。如果连续模拟用了不支持恢复的方法,或者恢复参数设成 0,模拟后期的下渗量会系统性偏小,径流量系统性偏大,这种误差不会在单场暴雨里暴露,但会在年水量平衡里累积。
5. 避坑与排查:水文参数里最容易翻车的五处
5.1 参数类踩坑:宽度、曼宁 n、下渗恢复
现象一:模型出流过程线比实测尖瘦,洪峰偏高、峰现时间提前。原因:子汇水面积宽度按面积开方取了,实际宽度应该等于面积除以平均漫流路径长度。城市子汇水面积的漫流路径往往比面积开方大,宽度被高估,水流响应变快。 解决:从地形图或 DEM 量平均漫流路径长度,宽度 = 面积 / 路径长度。没有地形数据时,用街区尺度估路径长度,别用开方。
现象二:地表径流算出来偏快,洪峰提前。原因:把地表曼宁 n 和管道曼宁 n 搞混。管道混凝土 n 是 0.013 左右,地表草地的 n 是 0.15~0.24,差了十几倍。手册第 3.8.6 节的地表 n 表和第 II 卷的管道 n 表是两套参数。 解决:地表用第 3.8.6 节的表,管道用第 II 卷的表,两套参数分开管,别在界面里复制粘贴串了。
现象三:连续模拟第二年、第三年的径流量明显偏大。原因:下渗能力在干旱期没有恢复,或者恢复参数设成了 0,土壤一直保持在降雨末期的低下渗状态。 解决:检查 Horton 的恢复系数、Green-Ampt 的恢复选项、曲线数的蓄水能力恢复。连续模拟一定要打开恢复,并按手册给的干旱时间参数设。恢复参数跟潜在蒸发有关,蒸发数据缺失时恢复会偏慢,这一点在连续模拟里要单独校核。
5.2 时间与单位类踩坑:步长、单位制
现象四:地表径流结果还行,下渗算出来发散或明显失真。原因:全局时间步长按地表径流的需求设成 5 分钟,下渗在降雨初期变化快,5 分钟步长跟不上。手册第 3.5 节和第 4 章的计算方法都提到,下渗的时间步长要比地表径流小。 解决:分层设步长,下渗步长设成 1 分钟或更小,地表径流 1~5 分钟,地下水和融雪可以放大到小时级。设完步长后看下渗过程线在降雨初期有没有台阶状跳变,有的话继续减小步长。
现象五:降水量导入后大了 25.4 倍或小了 25.4 倍,或者温度变成了华氏度。原因:外部数据是英制,SWMM 项目是 SI 制,导入时没换算。手册第 2 章的单位表列了降水、温度、风速在不同单位制下的单位。 解决:导入前先看手册第 2 章的单位表,确认降水、温度、风速的单位,必要时在 Excel 里先换算再导入。换算完抽样核对几个时间点的累积降水量,跟原始数据对得上再往下走。
这五条踩坑记录里,前三条是参数理解问题,后两条是配置问题。参数问题靠手册第 3、4 章的参数估计小节解决,配置问题靠第 2 章和模拟过程概览解决。排查时先区分是「算得不对」还是「输入错了」,前者查参数,后者查数据和步长,别一上来就调参数,很多问题其实出在输入。
6. 从数值示例反推参数:延续手册的校验思路
6.1 三个
本文还有配套的精品资源,点击获取