# 雨落下来以后去了哪里？

给一场雨记账：截留、土壤储水、蒸发与径流。

专题：降雨到洪水。教学合成算例，待独立专业审稿。

## 先问水量，再问洪峰

一场雨落下，不会立刻全部变成河里的洪水。一部分暂存在树冠，一部分进入土壤，一部分回到空气，剩下的才可能形成径流。先把这些去向算清楚，我们才有资格继续问，洪峰会在什么时候到达。

以单位面积上的等效水深记账。教学事件包含一次降雨及紧随其后的土壤蒸发阶段；不描述小时过程、地下水或汇流。初始冠层为空，土壤容量100mm。

## 树冠先留下两毫米

把树冠画成一个很浅的托盘。雨量很小时，托盘可以把它全部留下。雨量超过托盘容量，多出来的水才到达地面。这里留下的水是事件结束时的储水，不能同时又算成已经蒸发的水。

冠层截留储量C=min(P,2)，穿透雨N=P−C。C表示期末储量增量，不包括冠层排水和蒸发。真实冠层会在降雨中同时发生截留、排水和蒸发，此处顺序化用于入门。

## 土壤还有多少空位

同样一桶水，倒进空杯和满杯，溢出的量会不同。土壤也有先前留下的含水状态。我们让穿透雨先填补土壤空位，装不下的部分才溢出。调节初始含水量，就能看见过去怎样影响现在。

可用空位D=100−W0，入土量F=min(N,D)，径流R=N−F；降雨后土壤水W*=W0+F。这里入土量只受容量限制，不含入渗率限制；后续E08、E09讨论这一缺失。

## 蒸发不是凭空扣一个数

降雨阶段结束后，我们再施加三毫米的潜在蒸发需求。如果土壤没有足够的水，就不能硬扣三毫米。图中同时保留期初和期末状态，因为水量平衡里的储量变化，可能是正数，也可能是负数。

实际土壤蒸发E=min(3,W*)，期末W1=W*−E，ΔW=W1−W0。潜在需求是本教学事件累计3mm，并非3mm/h。蒸发可能消耗期初水，所以无雨时ΔW可以为负。

## 把每一份水放回账本

现在把冠层储水、蒸发、土壤储量变化和径流相加，应该正好等于降雨。若出现差额，先检查是否重复计算了某条通道。入渗是水进入土壤的过程，土壤储量是状态，两者不能当作平行去向重复相加。

默认P=50、W0=60：C=2，F=40，R=8，E=3，W1=97，ΔW=37mm。2+3+37+8=50。1mm覆盖1km²为1000m³。账本残差按P−C−E−ΔW−R计算。

## 水量正确，还不等于洪峰正确

这个账本回答一场雨产生多少水，却没有回答水要走多久。两个流域可以产生相同径流总量，却形成完全不同的洪峰。接下来，我们先补上产流机理，再把时间和传播加回来。

适合检查事件水量与状态更新；不能用于洪峰预报。真实应用需要时段降雨、蒸散、土壤资料和流量验证，并区分流域内部交换与外边界通量。模型简化不代表这些过程在现实中不存在。

## 练习与解释

1. 默认算例径流深是多少？

答案：8mm。土壤仅剩40mm容量，48mm穿透雨中8mm溢出。

2. 入渗量和土壤储量变化能否同时作为独立损失相加？

答案：不能，会重复记账。入渗先进入土壤，随后蒸发会改变期末储量。

3. 无雨时土壤储量变化可以为负吗？

答案：可以，蒸发消耗期初水。储量变化不是只能为正的损失量。

## 算例与依据

下载页面上的完整Python算例包，解压后运行 reproduce.py，无需第三方库。模型源为 rainfall_models.py，输出 reference.csv。

[参考资料](https://www.hec.usace.army.mil/confluence/hmsdocs/hmstrm/canopy-surface-infiltration-and-runoff-volume/infiltration/soil-moisture-accounting-loss-model)，查阅日期2026-09-15。公式、参数和实现简化见正文；来源用于机理核对，不代表本算例经过来源机构认可。
